運行和控制Nginx——命令行參數和信號

来源:http://www.cnblogs.com/shea/archive/2017/06/12/6898021.html
-Advertisement-
Play Games

參考資料: Nginx中文文檔: http://www.nginx.cn/nginxchscommandline Nginx的啟動、停止、平滑重啟、信號控制和平滑升級:http://zachary-guo.iteye.com/blog/1358312 命令行參數: 常用命令: -c filename ...


參考資料:

  Nginx中文文檔: http://www.nginx.cn/nginxchscommandline 

  Nginx的啟動、停止、平滑重啟、信號控制和平滑升級:http://zachary-guo.iteye.com/blog/1358312

命令行參數:

常用命令:

  -c filename:設置配置文件。

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

  -s :傳遞一個信號,stop快速關閉,quit從容關閉,reopen重新打開日誌文件、用於切換日誌文件,reload重載配置文件。

  -v :顯示nginx的版本。

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

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[root@localhost /]# alias nginx='/usr/local/nginx/sbin/nginx'
[root@localhost /]# alias




[root@localhost /]# nginx -h 
nginx version: nginx/1.11.13
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

[root@localhost /]# 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

控制信號:

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

主進程可以處理以下的信號:

TERM,INT 快速關閉
QUIT 從容關閉
HUP

重新配置

用新的配置開始新的工作進程

從容關閉舊的工作進程

USR1 重新打開日誌文件,在切割日誌時用途較大
USR2 平滑升級可執行程式
WINCH 從容關閉工作進程

 

  

 

 

 

 

 

 

 

啟動

  啟動代碼格式:nginx安裝目錄地址 -c nginx配置文件地址

[root@localhost ~]# alias nginx='/usr/local/nginx/sbin/nginx'
[root@localhost ~]# nginx -c /usr/local/nginx/conf/nginx.conf
[root@localhost ~]# ps -ef|grep nginx
root      2073     1  0 10:37 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody    2074  2073  0 10:37 ?        00:00:00 nginx: worker process                                          
root      2076  2022  0 10:37 pts/0    00:00:00 grep nginx
[root@localhost ~]#   

 停止

  從容停止:

# ` 字元是數字鍵盤 1 字元左邊的那個字元
[root@localhost ~]# kill -QUIT `cat /usr/local/nginx/logs/nginx.pid`

  快速停止:

[root@localhost ~]# kill -TERM `cat /usr/local/nginx/logs/nginx.pid`  

    或

[root@localhost ~]# kill -INT `cat /usr/local/nginx/logs/nginx.pid`

  強行停止

[root@localhost ~]# kill -9 nginx

重啟

  1.普通重啟:關閉進程,修改配置後,重啟進程

  2.重新載入配置文件,不重啟進程,不會停止處理請求

  3.平滑更新nginx二進位,不會停止處理請求

=========================================================================

註意:在重載前,測試一下配置文件

# -t 參數將檢查配置文件的語法是否正確,預設會檢查 /usr/local/nginx/conf/nginx.conf 文件
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
# 如果要對指定配置文件進行語法檢查,可以繼續添加 -c 參數
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]#

=========================================================================

nginx的平滑重啟

  如果改變了nginx的配置文件,想重啟nginx,同樣可以發送系統型號給nginx主進程的方式來進行,重啟之前,要確認配置文件是否正確

[root@localhost ~]# kill -HUP 【nginx主進程號】

  當 nginx 接收到 HUP 信號時,它會嘗試先解析配置文件,如果成功,就應用新的配置文件(例如,重新打開日誌文件或監聽的套接字)。之後,nginx 運行新的工作進程並從容關閉舊的工作進程。通知工作進程關閉監聽套接字,但是繼續為當前連接的客戶提供服務。所有的客戶端的服務完成後,舊的工作進程被關閉。如果新的配置文件應用失敗,nginx 將繼續使用舊的配置文件進行工作。

