三、安装php
进入安装目录:
cd /opt
下载并解压:
wget http://am1.php.net/get/php-5.4.34.tar.gz/from/this/mirror tar -zxf php-5.4.34.tar.gz
进入目录编译:
cd php-5.4.34 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql --with-mysqli=/usr/bin/mysql_config --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt=/usr/local/mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --with-pear --enable-pdo --with-pdo-mysql --with-gettext --enable-exif --enable-wddx --enable-calendar --enable-ftp --enable-dba --enable-sysvmsg --enable-sysvshm --enable-debug --enable-maintainer-zts --enable-embed --with-pcre-regex --enable-gd-jis-conv --with-fpm-user=www --with-fpm-group=www --enable-sockets
报错:configure: error: mcrypt.h not found. please reinstall libmcrypt.
在http://sourceforge.net/projects/mcrypt/files/下载libmcrypt和mcrypt编译(其中编译mcrypt需要mhash的支持,所以编译完libmcrypt后需要下载mhash,编译完mhash后才编译mcrypt)
wget http://sourceforge.net/projects/mcrypt/files/libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download tar -zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8 ./configure make && make install wget http://sourceforge.net/projects/mhash/files/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz/download tar -zxvf mhash-0.9.9.9.tar.gz cd mhash-0.9.9.9.tar.gz ./configure make && make install wget http://sourceforge.net/projects/mcrypt/files/mcrypt/2.6.8/mcrypt-2.6.8.tar.gz/download tar -zxvf mcrypt-2.6.8.tar.gz cd mcrypt-2.6.8 ./configure make && make install
此时再编译(命令不copy了),报错:mysql_config not found
执行:find / -name mysql_config
发现/opt/mysql-5.5.30/scripts/mysql_config
于是:cp /opt/mysql-5.5.30/scripts/mysql_config /usr/bin/mysql_config
再次编译,通过。
make && make install
由于php5.4已经集成了php-fpm,所以我们不需要再额外下载php-fpm。
直接运行:
/usr/local/php/sbin/php-fpm
报错:error: failed to open configuration file '/usr/local/php/etc/php-fpm.conf': no such file or directory (2)
cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
解决。ps aux | grep php 查看,已经启动。
此时新建一个php文件访问,是不是还不支持?哈[坏笑]。
修改nginx.conf
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param script_filename $document_root$fastcgi_script_name; include fastcgi_params; }
重启nginx,至此,所有完结。
然后是不是又有点淡淡的忧伤?觉得/usr/local/php/sbin/php-fpm太长?习惯了/etc/init.d/php-fpm start?
vim /etc/init.d/php-fpm
#! /bin/sh ### begin init info # provides: php-fpm # required-start: $remote_fs $network # required-stop: $remote_fs $network # default-start: 2 3 4 5 # default-stop: 0 1 6 # short-description: starts php-fpm # description: starts the php fastcgi process manager daemon ### end init info prefix=/usr/local/php exec_prefix=${prefix} php_fpm_bin=${exec_prefix}/sbin/php-fpm php_fpm_conf=${prefix}/etc/php-fpm.conf php_fpm_pid=${prefix}/var/run/php-fpm.pid php_opts=--fpm-config $php_fpm_conf --pid $php_fpm_pid wait_for_pid () { try=0 while test $try -lt 35 ; do case $1 in 'created') if [ -f $2 ] ; then try='' break fi ;; 'removed') if [ ! -f $2 ] ; then try='' break fi ;; esac echo -n . try=`expr $try + 1` sleep 1 done } case $1 in start) echo -n starting php-fpm $php_fpm_bin --daemonize $php_opts if [ $? != 0 ] ; then echo failed exit 1 fi wait_for_pid created $php_fpm_pid if [ -n $try ] ; then echo failed exit 1 else echo done fi ;; stop) echo -n gracefully shutting down php-fpm if [ ! -r $php_fpm_pid ] ; then echo warning, no pid file found - php-fpm is not running ? exit 1 fi kill -quit `cat $php_fpm_pid` wait_for_pid removed $php_fpm_pid if [ -n $try ] ; then echo failed. use force-quit exit 1 else echo done fi ;; force-quit) echo -n terminating php-fpm if [ ! -r $php_fpm_pid ] ; then echo warning, no pid file found - php-fpm is not running ? exit 1 fi kill -term `cat $php_fpm_pid` wait_for_pid removed $php_fpm_pid if [ -n $try ] ; then echo failed exit 1 else echo done fi ;; restart) $0 stop $0 start ;; reload) echo -n reload service php-fpm if [ ! -r $php_fpm_pid ] ; then echo warning, no pid file found - php-fpm is not running ? exit 1 fi kill -usr2 `cat $php_fpm_pid` echo done ;; *) echo usage: $0 {start|stop|force-quit|restart|reload} exit 1 ;; esac
保存,添加x权限。
如需开机启动:chkconfig php-fpm on
更多请支持:http://www.webyang.net/html/web/article_129.html
