nginx日常維護常用命令

莫問今朝乄發表於2017-11-27

http://www.jb51.net/article/47750.htm

一、簡明nginx常用命令

1. 啟動 Nginx

poechant@ubuntu:sudo ./sbin/nginx

2. 停止 Nginx

poechant@ubuntu:sudo ./sbin/nginx -s stop
poechant@ubuntu:sudo ./sbin/nginx -s quit

-s都是採用向 Nginx 傳送訊號的方式。

3. Nginx 過載配置

poechant@ubuntu:sudo ./sbin/nginx -s reload

上述是採用向 Nginx 傳送訊號的方式,或者使用:

poechant@ubuntu:service nginx reload

4. 指定配置檔案

poechant@ubuntu:sudo ./sbin/nginx -c /usr/local/nginx/conf/nginx.conf

-c表示configuration,指定配置檔案。

5. 檢視 Nginx 版本
有兩種可以檢視 Nginx 的版本資訊的引數。第一種如下:

poechant@ubuntu:/usr/local/nginx$ ./sbin/nginx -v
nginx: nginx version: nginx/1.0.0

另一種顯示的是詳細的版本資訊:

poechant@ubuntu:/usr/local/nginx$ ./sbin/nginx -V
nginx: nginx version: nginx/1.0.0
nginx: built by gcc 4.3.3 (Ubuntu 4.3.3-5ubuntu4) 
nginx: TLS SNI support enabled
nginx: configure arguments: --with-http_ssl_module --with-openssl=/home/luming/openssl-1.0.0d/

6. 檢查配置檔案是否正確

poechant@ubuntu:/usr/local/nginx$ ./sbin/nginx -t
nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (13: Permission denied)
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
2012/01/09 16:45:09 [emerg] 23898#0: open() "/usr/local/nginx/logs/nginx.pid" failed (13: Permission denied)
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed

如果出現如上的提示資訊,表示沒有訪問錯誤日誌檔案和程式,可以sudo(super user do)一下:

poerchant@ubuntu:/usr/local/nginx$ sudo ./sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

如果顯示如上,則表示配置檔案正確。否則,會有相關提示。

 

7. 顯示幫助資訊

poechant@ubuntu:/user/local/nginx$ ./sbin/nginx -h

或者:

poechant@ubuntu:/user/local/nginx$ ./sbin/nginx -?

 

以上這些涵蓋了 Nginx 日常維護的所有基本操作,另外還有向 master 程式傳送訊號的相關命令,我們會在下面看到。

二、在Linux下通過master傳送訊號的相關命令

停止操作
停止操作是通過向nginx程式傳送訊號(什麼是訊號請參閱linux文 章)來進行的
步驟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 住進稱號或程式號檔案路徑
或者使用

nginx -s reload(推薦)

/usr/nginx/sbin/nginx -s reload

注意,修改了配置檔案後最好先檢查一下修改過的配置檔案是否正 確,以免重啟後Nginx出現錯誤影響伺服器穩定執行。判斷Nginx配置是否正確命令如下:

nginx -t -c /usr/nginx/conf/nginx.conf

或者

nginx -t (推薦)

/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程式傳送系統訊號。


相關文章