一、nginx的停止操作
(推薦教學:nginx教學)
停止操作是透過向nginx進程發送訊號來實現的,具體錯誤訊息如下:
[root@yoodb.com ~]# /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檔案遺失怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!