1. 先分享php 5.2的安裝方法,準備安裝包nginx-0.8.53.tar.gz,解壓,進入目錄
2. 執行
./configure --prefix=/home/taozi.ly/nginxmake && 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.loglisten = 127.0.0.1:9000user = taozi.lygroup = adminpm = dynamicpm.max_children = 50pm.start_servers = 20pm.min_spare_servers = 5pm.max_spare_servers = 35pm.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