從php5.3.3開始 源碼中開始包含 php-fpm,不用專門再打補丁了,只需要解開源碼直接configure,
關於php-fpm的編譯參數有 –enable-fpm –with-fpm-user=www –with-fpm-group=www –with-libevent-dir=libevent位置。
這個php-fpm 不再支持 php-fpm 補丁具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令,需要使用信號控制:
master進程可以理解以下信號
SIGINT, SIGTERM 立刻終止
SIGQUIT 平滑終止
SIGUSR1 重新打開日誌文件
SIGUSR2 平滑重載所有worker進程並重新載入配置和二進制模塊
示例:
php-fpm 關閉:
kill -SIGINT `cat /usr/local/php/var/run/php-fpm.pid`
php-fpm 重啓:
kill -SIGUSR2 `cat /usr/local/php/var/run/php-fpm.pid`
其次配置文件不再使用的xml 格式,改爲了INI,但是配置參數幾乎和以前一樣,可參照xml格式的格式配置。
—————-補充內容php 5.3.6 中 php-fpm 配置 成 服務啓動—————-
cp -f /tools/php-5.3.6/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
php-fpm的啓動:
##vim /usr/local/webserver/php/etc/php-fpm.conf
php-fpm.pid 目錄必須是:/usr/local/webserver/php/var/run/php-fpm.pid
chmod 755 /etc/init.d/php-fpm
/etc/init.d/php-fpm start
/sbin/chkconfig --add php-fpm (添加到開機服務列表)
/sbin/chkconfig php-fpm on
php-fpm的啓動、停止和重啓:
/etc/init.d/php-fpm start
/etc/init.d/php-fpm stop
/etc/init.d/php-fpm reload
啓動效果如下:
Hai_ISD_7_9_Cent56_64:/usr/local/webserver/php/etc#service php-fpm start
Starting php-fpm done
Hai_ISD_7_9_Cent56_64:/usr/local/webserver/php/etc#service php-fpm stop
Gracefully shutting down php-fpm . done
Hai_ISD_7_9_Cent56_64:/usr/local/webserver/php/etc#service php-fpm start
Starting php-fpm done
Hai_ISD_7_9_Cent56_64:/usr/local/webserver/php/etc#service php-fpm reload
Reload service php-fpm done
nginx中涉及的路徑最好採用絕對路徑
1. nginx的啓動(nginx.conf文件基本上位於nginx主目錄中的conf目錄中)
nginx -c nginx.conf
2. nginx的停止(nginx.pid文件基本上位於nginx主目錄中的logs目錄中)
ps -ef | grep nginx, 可發現數個nginx進程,其中標有master的爲主進程,其它爲子進程, 停止nginx主要就是對主進程進行信號控制.
1). 從容停止
kill -QUIT `cat nginx.pid`
2). 快速停止
kill -TERM `cat nginx.pid`
or
kill -INT `cat nginx.pid`
3). 強制停止
kill -9 `cat nginx.pid`
3. nginx的平滑重啓
首先要驗證新的配置文件是否正確: nginc -t -c nginx.conf, 成功後向主進程發送HUP信號即可: kill -HUP `cat nginx.pid`
4. nginx的平滑升級
1)備份好舊的可執行文件,使用新版本替換舊版本
2)kill -USR2 舊版本的主進程PID 進行平滑升級, 此時新老版本共存
3)kill -WINCH 舊版本的主進程PID 逐步關閉舊主進程的工作進程
4)當舊主進程產生的工作進程全部關閉後, 可以決定是否使用新版本還是舊版本.(需要使用kill命令來殺死新或舊主進程)
#!/bin/sh
BASE_DIR='/usr/local/'
${BASE_DIR}nginx/sbin/nginx -t -c ${BASE_DIR}nginx/conf/nginx.conf >& ${BASE_DIR}nginx/logs/nginx.start
info=`cat ${BASE_DIR}nginx/logs/nginx.start`
if [ `echo $info | grep -c "syntax is ok" ` -eq 1 ]; then
if [ `ps aux|grep "nginx"|grep -c "master"` == 1 ]; then
kill -HUP `cat ${BASE_DIR}nginx/logs/nginx.pid`
echo "ok"
else
killall -9 nginx
sleep 1
${BASE_DIR}nginx/sbin/nginx
fi
else
echo "######## error: ########"
cat ${BASE_DIR}nginx/logs/nginx.start
fi