一、nginx的停止操作
(推薦教學:)
停止操作是通過向nginx程序傳送訊號來實現的,具體錯誤資訊如下:
[[email protected] ~]# /usr/local/nginx/sbin/nginx -s reload nginx: [error] open() 「/usr/local/nginx/logs/nginx.pid」 failed (2: No such file or directory)
步驟1:
查詢nginx主程序號,程式碼如下:
ps -ef | grep nginx
在程序列表裡 面找master程序,它的編號就是主程序號了。
步驟2:
傳送訊號,從容停止Nginx:
kill -QUIT 主程序號
快速停止Nginx:
kill -TERM 主程序號
強制停止Nginx,程式碼如下:
pkill -9 nginx
另外, 若在nginx.conf設定了pid檔案存放路徑則該檔案存放的就是Nginx主程序號,如果沒指定則放在nginx的logs目錄下。有了pid檔案,就不用先查詢Nginx的主程序號,而直接向Nginx傳送訊號了,命令程式碼如下:
kill -訊號型別 ‘/usr/nginx/logs/nginx.pid’
二、nginx的平滑重新啟動
如果更改了設定可以向Nginx傳送訊號,平滑重新啟動。
平滑重新啟動命令程式碼如下:
kill -HUP 住進稱號或程序號檔案路徑
或使用
/usr/nginx/sbin/nginx -s reload
注意,修改了組態檔後最好先檢查一下修改過的組態檔是否正確,以免重新啟動後Nginx出現錯誤影響伺服器穩定執行。判斷Nginx設定是否正確命令程式碼如下:
nginx -t -c /usr/nginx/conf/nginx.conf
或者
/usr/nginx/sbin/nginx -t
三、nginx的平滑升級
如果伺服器正在執行的Nginx要進行升級、新增或刪除模組時,我們需 要停掉伺服器並做相應修改,這樣伺服器就要在一段時間內停止服務,Nginx可以在不停機的情況下進行各種升級動作而不影響伺服器執行。
步驟1:
若升級Nginx程式,先用新程式替換舊程式檔案,編譯安裝的話新程式直接編譯到Nginx安裝目錄中。
步驟2:執行命令
kill -USR2 舊版程式的主程序號或程序檔名
此時舊的Nginx主程序將會把自己的程序檔案改名為.oldbin,然後執行新版 Nginx。新舊Nginx會同市執行,共同處理請求。
這時要逐步停止舊版 Nginx,輸入命令:
kill -WINCH 舊版主程序號
慢慢舊的工作程序就都會隨著任務執行完畢而退出,新版的Nginx的工作程序會逐漸取代舊版 工作程序。
可以決定使用新版還是恢復到舊版。
四、不過載設定啟動新/舊工作程序
kill -HUP 舊/新版主程序號
從容關閉舊/新程序
kill -QUIT 舊/新主程序號
如果此時報錯,提示還有程序沒有結束就用下面命令先關閉舊/新工作程序,再關閉主程序號:
kill -TERM 舊/新工作程序號
注意在阿里雲伺服器上,程序性的 nginx -s stop後再次啟動nginx -s reload ,總是會報錯誤
nginx: [error] open() 「/alidata/server/nginx/logs/nginx.pid」 failed (2: No such file or directory)
原因:nginx程序殺死後pid丟失了,下一次再開啟nginx -s reload時無法啟動,重灌可以解決問題。也可以參考一下英文的解釋:
issued a nginx -s stop and after that I got this error when trying to reload it. [error]: invalid PID number 「」 in 「/var/run/nginx.pid」 That /var/run/nginx/pid file is empty atm. What do I need to do to fix it? nginx -s reload is only used to tell a running nginx process to reload its config. After a stop, you don’t have a running nginx process to send a signal to. Just run nginx (possibly with a -c /path/to/config/file)
使用方法,程式碼如下:
nginx -c /path/to/config/file
Linux系統執行命令如下:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
以上就是重新啟動nginx時nginx.pid檔案丟失怎麼辦的詳細內容,更多請關注TW511.COM其它相關文章!