安装GIT
需要先安装gcc-c++ (sudo yum install gcc-c++)
sudo yum install gettext-devel expat-devel cpio perl openssl-devel zlib-devel wget https://www.kernel.org/pub/software/scm/git/git-1.9.0.tar.gz tar -zxvf git-1.9.0.tar.gz cd git-1.9.0 ./configure sudo make sudo make install git -versionInstall memcached
sudo yum install libevent-devel
wget http://www.memcached.org/files/memcached-1.4.17.tar.gz tar -zxvf memcached-1.4.17.tar.gz ./configure -prefix=/opt/memcache sudo make sudo make install sudo cp scripts/memcached.sysv /etc/rc.d/init.d/memcached sudo vim /etc/rc.d/init.d/memcached Two places need change: ==1====== PORT=11211 USER=memcached MAXCONN=1024 CACHESIZE=64 OPTIONS=””==2======
start () { echo -n $”Starting $prog: ” # insure that /var/run/memcached has proper permissions chown $USER /opt/memcache/bin/memcached daemon /opt/memcache/bin/memcached -d -p $PORT -u $USER -m $CACHESIZE -c $M AXCONN -P /opt/memcache/bin/memcached/memcached.pid $OPTIONSAdd user memcached before starting memcached service:
sudo /usr/sbin/groupadd memcached sudo /usr/sbin/useradd -g memcached memcached sudo passwd memcached安装PHP5.5
yum -y install bzip2 bzip2-devel curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype-devel libmcrypt libmcrypt-devel libxml2-devel
(mysql是编译安装的)
./configure -prefix=/opt/php -with-apxs2=/opt/apache2/bin/apxs -with-libxml-dir=/usr/lib64 -with-mysql=/opt/mysql -with-mysqli=/opt/mysql/bin/mysql_config -with-gd -enable-gd-native-ttf -with-zlib -with-mcrypt -with-pdo-mysql=/opt/mysql -enable-shmop -enable-soap -enable-sockets -enable-wddx -enable-zip -with-xmlrpc -enable-fpm -enable-mbstring -with-zlib-dir -with-bz2 -with-curl -enable-exif -enable-ftp -with-jpeg-dir=/usr/lib64 -with-png-dir=/usr/lib64 -with-freetype-dir=/usr/lib64or
(mysql是通过官方提供的rpm 安装的情况, 注意安装的rpm除了server外, client, share, devel都要装, 最后一个 -with-mysql –with-libdir=/usr/lib64 费了我好久才试成功) ./configure -prefix=/opt/php -with-apxs2=/usr/sbin/apxs -with-libxml-dir=/usr/lib64 -with-pdo-mysql=/usr/bin/mysql -with-mysqli=/usr/bin/mysql_config -with-mysql –with-libdir=/usr/lib64 -with-gd -enable-gd-native-ttf -with-zlib -with-mcrypt -enable-shmop -enable-soap -enable-sockets -enable-wddx -enable-zip -with-xmlrpc -enable-fpm -enable-mbstring -with-zlib-dir -with-bz2 -with-curl -enable-exif -enable-ftp -with-jpeg-dir=/usr/lib64 -with-png-dir=/usr/lib64 -with-freetype-dir=/usr/lib64如果使用centos5.8 自带的apache2.2, 找不到apxs的, 可以安装 yum install httpd-devel
sudo make
sudo make install看以下输出, libphp5.so已经被添加到httpd 的modules目录, 另外已经更新了httpd.conf
#################### Installing PHP SAPI module: apache2handler /usr/lib64/httpd/build/instdso.sh SH_LIBTOOL=’/usr/lib64/apr-1/build/libtool’ libphp5.la /usr/lib64/httpd/modules /usr/lib64/apr-1/build/libtool –mode=install cp libphp5.la /usr/lib64/httpd/modules/ cp .libs/libphp5.so /usr/lib64/httpd/modules/libphp5.so cp .libs/libphp5.lai /usr/lib64/httpd/modules/libphp5.la libtool: install: warning: remember to run `libtool –finish /home/milton/backup/php-5.5.13/libs’ chmod 755 /usr/lib64/httpd/modules/libphp5.so [activating module `php5' in /etc/httpd/conf/httpd.conf] ####################在/etc/httpd/conf.d 下添加 php.conf, 写入如下几行:
# # PHP is an HTML-embedded scripting language which attempts to make it # easy for developers to write dynamically generated webpages. # DirectoryIndex index.phpAddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps重启httpd
sudo cp /data/backup/php-5.4.26/php.ini-production /opt/php/etc/php.ini
上面这个不对, 如果不指定路径(-with-config-file-path=/opt/php/etc )的话, 从phpinfo可以看到, 这个路径是指向/opt/php/lib的, 所以得放到/opt/php/lib下去, 否则后面的修改不起作用额外的, sudo vim conf/httpd.conf 做适当修改(已经改在 php.conf里的就不用改了)
1. 添加php支持。
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps2. 添加默认索引页面index.php,再找到“DirectoryIndex”,在index.html后面加上“ index.php”
DirectoryIndex index.html index.php
3. 不显示目录结构,找到“Options Indexes FollowSymLinks”,修改为
Options FollowSymLinks
4. 开启Apache支持伪静态,找到“AllowOverride None”,修改为
AllowOverride All
httpd开启非80端口
因为有selinux的限制, 查看httpd err_log,会出现类似以下的错误
Starting httpd: (13)Permission denied: make_sock: could not bind to address [::]:10080(13)Permission denied: make_sock: could not bind to address 0.0.0.0:10080no listening sockets available, shutting downUnable to open logs
使用以下命令
# 查看当前的端口状态sudo /usr/sbin/semanage port -l # 查看selinux是否启用sudo /usr/sbin/sestatus# 查看selinux状态sudo /usr/sbin/getenforce# 设置selinux状态sudo /usr/sbin/setenforce 0 or 1# 添加端口semanage port -a -t http_port_t -p tcp 10080系统提示 /usr/sbin/semanage: Port tcp/10080 already defined# 查看sudo /usr/sbin/semanage port -l |grep 10080amanda_port_t tcp 10080, 10081, 10082, 10083amanda_port_t udp 10080, 10081# 再换一个semanage port -a -t http_port_t -p tcp 10088
如果没有semanage命令,可以先安装semanage
# yum provides /usr/sbin/semanageor# yum whatprovides /usr/sbin/semanagethen# yum install policycoreutils-python
安装memcached php扩展
sudo yum install gcc44 gcc44-c++ libstdc++44-devel
这几个必须装, 否则 libmemcached 在make的时候会报错 ( error: cinttypes: No such file or directory)先安装 libmemcached (这是一个memcache的客户端类库, 编译pecl memcached的时候要用到)
tar -zxvf libmemcached-1.0.18.tar.gz cd libmemcached-1.0.18 CC=gcc44 CXX=g++44 ./configure // 这里把编译器换成 gcc44 sudo make sudo make installsudo yum install cyrus-sasl-devel
sudo yum install autoconf
这个必须装, 因为phpize 要用到wget http://pecl.php.net/get/memcached-2.1.0.tgz
tar -zxvf memcached-2.1.0.tgz cd memcached-2.1.0 /opt/php/bin/phpize ./configure -enable-memcached -with-php-config=/opt/php/bin/php-config -with-libmemcacheddir=/usr/local/lib 上面的是错的, 妈的试了半天, 参数不对以外, 这个目录也有讲究, 必须包含的文件是: include/libmemcached/memcached.h (注意路径!), 不然会报错: error: Can’t find libmemcached 1.0.x headers 下面的才是对的: ./configure -enable-memcached -with-php-config=/opt/php/bin/php-config -with-libmemcached-dir=/usr/local/然后是make, make install,
完成后打开 /opt/php/lib/php.ini, 找到 ; Directory in which the loadable extensions (modules) reside. ; http://php.net/extension-dir ; extension_dir = “./” 上面这行取消注释, 换成make install结束时提供的路径, 一般是 extension_dir = “/opt/php/lib/php/extensions/no-debug-non-zts-20121212/” 然后在一系列的extension=XXX.dll 后面添加 extension=memcached.so重启httpd后发现memcached没有启用, 查看httpd的error_log, 发现
PHP Warning: PHP Startup: Unable to load dynamic library ‘/opt/php/lib/php/extensions/no-debug-non-zts-20121212/memcached.so’ – /opt/php/lib/php/extensions/no-debug-non-zts-20121212/memcached.so: failed to map segment from shared object: Permission denied in Unknown on line 0 这是因为selinux安全设置引起的错误 关闭selinux ( sudo /usr/sbin/setenforce 0) 后再重启httpd, memcached就可以用了. 解决办法, 参考 http://www.sysarchitects.com/apc_on_rhel5 查看so文件的安全信息: ls -Z /opt/php/lib/php/extensions/no-debug-non-zts-20121212/ -rwxr-xr-x root root user_u:object_r:usr_t memcached.so 重置: sudo /sbin/restorecon /opt/php/lib/php/extensions/no-debug-non-zts-20121212/memcached.so 再次查看 ls -Z /opt/php/lib/php/extensions/no-debug-non-zts-20121212/ -rwxr-xr-x root root system_u:object_r:lib_t memcached.so -rwxr-xr-x root root user_u:object_r:usr_t opcache.a -rwxr-xr-x root root user_u:object_r:usr_t opcache.so 启用selinux sudo /usr/sbin/setenforce 1 再次重启httpd, 就可以用了启用OPcache
因为PHP5.5开始, opcache已经是默认安装的cache模块, 用于取代apc, 只是未启用 需要在php.ini 中添加 zend_extension=/opt/php/lib/php/extensions/no-debug-non-zts-20121212/opcache.so 注意必须用zend_extension 重启httpd时依然会碰到上面的Permission denied in Unknown on line 0问题, 一样的用restorecon处理就好了.