進(jìn)入到Nginx安裝目錄的sbin文件夾中,找到nginx的執(zhí)行腳本。對于Nginx來講,經(jīng)常進(jìn)行的操作有啟動、停止、重載等。
啟動:
nginx -s start
對于啟動,需要強(qiáng)調(diào)的就是配置錯誤或者80端口沖突引起的無法啟動問題。在Nginx的配置文件更改完成后,我們可以先使用nginx -t命令來檢驗(yàn)一下配置是否正確,如果有問題,查找并更改就可以;如果是80端口沖突,使用lsof軟件進(jìn)行查看80端口的占用情況lsof -i:80,結(jié)果如下:
[root@noteclass data]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
AliYunDun 885 root 19u IPv4 692428 0t0 TCP noteclass:42202->100.100.30.25:http (ESTABLISHED)
nginx 15370 root 6u IPv4 690493 0t0 TCP *:http (LISTEN)
nginx 15370 root 8u IPv6 690495 0t0 TCP *:http (LISTEN)
nginx 15371 nginx 6u IPv4 690493 0t0 TCP *:http (LISTEN)
nginx 15371 nginx 8u IPv6 690495 0t0 TCP *:http (LISTEN)
如果發(fā)現(xiàn)有其他進(jìn)程占用了80端口,直接使用Kill命令殺死即可。
kill -s 9 '想要?dú)⑺赖腜ID'
停止
網(wǎng)上的很多教程都有使用Kill命令殺死nginx進(jìn)程的介紹,但是本章并不介紹這種方法,也不推薦使用kill命令殺死nginx進(jìn)程的做法。使用Nginx自帶的停止方法感覺會好一些。
Nginx停止有兩種方式:一種是立即停止,一種是優(yōu)雅停止。
nginx -s stop //立即停止
nginx -s quit //優(yōu)雅停止
這兩種方式的區(qū)別在于:使用立即停止,nginx不管當(dāng)前是否有未處理完的請求,都會直接關(guān)閉。而優(yōu)雅停止則會拒絕新請求,對于未處理完的請求,繼續(xù)進(jìn)行處理,直到所有未處理請求全部處理完畢后再關(guān)閉。
重載
nginx -s reload
當(dāng)我們修改Nginx的配置文件后,需要使新配置生效,重啟固然好使,但是即便重啟的速度很快,也需要一定的時間,對于訪問量很大的網(wǎng)站來講,也會造成問題,這時就可以使用上面的命令進(jìn)行重載。
Nginx能夠重載而不重啟的原理就是Nginx是以多進(jìn)程的方式來進(jìn)行工作的,如下圖:

Nginx啟動時會產(chǎn)生一個master主進(jìn)程和N個worker子進(jìn)程,主進(jìn)程負(fù)責(zé)管理子進(jìn)程。當(dāng)一個重載命令傳到主進(jìn)程時,主進(jìn)程會發(fā)送信號給子進(jìn)程,子進(jìn)程在處理完當(dāng)前正在處理的請求后就會關(guān)閉,此時主進(jìn)程會根據(jù)最新配置重新建立一個子進(jìn)程來處理后續(xù)請求,以此類推,直到所有的子進(jìn)程都重新產(chǎn)生,這時Nginx就完成了重載。
重新打開日志
nginx -s reopen
這個命令主要用于日志切割,為什么要進(jìn)行日志切割?Nginx的架構(gòu)就是所有的日志都記錄在一個文件里面,我的Nginx服務(wù)器日志信息記錄在access.log文件里面。時間的變長以及網(wǎng)站訪問量的提升,都會使該文件變的越來越大,進(jìn)而影響到服務(wù)器的性能。所以我們需要定期分割日志文件。
Linux中使用mv命令可以很方便的把文件移動走或者重命名,當(dāng)把目前在用的日志文件移動走或者重命名,重新建立一個同名的日志文件后,會發(fā)現(xiàn)日志并沒有記錄在新建立的日志文件中,而是記錄在以前的文件里面,雖然它被移動走或者重命名了。原因就是nginx的子進(jìn)程在寫日志信息時,它要寫入數(shù)據(jù)的地方對應(yīng)的是日志文件在磁盤中的資源地址,而不是對應(yīng)文件系統(tǒng)中的某個文件。所以雖然文件名稱或文件路徑變更了,其在磁盤中的資源地址依然沒變。所以信息仍被寫入到舊的地址,也就是舊的文件中。
使用該命令可以變更nginx子進(jìn)程寫入日志的資源地址,地址變更后,就意味著會寫入新的文件,這就完成了日志切割。