日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx —— nginx的命令行控制(nginx的启动与停止、重载配置文件、回滚日志文件、平滑升级等操作)

發布時間:2025/10/17 Nginx 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx —— nginx的命令行控制(nginx的启动与停止、重载配置文件、回滚日志文件、平滑升级等操作) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在linux中,需要使用命令來控制Nginx服務器的啟動與停止、重載配置文件、回滾日志文件、平滑升級等行為。

默認情況下,nginx被安裝在目錄/usr/local/nginx中,其二進制文件路徑為/usr/local/nginx/sbin/nginx,配置文件路徑為/usr/local/nginx/conf/nginx.conf 。更多的配置configure的命令參數,詳情見Nginx —— configure的命令參數(nginx編譯選項)

當然,在configure執行時是可以指定把他們安裝在不同目錄的。為了簡單起見,此次說明默認安裝情況下的命令行的使用情況,如果讀者目錄發生了變化,哪么就替換一下即可。

[root@localhost logs]# /usr/local/nginx/sbin/nginx -? nginx version: nginx/1.15.6 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/nginx/)-c filename : set configuration file (default: conf/nginx.conf)-g directives : set global directives out of configuration file

-c </path/to/config> 為 Nginx 指定一個配置文件,來代替缺省的。

-t 不運行,而僅僅測試配置文件。nginx 將檢查配置文件的語法的正確性,并嘗試打開配置文件中所引用到的文件。

-v 顯示 nginx 的版本。

-V 顯示 nginx 的版本,編譯器版本和配置參數。

nginx控制信號

可以使用信號系統來控制主進程。默認,nginx 將其主進程的 pid 寫入到 /usr/local/nginx/nginx.pid 文件中。通過傳遞參數給 ./configure 或使用pid 指令,來改變該文件的位置。

主進程可以處理以下的信號:
TERM, INT ?? ?快速關閉
QUIT ?? ?從容關閉
HUP ?? ?重載配置用新的配置開始新的工作進程從容關閉舊的工作進程

USR1 ?? ?重新打開日志文件
USR2 ?? ?平滑升級可執行程序。
WINCH ?? ?從容關閉工作進程

盡管你不必自己操作工作進程,但是,它們也支持一些信號:
TERM, INT ?? ?快速關閉
QUIT ?? ?從容關閉
USR1 ?? ?重新打開日志文件

Nginx的命令行控制

1、默認方式啟動

?直接執行Nginx 二進制程序,例如:

[root@localhost logs]# /usr/local/nginx/sbin/nginx

這時,會讀取默認路徑下的配置文件:/usr/local/nginx/conf/nginx.conf 。

實際上,沒有顯式指定nginx.conf配置文件路徑時,將打開在configure命令執行時使用--conf-path=PATH 指定的nginx.conf文件。

2、另行指定配置文件的啟動方式

?使用-c參數指定配置文件。例如:

[root@localhost logs]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

這時會讀取-c參數后指定的nginx.conf配置文件來啟動nginx。

3、另行指定安裝目錄的啟動方式

使用-p參數指定nginx的安裝目錄。例如:

[root@localhost logs]# /usr/local/nginx/sbin/nginx -p /usr/local/nginx/

4、另行指定全局配置項的啟動方式

?可以通過-g參數臨時指定一些全局配置項,以使新的配置項生效。例如:

[root@localhost logs]# /usr/local/nginx/sbin/nginx -g "pid /var/nginx/test.pid;"

上面這行命令意味著會吧pid文件寫到/var/nginx/test.pid中。 當然 /var/nginx這個目錄是必須存在的。

-g參數的約束條件是指定的配置項不能與默認路徑下的nginx.conf中的配置項相沖突,否則無法啟動。就像上例那樣,類似這臺的配置項: pid logs/nginx.pid,是不能存在與默認的nginx.conf中的。

另一個約束條件是,以-g方式啟動的Nginx 服務執行其他的命令時,需要把-g參數也帶上,否則可能出現配置項不匹配的情形。例如,如果要停止Nginx 服務,哪么需要執行下面代碼:

[root@localhost logs]# /usr/local/nginx/sbin/nginx -g "pid /var/test.pid;" -s stop

如果不帶上-g "pid /var/nginx/test.pid;" , 哪么就找不到pid文件,也會出現無法停止服務的情況。

5、測試配置信息是否有誤

?在不啟動Nginx 的情況下,使用-t參數 僅測試配置文件是否有誤。例如:

[root@localhost logs]# /usr/local/nginx/sbin/nginx -t

執行結果中顯示配置是否正確。

6、在測試配置階段不輸出信息

?測試配置選項時,使用-q參數可以不把error級別以下的信息輸出到屏幕。例如:

[root@localhost logs]# /usr/local/nginx/sbin/nginx -t -q

7、顯示版本信息

使用-v 參數顯示Nginx的版本信息,例如:

[root@localhost logs]# /usr/local/nginx/sbin/nginx?? -v

8、顯示編譯階段的參數

?使用-V不僅可以顯示版本信息以為,還可以顯示配置編譯階段的信息,如GCC編譯器的版本、操作系統的版本、執行configure時的參數等。如:

[root@localhost logs]# /usr/local/nginx/sbin/nginx ? -V

?

獲取PID有兩個途徑,

一個是,在Nginx啟動后,默認在Nginx服務器安裝目錄下面的logs/nginx.pid文件,里面存儲主進程的PID 。

