教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢(xún)/投訴熱線:400-618-4000

怎么重啟nginx和關(guān)閉服務(wù)?

更新時(shí)間:2021年07月15日17時(shí)33分 來(lái)源:傳智教育 瀏覽次數(shù):

Nginx服務(wù)器啟停命令

Nginx安裝完成后,接下來(lái)我們要學(xué)習(xí)的是如何啟動(dòng)、重啟和停止Nginx的服務(wù)。對(duì)于Nginx的啟停在linux系統(tǒng)中也有很多種方式,我們本次課程介紹兩種方式:

1.Nginx服務(wù)的信號(hào)控制

2.Nginx的命令行控制

方式一:Nginx服務(wù)的信號(hào)控制

前面在提到Nginx的高性能,其實(shí)也和它的架構(gòu)模式有關(guān)。Nginx默認(rèn)采用的是多進(jìn)程的方式來(lái)工作的,當(dāng)將Nginx啟動(dòng)后,我們通過(guò)ps -ef |grep nginx命令可以查看到如下內(nèi)容:

信號(hào)控制

從上圖中可以看到,Nginx后臺(tái)進(jìn)程中包含一個(gè)master進(jìn)程和多個(gè)worker進(jìn)程,master進(jìn)程主要用來(lái)管理worker進(jìn)程,包含接收外界的信息,并將接收到的信號(hào)發(fā)送給各個(gè)worker進(jìn)程,監(jiān)控worker進(jìn)程的狀態(tài),當(dāng)worker進(jìn)程出現(xiàn)異常退出后,會(huì)自動(dòng)重新啟動(dòng)新的worker進(jìn)程。而worker進(jìn)程則是專(zhuān)門(mén)用來(lái)處理用戶(hù)請(qǐng)求的,各個(gè)worker進(jìn)程之間是平等的并且相互獨(dú)立,處理請(qǐng)求的機(jī)會(huì)也是一樣的。nginx的進(jìn)程模型,我們可以通過(guò)下圖來(lái)說(shuō)明下:

Nginx管理員

我們現(xiàn)在作為管理員,只需要通過(guò)給master進(jìn)程發(fā)送信號(hào)就可以來(lái)控制Nginx,這個(gè)時(shí)候我們需要有兩個(gè)前提條件,一個(gè)是要操作的master進(jìn)程,一個(gè)是信號(hào)。

(1)要想操作Nginx的master進(jìn)程,就需要獲取到master進(jìn)程的進(jìn)程號(hào)ID。獲取方式簡(jiǎn)單介紹兩個(gè),

·通過(guò)ps -ef | grep nginx;

·在講解nginx的./configure的配置參數(shù)的時(shí)候,有一個(gè)參數(shù)是--pid-path=PATH默認(rèn)是/usr/local/nginx/logs/nginx.pid,所以可以通過(guò)查看該文件來(lái)獲取nginx的master進(jìn)程ID.

(2)信號(hào)

信號(hào)

作用

TERM/INT 立即關(guān)閉整個(gè)服務(wù)
QUIT "優(yōu)雅"地關(guān)閉整個(gè)服務(wù)
HUP 重讀配置文件并使用服務(wù)對(duì)新配置項(xiàng)生效
USR1 重新打開(kāi)日志文件,可以用來(lái)進(jìn)行日志切割
USR2 平滑升級(jí)到最新版的nginx
WINCH 所有子進(jìn)程不在接收處理新連接,相當(dāng)于給work進(jìn)程發(fā)送QUIT指令


調(diào)用命令為kill -signal PID

signal:即為信號(hào);PID即為獲取到的master線程ID

1.發(fā)送TERM/INT信號(hào)給master進(jìn)程,會(huì)將Nginx服務(wù)立即關(guān)閉。

kill -TERM PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`
kill -INT PID / kill -INT `cat /usr/local/nginx/logs/nginx.pid`

2.發(fā)送QUIT信號(hào)給master進(jìn)程,master進(jìn)程會(huì)控制所有的work進(jìn)程不再接收新的請(qǐng)求,等所有請(qǐng)求處理完后,在把進(jìn)程都關(guān)閉掉。

kill -QUIT PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`

3.發(fā)送HUP信號(hào)給master進(jìn)程,master進(jìn)程會(huì)把控制舊的work進(jìn)程不再接收新的請(qǐng)求,等處理完請(qǐng)求后將舊的work進(jìn)程關(guān)閉掉,然后根據(jù)nginx的配置文件重新啟動(dòng)新的work進(jìn)程

kill -HUP PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`

4.發(fā)送USR1信號(hào)給master進(jìn)程,告訴Nginx重新開(kāi)啟日志文件

kill -USR1 PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`

5.發(fā)送USR2信號(hào)給master進(jìn)程,告訴master進(jìn)程要平滑升級(jí),這個(gè)時(shí)候,會(huì)重新開(kāi)啟對(duì)應(yīng)的master進(jìn)程和work進(jìn)程,整個(gè)系統(tǒng)中將會(huì)有兩個(gè)master進(jìn)程,并且新的master進(jìn)程的PID會(huì)被記錄在/usr/local/nginx/logs/nginx.pid而之前的舊的master進(jìn)程PID會(huì)被記錄在/usr/local/nginx/logs/nginx.pid.oldbin文件中,接著再次發(fā)送QUIT信號(hào)給舊的master進(jìn)程,讓其處理完請(qǐng)求后再進(jìn)行關(guān)閉

kill -USR2 PID / kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
kill -QUIT PID / kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

6.發(fā)送WINCH信號(hào)給master進(jìn)程,讓master進(jìn)程控制不讓所有的work進(jìn)程在接收新的請(qǐng)求了,請(qǐng)求處理完后關(guān)閉work進(jìn)程。注意master進(jìn)程不會(huì)被關(guān)閉掉

kill -WINCH PID /kill -WINCH`cat /usr/local/nginx/logs/nginx.pid`

方式二:Nginx的命令行控制

此方式是通過(guò)Nginx安裝目錄下的sbin下的可執(zhí)行文件nginx來(lái)進(jìn)行Nginx狀態(tài)的控制,我們可以通過(guò)nginx -h來(lái)查看都有哪些參數(shù)可以用:

nginx命令控制

-?和-h:顯示幫助信息

-v:打印版本號(hào)信息并退出

-V:打印版本號(hào)信息和配置信息并退出

-t:測(cè)試nginx的配置文件語(yǔ)法是否正確并退出

-T:測(cè)試nginx的配置文件語(yǔ)法是否正確并列出用到的配置文件信息然后退出

-q:在配置測(cè)試期間禁止顯示非錯(cuò)誤消息

-s:signal信號(hào),后面可以跟 :

stop[快速關(guān)閉,類(lèi)似于TERM/INT信號(hào)的作用]

quit[優(yōu)雅的關(guān)閉,類(lèi)似于QUIT信號(hào)的作用]

reopen[重新打開(kāi)日志文件類(lèi)似于USR1信號(hào)的作用]

reload[類(lèi)似于HUP信號(hào)的作用]

-p:prefix,指定Nginx的prefix路徑,(默認(rèn)為: /usr/local/nginx/)

-c:filename,指定Nginx的配置文件路徑,(默認(rèn)為: conf/nginx.conf)

-g:用來(lái)補(bǔ)充N(xiāo)ginx配置文件,向Nginx服務(wù)指定啟動(dòng)時(shí)應(yīng)用全局的配置

0 分享到:
和我們?cè)诰€交談!