重啟nginx后丟失nginx.pid的解決方法
一,nginx的停止操作
停止操作是通過向nginx進(jìn)程發(fā)送信號(hào)來實(shí)現(xiàn)的。
步驟1:查詢nginx主進(jìn)程號(hào)
ps -ef | grep nginx
在進(jìn)程列表里 面找master進(jìn)程,它的編號(hào)就是主進(jìn)程號(hào)了。
步驟2:發(fā)送信號(hào)
從容停止Nginx:
kill -QUIT 主進(jìn)程號(hào)
快速停止Nginx:
kill -TERM 主進(jìn)程號(hào)
強(qiáng)制停止Nginx:
pkill -9 nginx
另外, 若在nginx.conf配置了pid文件存放路徑則該文件存放的就是Nginx主進(jìn)程號(hào),如果沒指定則放在nginx的logs目錄下。有了pid文 件,我們就不用先查詢Nginx的主進(jìn)程號(hào),而直接向Nginx發(fā)送信號(hào)了,命令如下:
kill -信號(hào)類型 '/usr/nginx/logs/nginx.pid'
二,nginx的平滑重啟
如果更改了配置就要重啟Nginx,要先關(guān)閉Nginx再打開?不是的,可以向Nginx 發(fā)送信號(hào),平滑重啟。
平滑重啟命令:
kill -HUP 住進(jìn)稱號(hào)或進(jìn)程號(hào)文件路徑
或使用
/usr/nginx/sbin/nginx -s reload
注意,修改了配置文件后最好先檢查一下修改過的配置文件是否正 確,以免重啟后Nginx出現(xiàn)錯(cuò)誤影響服務(wù)器穩(wěn)定運(yùn)行。判斷Nginx配置是否正確命令如下:
nginx -t -c /usr/nginx/conf/nginx.conf
或者
/usr/nginx/sbin/nginx -t
三,nginx的平滑升級(jí)
如果服務(wù)器正在運(yùn)行的Nginx要進(jìn)行升級(jí)、添加或刪除模塊時(shí),我們需 要停掉服務(wù)器并做相應(yīng)修改,這樣服務(wù)器就要在一段時(shí)間內(nèi)停止服務(wù),Nginx可以在不停機(jī)的情況下進(jìn)行各種升級(jí)動(dòng)作而不影響服務(wù)器運(yùn)行。
步驟1:
若升級(jí)Nginx程序,先用新程序替換舊程序文件,編譯安裝的話新程序直接編譯到Nginx安裝目錄中。
步驟2:執(zhí)行命令
kill -USR2 舊版程序的主進(jìn)程號(hào)或進(jìn)程文件名
此時(shí)舊的Nginx主進(jìn)程將會(huì)把自己的進(jìn)程文件改名為.oldbin,然后執(zhí)行新版 Nginx。新舊Nginx會(huì)同市運(yùn)行,共同處理請(qǐng)求。
這時(shí)要逐步停止舊版 Nginx,輸入命令:
kill -WINCH 舊版主進(jìn)程號(hào)
慢慢舊的工作進(jìn)程就都會(huì)隨著任務(wù)執(zhí)行完畢而退出,新版的Nginx的工作進(jìn)程會(huì)逐漸取代舊版 工作進(jìn)程。
可以決定使用新版還是恢復(fù)到舊版。
四,不重載配置啟動(dòng)新/舊工作進(jìn)程
kill -HUP 舊/新版主進(jìn)程號(hào)
從容關(guān)閉舊/新進(jìn)程
kill -QUIT 舊/新主進(jìn)程號(hào)
如果此時(shí)報(bào)錯(cuò),提示還有進(jìn)程沒有結(jié)束就用下面命令先關(guān)閉舊/新工作進(jìn)程,再關(guān)閉主進(jìn)程號(hào):
kill -TERM 舊/新工作進(jìn)程號(hào)
這樣下來,如果要恢復(fù)到舊版本,只需要上面的幾個(gè)步 驟都是操作新版主進(jìn)程號(hào),如果要用新版本就上面的幾個(gè)步驟都操作舊版主進(jìn)程號(hào)就行了。
上面就是Nginx的一些基本的操作,希望以后Nginx能有更好的方法來處理這些操作, 最好是Nginx的命令而不是向Nginx進(jìn)程發(fā)送系統(tǒng)信號(hào)。
在阿里云服務(wù)器上,進(jìn)程性的 nginx -s stop后再次啟動(dòng)nginx -s reload ,總是會(huì)報(bào)錯(cuò)誤nginx: [error] open() "/alidata/server/nginx/logs/nginx.pid" failed (2: No such file or directory)。
原因:nginx進(jìn)程pid丟失了,下一次再開啟nginx -s reload時(shí)無(wú)法啟動(dòng),重裝可以解決問題,做不做,你決定吧,哈哈。
還是英文的解釋比較專業(yè):
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
//我的機(jī)器是這樣:/alidata/server/nginx/sbin/nginx -c /alidata/server/nginx/conf/nginx.conf
相關(guān)文章
Nginx對(duì)網(wǎng)段內(nèi)ip的連接數(shù)限流配置詳解
這篇文章主要介紹了Nginx對(duì)網(wǎng)段內(nèi)ip的連接數(shù)限流配置詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03Nginx可視化管理工具結(jié)合cpolar實(shí)現(xiàn)遠(yuǎn)程訪問的步驟詳解
Nginx Proxy Manager 是一個(gè)開源的反向代理工具,本文將給大家介紹在Linux 安裝Nginx Proxy Manager并且結(jié)合 cpolar內(nèi)網(wǎng)穿透工具實(shí)現(xiàn)遠(yuǎn)程訪問管理界面,同等,當(dāng)我們使用Nginx Proxy Manager配置其他本地服務(wù),并且需要遠(yuǎn)程訪問,也是同樣的方式,需要的朋友可以參考下2023-09-09詳解ngx_cache_purge _proxy_cache指令使用
本文主要介紹了詳解ngx_cache_purge _proxy_cache指令使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Nginx反向代理后無(wú)法獲取客戶端真實(shí)IP地址
本文主要介紹了Nginx反向代理后無(wú)法獲取客戶端真實(shí)IP地址,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03