當(dāng)需要給正在運(yùn)行的Nginx服務(wù)升級(jí)预茄,或者添加或者刪除模塊的時(shí)候兴溜。可以在不服務(wù)不中斷的情況下進(jìn)行操作耻陕。
1拙徽、使用新的可執(zhí)行程序替換舊的可執(zhí)行程序,對于編譯安裝的 nginx诗宣,可以將新版本編譯安裝到舊版本的 nginx 安裝路徑中斋攀。替換之前,最好備份一下舊的可執(zhí)行文件梧田。
2淳蔼、發(fā)送以下指令:
kill -USR2 【舊版本的Nginx主進(jìn)程號(hào)】
3、舊版本 nginx 的主進(jìn)程將重命名它的 pid 文件為 .oldbin(例如:/usr/localinx/logsinx.pid.oldbin)裁眯,然后執(zhí)行新版本的 nginx 可執(zhí)行程序鹉梨,依次啟動(dòng)新的主進(jìn)程和新的工作進(jìn)程。
4穿稳、 此時(shí)存皂,新、舊版本的 nginx 實(shí)例會(huì)同時(shí)運(yùn)行逢艘,共同處理輸入的請求旦袋。要逐步停止舊版本的 nginx 實(shí)例,你必須發(fā)送 WINCH 信號(hào)給舊的主進(jìn)程它改,然后疤孕,它的工作進(jìn)程就將開始從容關(guān)閉:
kill -WINCH 【舊版本的Nginx主進(jìn)程號(hào)】
5、 一段時(shí)間后央拖,舊的工作進(jìn)程(worker process)處理了所有已連接的請求后退出祭阀,僅由新的工作進(jìn)程來處理輸入的請求了鹉戚。
6、 這時(shí)候专控,我們可以決定是使用新版本抹凳,還是恢復(fù)到舊版本:
kill -HUP 【舊的主進(jìn)程號(hào)】:nginx 將在不重載配置文件的情況下啟動(dòng)它的工作進(jìn)程
kill -QUIT 【新的主進(jìn)程號(hào)】:從容關(guān)閉其工作進(jìn)程(worker process)
kill -TERM 【新的主進(jìn)程號(hào)】:強(qiáng)制退出
kill 【新的主進(jìn)程號(hào)或舊的主進(jìn)程號(hào)】:如果因?yàn)槟承┰蛐碌墓ぷ鬟M(jìn)程不能退出,則向其發(fā)送 kill 信號(hào)
新的主進(jìn)程退出后伦腐,舊的主進(jìn)程會(huì)移除 .oldbin 后綴赢底,恢復(fù)為它 的 .pid 文件,這樣柏蘑,一切就恢復(fù)到升級(jí)之前了幸冻。如果嘗試升級(jí)成功,而你也希望保留新的服務(wù)器時(shí)辩越,可發(fā)送 QUIT 信號(hào)給舊的主進(jìn)程,使其退出而只留下新的服務(wù)器運(yùn)行信粮。