Nginx控制命令

進(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)程寫入日志的資源地址,地址變更后,就意味著會寫入新的文件,這就完成了日志切割。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評論 19 139
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,291評論 2 89
  • 第一章 Nginx簡介 Nginx是什么 沒有聽過Nginx?那么一定聽過它的“同行”Apache吧!Ngi...
    JokerW閱讀 33,018評論 24 1,002
  • 自己現(xiàn)在梳理出來了就是寫作是可以融合我所有想做的事情。所以接下來自己的人生過程自己就是可以通過小說來創(chuàng)造出來,這樣...
    吾宗老孫子閱讀 1,099評論 0 0
  • contains方法的源碼是用equals()比較的,也就是說比較的是地址,所以要在類中重寫equals()方法....
    xiaoliman閱讀 5,664評論 0 0

友情鏈接更多精彩內(nèi)容