nginx的平滑升級

  當需要將正在運行中的nginx升級、添加/刪除伺服器模塊時,可以在不中斷服務的情況下,使用新的nginx可執行程式替換舊的:

  1.使用新的可執行程式替換舊的可執行程式,對於編譯安裝的nginx,可以將新版本編譯安裝到nginx安裝路徑中,替換之前,備份一下舊的可執行文件

  2.發送以下指令:

[root@localhost ~]# kill -USR2 【舊版本的nginx主進程號】

  3.舊版本的nginx的主進程將重命名它的pid文件為.oldbin(例如:/usr/local/nginx/logs/nginx.pid.oldbin),然後執行新版本的nginx可執行程式,依次啟動新的主進程和新的工作進程。

  4.此時,新、舊版本的nginx實例會同時運行,共同處理輸入的請求,要逐步停止舊版本的nginx,必鬚髮送WINCH信號給舊的主進程,然後,它的工作進程就開始從容關閉:

[root@localhost ~]# kill -WINCH 【舊版本的nginx主進程號】

  5.一段時間後,舊的工作進程(worker process)處理了所有已連接的請求後退出,僅由新的工作進程來處理輸入的請求了。

  6.這時候,可以決定是使用新版本,還是恢復到舊版了:

    kill -HUP  【舊的主進程號】:nginx將在不重載配置文件的情況下啟動它的工作進程

    kill -QUIT 【新的主進程號】:從容關閉其工作進程(worker process)

    kill -TERM 【新的主進程號】:強制退出

    kill 【新的主進程號或舊的主進程號】:如果因為某些原因新的工作進程不能退出,則向其發送kill信號

  新的主進程退出後,舊的主進程會移除.oldbin首碼,恢復為它的.pid文件,這樣,一切就都恢復到升級之前了。

   如果嘗試升級成功,而你也希望保留新的伺服器時,可發送QUIT信號給舊的主進程,使其退出而只留下新的伺服器運行。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • MariaDB資料庫管理系統是MySQL的一個分支,主要由開源社區在維護,採用GPL授權許可 MariaDB的目的是完全相容MySQL,包括API和命令行,使之能輕鬆成為MySQL的代替品。在存儲引擎方面,使用XtraDB(英語:XtraDB)來代替MySQL的InnoDB。 MariaDB由MyS ...
  • MySQL中lock tables和unlock tables淺析 在MySQL中提供了鎖定表(lock tables)和解鎖表(unlock tables)的語法功能,ORACLE與SQL Server資料庫當中沒有這種語法。相信剛接觸MySQL的人,都想詳細、深入的瞭解一下這個功能.下麵就儘量全... ...
  • 本篇主要介紹MongoDB可視化操作以及shell使用及命令。 MongoVUE安裝和簡單使用 使用mongo.exe 管理資料庫雖然可行,功能也挺強大,但每次都要敲命令,即繁瑣枯燥而且效率低下。MongoDb在Windows下的可視化操作的管理工具非常多,筆者從中找了幾款使用了一翻,最後挑了一款M ...
  • 1、基本構成 (1)需要查詢的表(單表,多表) (2)需要查詢的信息(欄位信息,過濾處理) (3)查詢條件(欄位關聯,欄位值範圍,記錄截取設置,排序方式,分組方式,去重,or ,and) 2、實例展示(以user表為例) 2.1查詢單表(user) (1)查詢單表所有欄位 select * from ...
  • 轉自:http://cheneyph.iteye.com/blog/824746 系統 資源 磁碟和分區 網路 進程 用戶 服務 程式 ...
  • 如有錯誤希望各位大佬批評指正,郵件請發:[email protected] ...
  • 下麵來說說如何用不用消息隊列來進行進程間的通信,消息隊列與命名管道有很多相似之處。有關命名管道的更多內容可以參閱我的另一篇文章:Linux進程間通信——使用命名管道 一、什麼是消息隊列 消息隊列提供了一種從一個進程向另一個進程發送一個數據塊的方法。 每個數據塊都被認為含有一個類型,接收進程可以獨立地 ...
  • 配置vim配置 編輯配置文件 配置如下 主要配置為自動換行,設置行號,設置tab鍵為4個空格,同時將tab鍵自動轉換成空格 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...