歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 啟動及重新啟動nginx,重啟nginx後丟失nginx.pid問題解決

啟動及重新啟動nginx,重啟nginx後丟失nginx.pid問題解決

日期:2017/3/1 15:28:33   编辑:關於Linux
啟動及重新啟動nginx,重啟nginx後丟失nginx.pid問題解決 停止操作 停止操作是通過向nginx進程發送信號來進行的 步驟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再打開?不是的,可以向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可以在不停機的情況下進行各種升級動作而不影響服務器運行。 步驟1: 如 果升級Nginx程序,先用新程序替換舊程序文件,編譯安裝的話新程序直接編譯到Nginx安裝目錄中。 步 驟2:執行命令 kill -USR2 舊版程序的主進程號或進程文件名 此時舊的Nginx主進程將會把自己的進程文件改名為.oldbin,然後執行新版 Nginx。新舊Nginx會同市運行,共同處理請求。 這時要逐步停止舊版 Nginx,輸入命令: kill -WINCH 舊版主進程號 慢慢舊的工作進程就都會隨著任務執行完畢而退出,新版的Nginx的工作進程會逐漸取代舊版 工作進程。 此 時,我們可以決定使用新版還是恢復到舊版。 不重載配置啟動新/舊工作進程 kill -HUP 舊/新版主進程號 從容關閉舊/新進程 kill -QUIT 舊/新主進程號 如果此時報錯,提示還有進程沒有結束就用下面命令先關閉舊/新工作進程,再關閉主進程號: kill -TERM 舊/新工作進程號 這樣下來,如果要恢復到舊版本,只需要上面的幾個步 驟都是操作新版主進程號,如果要用新版本就上面的幾個步驟都操作舊版主進程號就行了。 上面就是Nginx的一些基本的操作,希望以後Nginx能有更好的方法來處理這些操作, 最好是Nginx的命令而不是向Nginx進程發送系統信號。 在使用的阿裡雲服務器上,進程性的 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時無法啟動,重裝可以解決這個問題,但是太麻煩了。 一開始百度解決該問題。只是找到幾個求助答案。沒有實際有效的方法,於是用google開始搜索,雖然英語比較惡心,但一般,英文網站上總會有解決方法這一次也不另外。 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) //在我機器上是這樣的/alidata/server/nginx/sbin/nginx -c /alidata/server/nginx/conf/nginx.conf
Copyright © Linux教程網 All Rights Reserved