nginx 啟動(dòng)、重啟、關(guān)閉命令詳解

作者:Gakki

nginx 命令詳解
  • 輸入命令:nginx -h
    nginx -h
  • -?,-h:查看幫助
  • -v:顯示版本信息并退出
  • -V:顯示版本和配置選項(xiàng)信息,然后退出
  • -t:檢測(cè)配置文件是否有語(yǔ)法錯(cuò)誤,然后退出
  • -T:檢測(cè)配置文件語(yǔ)法,打印它并退出
  • -q:在配置測(cè)試期間,禁止顯示非錯(cuò)誤信息
  • -s:發(fā)送信號(hào)給主進(jìn)程,stop 強(qiáng)制退出,quit 優(yōu)雅的退出,reopen 重啟,reload 重新加載配置
  • -p:設(shè)置 nginx 目錄
  • -c:指定啟動(dòng)使用的配置文件(常用)
  • -g:在配置文件之外設(shè)置全局指令
啟動(dòng)
  1. 直接啟動(dòng)
  • 進(jìn)入 nginx 安裝目錄找到 sbin 文件夾,然后啟動(dòng) nginx。
    命令:cd /sbin 進(jìn)入到 sbin 目錄下
    命令:./nginx 啟動(dòng) nginx
  1. 指定配置文件方式啟動(dòng):
    命令:./nginx -c /usr/local/nginx/conf/nginx.conf

注:/usr/local/nginx/conf/nginx.conf為 nginx 配置文件,根據(jù)自己實(shí)際情況修改。

修改配置之后重啟
檢查 nginx 配置
  1. 進(jìn)入 nginx 下的 sbin 目錄下執(zhí)行命令:
    命令:./nginx -t

注:該命令是檢查配置文件是否有語(yǔ)法錯(cuò)誤。如果有錯(cuò),會(huì)提示出多少行出錯(cuò)。

  1. 或者檢查指定配置文件
    命令:./nginx -t -c /usr/local/app/nginx/conf/nginx.conf
    檢查 nginx 配置語(yǔ)法是否有誤
平滑的重啟
  1. 修改配置無(wú)誤之后,重新加載配置啟動(dòng) nginx 。進(jìn)入 nginx 下的 sbin 目錄下執(zhí)行命令:
    執(zhí)行重載命令:./nginx -s reload

  2. 平滑的重啟 reload 處理過(guò)程:
    nginx 的架構(gòu)是一個(gè) master 進(jìn)程和多個(gè) worker 進(jìn)程。其中 master 充當(dāng)整個(gè)進(jìn)程組與用戶的交互接口,同時(shí)對(duì)進(jìn)程進(jìn)行監(jiān)護(hù),管理 worker 進(jìn)程來(lái)實(shí)現(xiàn)重啟服務(wù)、平滑升級(jí)、更換日志文件、配置文件實(shí)時(shí)生效等功能。worker 用來(lái)處理基本的網(wǎng)絡(luò)事件,worker 之間是平等的,他們共同競(jìng)爭(zhēng)來(lái)處理來(lái)自客戶端的請(qǐng)求。

平滑的重啟,重啟的是 worker 進(jìn)程, master 沒有重啟。處理過(guò)程:master 監(jiān)聽系統(tǒng)信號(hào),如果 master 監(jiān)聽到系統(tǒng)信號(hào) HUP 后,會(huì)先檢查配置文件的有效性,如果新的配置文件應(yīng)用失敗,nginx 將繼續(xù)使用舊的配置進(jìn)行工作;如果配置文件沒有問(wèn)題就會(huì)重新 load 配置文件,創(chuàng)建若干個(gè)新的 worker 進(jìn)程 N,新的 worker 進(jìn)程會(huì)啟動(dòng)新的配置文件。然后 master 向舊的 worker 進(jìn)程發(fā)送信號(hào),優(yōu)雅停機(jī)。最后依然是 N+1 個(gè)進(jìn)程。

注:

  • 新的 worker 進(jìn)程依舊監(jiān)聽原來(lái)的 port。因?yàn)?nginx 是父子進(jìn)程模型,子進(jìn)程繼承了父進(jìn)程的所有內(nèi)容。因此,子進(jìn)程也會(huì)監(jiān)聽相同的 port,又因?yàn)樽舆M(jìn)程沒有執(zhí)行 bind 操作,只有父進(jìn)程才會(huì)進(jìn)行 bind 操作。所以不會(huì)存在端口被占用。
  • 新 worker 進(jìn)程用新的配置啟動(dòng)的時(shí)候,
    此時(shí)有 2N+1 給進(jìn)程在監(jiān)聽原來(lái)的 port。1個(gè) master + N 個(gè)新的 worker + N 個(gè)舊的 worker。
  • 平滑重啟之后,發(fā)現(xiàn) master 的進(jìn)程號(hào)不變,worker 的進(jìn)程號(hào)會(huì)改變。
  • 關(guān)閉舊的 worker 進(jìn)程的時(shí)候,舊的 worker 子進(jìn)程需要完成所屬任務(wù)后,才可以關(guān)閉。如果遇到舊的worker 子進(jìn)程正在進(jìn)行任務(wù),那么舊的子進(jìn)程將繼續(xù)為當(dāng)前連接的客戶提供服務(wù),當(dāng)所有的客戶端服務(wù)完成后,舊的worker子進(jìn)程被關(guān)閉。
Linux 重啟之后自動(dòng)啟動(dòng) nginx
  1. 設(shè)置 Linux 重啟之后 nginx 自動(dòng)啟動(dòng)命令:systemctl enable nginx
  2. 查看狀態(tài),命令:systemctl is-enabled nginx 或者service nginx status
    查看 nginx 狀態(tài)

查看某個(gè)服務(wù)的狀態(tài)

關(guān)閉 nginx
  1. 進(jìn)入 nginx 下的 sbin 目錄下執(zhí)行命令:
    快速停止 nginx 命令:./nginx -s stop
    完整有序的停止 nginx:./nginx -s quit;這個(gè)命令會(huì)等待所有請(qǐng)求結(jié)束后再關(guān)閉 nginx。

  2. 使用 kill 命令關(guān)閉 nginx

  • 先查看 nginx 進(jìn)程,找到主進(jìn)程號(hào)。然后再使用 kill 命令殺死 nginx 進(jìn)程。
    查看 nginx 進(jìn)程號(hào)命令:ps -ef | grep nginx
    從容停止 nginx 命令:kill -QUIT 主進(jìn)程號(hào)
    快速停止 nginx 命令:kill -TERM 主進(jìn)程號(hào)
    強(qiáng)制停止 nginx 命令:kill -HUP 主進(jìn)程號(hào)
    平滑重啟 nginx 命令:kill -9 nginx
    查找并殺死所有 nginx 進(jìn)程:ps aux | grep nginx |awk '{print $2}' | xargs kill -9
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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