1. 先分享php 5.2的安装方法,准备安装包nginx-0.8.53.tar.gz,解压,进入目录
2. 执行
./configure --prefix=/home/taozi.ly/nginx make && make install
3. 这样的话默认的配置文件为/home/taozi.ly/nginx/conf/nginx.conf,执行文件为/home/taozi.ly/nginx/sbin/nginx,
pid文件为/home/taozi.ly/nginx/logs/nginx.pid,因此在用户主目录下建立启动文件start.sh和关闭文件stop.sh
启动文件内容为
/home/taozi.ly/nginx/sbin/nginx
关闭文件内容为
pid=`cat /home/taozi.ly//nginx/logs/nginx.pid` kill $pid
更高级的用法
nginx -s stop quick exit nginx -s quit graceful quit nginx -s reload changing configuration, starting a new worker, quitting an old worker gracefully nginx -s reopen reopening log files
4. 安装php-fpm,准备好php-5.2.14.tar.gz和php-5.2.14-fpm-0.5.14.diff.gz,解压php-5.2.14.tar.gz
然后分别执行解压和打补丁命令
gzip -d php-5.2.14-fpm-0.5.14.diff.gz patch -d php-5.2.14 -p1 < php-5.2.14-fpm-0.5.14.diff
这样php 5.2.14就支持fastcgi了。php 5.3.x开始就内置了对fastcgi的支持,无需补丁
5. 然后进入php-5.2.14目录,执行如下命令
./configure --prefix=/home/taozi.ly/php --enable-fastcgi / --enable-force-cgi-redirect --enable-fpm / --with-config-file-path=/home/taozi.ly/php/lib --with-mysql=/home/taozi.ly/mysql / --with-pdo-mysql=/home/taozi.ly/mysql --with-curl=/home/taozi.ly/curl --enable-mbstring 完成后再执行 make && make install
6. 完毕后修改nginx的配置文件,
server { listen 9999; server_name localhost; location / { root /home/taozi.ly/nginx/html; index index.php index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /home/taozi.ly/nginx/html; } location ~ /.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/taozi.ly/nginx/html$fastcgi_script_name; include fastcgi_params; } }
执行/home/taozi.ly/php/sbin/php-fpm ,然后启动nginx,最后在html文件夹下建立index.php,
输出phpinfo看看成功没
7. 需要注意的地方
如果修改了php.ini,只需执行/home/taozi.ly/php/sbin/php-fpm reload 即可,不必重启fpm和nginx
开发测试的时候需要把php.ini的 display_errors 打开,否则nginx遇错直接给出500页面,不会显示错误信息
8. php 5.3.3及以上的版本内置了fpm ,此处用5.3.4举例,下载后解压,进入解压后目录
./configure --prefix=/home/taozi.ly/php --enable-fpm / --with-config-file-path=/home/taozi.ly/php/lib --with-mysql=/home/taozi.ly/mysql / --with-pdo-mysql=/home/taozi.ly/mysql --with-curl=/home/taozi.ly/curl --enable-mbstring
make && make install
9. 再把php.ini-production复制到/home/taozi.ly/php/lib下,改名php.ini,
把/home/taozi.ly/php/etc/php-fpm.conf.default复制一份到相同目录命名为php-fpm.conf
10. 打开php-fpm.conf,去掉相应的分号注释,最后如下
pid = run/php-fpm.pid error_log = log/php-fpm.log listen = 127.0.0.1:9000 user = taozi.ly group = admin pm = dynamic pm.max_children = 50 pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spare_servers = 35 pm.max_requests = 500
11. php 5.3.3 下的php-fpm 不再支持 php-fpm 以前具有的 /home/taozi.ly/php/sbin/php-fpm (start|stop|reload)等命令,需要使用信号控制:
master进程可以理解以下信号
INT, TERM 立刻终止
QUIT 平滑终止
USR1 重新打开日志文件
USR2 平滑重载所有worker进程并重新载入配置和二进制模块
示例:
php-fpm 关闭: kill -INT `cat /home/taozi.ly/php/var/run/php-fpm.pid`
php-fpm 重启: kill -USR2 `cat /home/taozi.ly/php/var/run/php-fpm.pid`
查看php-fpm进程数:
ps aux | grep -c php-fpm