一,Nginx的平滑重啟如果改變了Nginx的配置文件(nginx.conf),想重啟Nginx,可以發送系統信號給Nginx主進程的方式來進行。在重啟之前,要確認Nginx配置文件的語法是正確的。測試配置文件是否正確:/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf如果配置文件不正確,屏幕會提示配置文件的第幾行出錯:nginx:[emerg] invalid number of arguments in "autoindex" directive in /usr/local/nginx/conf/nginx.conf:29nginx:configuration file /usr/local/nginx/conf/nginx.conf test failed如果配置文件正確,屏幕將提示以下兩行信息:the configuration file /usr/local/nginx/conf/nginx.conf syntax is okconfiguration file /usr/local/nginx/conf/nginx.conf test is successful 平滑重啟nginx:對于Nginx 0.8.x之前的版本 kill -HUP `cat /usr/local/nginx/nginx.pid`對于Nginx 0.8.x之后的版本 /usr/local/webserver/nginx/sbin/nginx -s reloadNginx的平滑升級 當需要將正運行的Nginx升級,可以在不中斷服務的情況下進行,具體步驟:1、使用新的可執行程序替換舊的可執行程序。下載新的Nginx,重新編譯到舊版本的安裝路徑中。
重編譯之前,先備份一下舊的可執行文件。 2、執行以下指令,他將存儲有舊版本主進程ID的文件重命名為.oldbin:kill -USR2 舊版本的Nginx主進程號一般情況下是這樣的:kill -USR2 `cat /usr/local/nginx/nginx.pid` 可以用 ls /usr/local/nginx/logs來查看是否改名
3、執行新版本的Nginx可執行程序。ulimit -SHn 65535/usr/local/nginx/sbin/nginx 4、此時新舊版本的Nginx會同時運行,共同處理請求。要逐步停止舊版本的Nginx,必須發送WINCH信號給舊的主進程。然后,他的工作進程將從容關閉。kill -WINCH 舊版本的Nginx主進程號 5、一段時間后,舊的工作進程處理完了所有的請求后退出,僅由新的進程來處理輸入請求了??捎孟旅娴拿畈榭矗簆s -ef | grep nginx 6、現在可以決定使用新版本還是恢復到舊版本:kill -HUP 舊的主進程號 :Nginx在不重載配置文件的情況下啟動他的工作進程kill -QUIT 新的主進程號 :從容關閉其工作進程kill -TERM 新的主進程號 :強制退出kill 新的主進程號或舊的主進程號:如果因為某些原因新的工作進程不能退出,則向其發送kill信號 新的主進程退出后,舊的主進程會移除.oldbin后綴,恢復為他的.pid文件,這樣,一切就都恢復為升級之前了。如果嘗試升級成功,而自己又希望保留新版本時,可發送QUIT信號給舊的主進程,使其退出而只留下新的進程運行:kill -QUIT 舊主進程號 附:Nginx的信號控制Nginx支持以下幾種信號:TERM,INT 快速關閉QUIT 從容關閉HUP 平滑重啟,重新加載配置文件USR1 重新打開日志文件,在切割日志時用途較大USR2 平滑升級克執行程序 WINCH 從容關閉工作進程
新聞熱點
疑難解答