[root@localhost logs]# cat /usr/local/nginx/logs/nginx.pid
90422

二個是,在Linux下面使用ps命令查看主進程的PID.

?

[root@localhost logs]# ps -aux | grep nginx

root????? 90422? 0.0? 0.0? 20608?? 616 ???????? Ss?? 14:01?? 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody??? 90423? 0.0? 0.0? 23144? 1392 ???????? S??? 14:01?? 0:00 nginx: worker process
root????? 90426? 0.0? 0.0 112720?? 984 pts/1??? S+?? 14:01?? 0:00 grep --color=auto nginx

9、快速的停止服務

?使用-s stop可以強制停止nginx服務。-s參數其實是告訴nginx程序向正在運行的Nginx服務發送信號量,Nginx程序通過nginx.pid文件中得到mater進程的進程ID,再向運行中master進程發送TERM信號來快速地關閉Nginx服務。例如:

[root@localhost logs]# /usr/local/nginx/sbin/nginx -s stop

實際上,如果通過kill命令直接向nginx master進程發送TERM和INT信號,效果是一樣的。例如:先通過ps命令查看nginx master的進程ID:

[root@localhost logs]# ps -aux | grep nginx
root????? 90803? 0.0? 0.0? 20608?? 620 ???????? Ss?? 14:39?? 0:00 nginx: master process /usr/local/nginx/sbin/nginx

[root@localhost logs]# kill -s SIGTERM 90803?

或者是

[root@localhost logs]# kill -s SIGINT? 90803?

這兩條命令的效果與執行 與-s stop是完全一樣的。

10、“優雅”的停止服務

?如果希望Nginx服務可以正常的處理完當前所有請求再停止服務,哪么可以使用-s quit參數來停止服務。例如:

[root@localhost logs]# /usr/local/nginx/sbin/nginx -s quit

該命令與快速停止 Nginx服務是有區別的。當快速停止服務時,worker進程與master進程在收到信號后會立即跳出循環,推出進程。而“優雅”的停止服務時, 首先會關閉監聽端口,停止接受新的連接,然后把當前正在處理的連接全部處理完,最后再退出進程。

與快速停止服務類似,可以直接發送QUIT信號給master進程來停止服務,其效果與-s quit 命令是一樣的。如:

[root@localhost logs]# kill -s SIGQUIT <nginx worker pid>??????? //此時ps查看后為91115

如果你希望“優雅”的停止某個worker進程,哪么可以通過向該進程發送WINCH信號來停止服務。例如:

[root@localhost logs]# kill -s SIGWINCH <nginx worker pid>

11、使運行中的nginx重讀配置項并生效

?使用-s reload參數可以使運行中的Nginx服務重新加載nginx.conf文件。例如:

[root@localhost logs]# /usr/local/nginx/sbin/nginx -s reload

實際上,Nginx會先檢查新的配置項是否有誤,如果全部正確就以“優雅”的方式關閉,再重新啟動Nginx來實現這個目的。類似的,-s是發送信號,仍然可以用kill 命令發送HUP信號來達到相同的效果。

[root@localhost logs]#kill -s SIGHUP <nginx master pid>

12、日志文件回滾

?使用-s reopen參數可以重新打開日志文件,這樣可以把當前日志文件改名或者轉移到其他目錄中進行備份,在重新打開時候就會生成新的日志文件。這個功能使得日志文件不至于過大。例如:

[root@localhost logs]# /usr/local/nginx/sbin/nginx -s reopen

當然,這與使用kill命令發送USER1信號效果相同。

[root@localhost logs]# kill -s SIGUSER1 <nginx master pid>

13、平滑升級Nginx

當Nginx服務升級到新的版本時,必須要將舊的二進制文件Nginx替換掉,通常情況下這是需要重啟服務的,但Nginx支持不重啟服務來完成新版本的平滑升級。

升級時包括以下步驟:

1》通知正在運行的舊版本Nginx準備升級,通過向master進程發送USR2信號可達到的目的。例如:

[root@localhost logs]# kill -s SIGUSR2<nginx master pid>

這時,運行中的nginx會將pid文件重命名,如將/usr/local/nginx/logs/nginx.pid 重命名為 /usr/local/nginx/logs/nginx.pid.oldbin 這樣新的Nginx 才有可能啟動成功。

【親測:此時用ps查看新舊版本的Nginx,都已經啟動了。】

2》啟動新版本的Nginx,可以使用以上介紹過的任意一種辦法啟動。這時候通過ps命令可以發現新舊版本的Nginx都在同時運行。

3》通過kill命令向舊的版本的master進程發送SIGQUIT信號,以“優雅”的方式關閉舊的版本的Nginx,隨后將只有新版本的Nginx服務運行,此時平滑升級成功。

[root@localhost logs]# cat /usr/local/nginx/logs/nginx.pid
91867
[root@localhost logs]# cat /usr/local/nginx/logs/nginx.pid.oldbin
91278
[root@localhost logs]# kill -s SIGQUIT 91278

【親測:此時文件nginx.pid.oldbin已經消失】

14、顯示命令行幫助

使用-h 或者? -?參數會顯示支持的所有命令行參數。

總結

以上是生活随笔為你收集整理的Nginx —— nginx的命令行控制(nginx的启动与停止、重载配置文件、回滚日志文件、平滑升级等操作)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。