1. 程式人生 > 實用技巧 >Nginx常用命令

Nginx常用命令

這邊我將Nginx的命令分為兩塊,一塊是Nginx的命令列命令,主要用來檢視Nginx的安裝資訊,幫助資訊等。還有一塊就是Nginx的運維命令,主要用來啟動關閉服務。

命令列命令

Nginx的命令列引數比較少,我們可以使用以下命令檢視Nginx支援的命令:

/var » nginx -h                  
nginx version: nginx/1.17.2
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]

Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /usr/local/Cellar/nginx/1.17.2/)
  -c filename   : set configuration file (default: /usr/local/etc/nginx/nginx.conf)
  -g directives : set global directives out of configuration file

下面分別對這些引數做下說明

  • nginx -h:檢視幫助
  • nginx -v:檢視nginx的版本
  • nginx -V:檢視版本和nginx的配置選項
  • nginx -t:測試配置檔案的正確性
  • Nginx -T: 測試配置檔案,並顯示配置檔案(這個命令可以快速檢視配置檔案)
  • nginx -q:測試配置檔案,但是隻顯示錯誤資訊
  • nginx -s:傳送訊號,下面詳細介紹
  • nginx -p:設定字首
  • nginx -c:設定配置檔案
  • nginx -g:附加配置檔案路徑

運維命令

運維命令主要用於對Nginx服務的啟動、重啟和停止等。Nginx可以接收的訊號有:

訊號 作用
TERM或INT 快速停止Nginx服務
QUIT 平緩停止Nginx服務
HUP 使用新的配置檔案啟動程序,之後平緩停止原有程序,“平滑重啟”的功能
USR1 重新開啟日誌檔案,常用於日誌切割
USR2 使用新版本的Nginx檔案啟動服務,之後平緩停止原有程序,“平滑升級”的功能
WINCH 平緩停止worker程序,用於Nginx伺服器平滑升級
kill SIGNAL PID
或者
nginx -s [option]

服務啟動

# nginx
# 當然我們可以只用-c選項制定配置檔案,不指定的話就是使用預設的配置
# nginx -c [path]

直接執行nginx的二進位制檔案,沒有報錯則表明服務已經啟動了。可以使用ps

命令檢視程序。

服務停止

停止nginx服務的方法有很多,建議使用下面的第一和第二種。

# 立即停止
# nginx -s stop 
或者
# 平滑停止
# nginx -s quit
或者
# kill TERM | INT | QUIT PID
或者(不建議這麼停止服務)
# kill -9 PID

服務重啟

更改Nginx伺服器的配置和加入新模組後,如果希望當前的Nginx服務應用新的配置或使新模組生效,就需要重啟Nginx服務。當然我們可以先關閉Nginx服務,然後使用新的Nginx配置檔案重啟服務。

這裡主要介紹Nginx服務的平滑重啟。平滑重啟是這樣一個過程:Nginx服務程序接收到訊號後,首先讀取新的Nginx配置檔案,如果配置語法正確,則啟動新的Nginx服務,然後平緩關閉舊的服務程序;如果新的Nginx配置有問題,將顯示錯誤,仍然使用舊的Nginx程序提供服務。

# 平滑重啟服務
# nginx -s reload
或者
# kill HUP PID

服務平滑升級

平滑升級是指:當需要將正在執行中的Nginx升級、新增/刪除伺服器模組時,可以在不中斷服務的情況下,使用新版本、重編譯的Nginx可執行程式替換舊版本的可執行程式。

平滑升級的過程是這樣的,Nginx服務接收到USR2訊號後,首先將舊的nginx.pid檔案(如果在配置檔案中更改過這個檔案的名字,也是相同的過程)新增字尾.oldbin,變為nginx.pid.oldbin檔案;然後執行新版本Nginx伺服器的二進位制檔案啟動服務。如果新的服務啟動成功,系統中將有新舊兩個Nginx服務共同提供Web服務。之後,需要向舊的Nginx服務程序傳送WINCH訊號,使舊的Nginx服務平滑停止,並刪除nginx.pid.oldbin檔案。在傳送WINCH訊號之前,可以隨時停止新的Nginx服務。

為了實現Nginx伺服器的平滑升級,新的伺服器安裝路徑應該和舊的保持一致。因此建議使用者在安裝新伺服器之前先備份舊伺服器。如果由於某種原因無法保持新舊伺服器安裝路徑一致,則可以先使用以下命令將舊伺服器的安裝路徑更改為新伺服器的安裝路徑:

nginx -p newInstallPath

其中,newInstallPath為新伺服器的安裝路徑。之後,備份舊伺服器,安裝新伺服器即可。做好準備工作以後,使用以下命令實現Nginx服務的平滑升級:

nginx -g USR2

通過ps -ef | grep nginx檢視新的Nginx服務啟動正常,啟動正常以後再使用以下命令

nginx -g WINCH

WINCH訊號用於傳送平滑停止舊服務訊號。這樣就在不停止提供Web服務的前提下完成了Nginx伺服器的平滑升級。