日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Nginx的平滑重啟和平滑升級

作者:tencent_rep 更新時間: 2022-01-31 編程語言

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:29

nginx:configuration file /usr/local/nginx/conf/nginx.conf test failed

如果配置文件正確,屏幕將提示以下兩行信息:

the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

configuration file /usr/local/nginx/conf/nginx.conf test is successful

?

這時候,就可以平滑重啟了:

對于Nginx 0.8.x之前的版本?kill -HUP `cat /usr/local/nginx/nginx.pid`
對于Nginx 0.8.x之后的版本?/usr/local/webserver/nginx/sbin/nginx -s reload

?

?

Nginx的平滑升級

?

當需要將正運行的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、一段時間后,舊的工作進程處理完了所有的請求后退出,僅由新的進程來處理輸入請求了。可用下面的命令查看:

ps -ef | grep nginx

?

6、現在可以決定使用新版本還是恢復到舊版本:

kill -HUP 舊的主進程號 :Nginx在不重載配置文件的情況下啟動他的工作進程

kill -QUIT 新的主進程號 ?:從容關閉其工作進程

kill -TERM 新的主進程號 :強制退出

kill 新的主進程號或舊的主進程號:如果因為某些原因新的工作進程不能退出,則向其發送kill信號

?

新的主進程退出后,舊的主進程會移除.oldbin后綴,恢復為他的.pid文件,這樣,一切就都恢復為升級之前了。
如果嘗試升級成功,而自己又希望保留新版本時,可發送QUIT信號給舊的主進程,使其退出而只留下新的進程運行:kill -QUIT 舊主進程號

?

原文鏈接:https://blog.csdn.net/tencent_rep/article/details/84821213

欄目分類
最近更新