<em id="1rarx"><ins id="1rarx"></ins></em><sup id="1rarx"></sup>

<progress id="1rarx"><tr id="1rarx"></tr></progress>
<sup id="1rarx"><menu id="1rarx"></menu></sup>
<menuitem id="1rarx"></menuitem><optgroup id="1rarx"><small id="1rarx"><sub id="1rarx"></sub></small></optgroup>

    <sup id="1rarx"><menu id="1rarx"></menu></sup>
    <div id="1rarx"></div><div id="1rarx"><tr id="1rarx"><object id="1rarx"></object></tr></div>
      <em id="1rarx"></em>

          運行和控制Nginx

          2012年7月20日 發表評論 閱讀評論
          1. Nginx命令行選項
          2. 啟動、停止、重啟nginx命令
          3. 如何重新加載nginx配置文件
          4. nginx程序不重啟平滑升級可執行文件

           

          nginx命令行參數

          不像許多其他軟件系統,Nginx 僅有幾個命令行參數,完全通過配置文件來配置

          -c </path/to/config> 為 Nginx 指定一個配置文件,來代替缺省的。

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

          -v 顯示 nginx 的版本。

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

           

          nginx控制信號

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

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

          TERM, INT 快速關閉
          QUIT 從容關閉
          HUP 重載配置
          用新的配置開始新的工作進程
          從容關閉舊的工作進程
          USR1 重新打開日志文件
          USR2 平滑升級可執行程序。
          WINCH 從容關閉工作進程

          盡管你不必自己操作工作進程,但是,它們也支持一些信號:

          TERM, INT 快速關閉
          QUIT 從容關閉
          USR1 重新打開日志文件

           

          nginx 啟動、停止、重啟命令

          nginx啟動

          sudo /usr/local/nginx/nginx ? ? (nginx二進制文件絕對路徑,可以根據自己安裝路徑實際決定)

           

          nginx從容停止命令,等所有請求結束后關閉服務

          ps -ef |grep nginx

          kill -QUIT ?nginx主進程號

           

          nginx 快速停止命令,立刻關閉nginx進程

          ps -ef |grep nginx

          kill -TERM nginx主進程號?

          如果以上命令不管用,可以強制停止

          kill -9 nginx主進程號

           

          如果嫌麻煩可以不用查看進程號,直接使用命令進行操作
          其中/usr/local/nginx/nginx.pid 為nginx.conf中pid命令設置的參數,用來存放nginx主進程號的文件
          kill -信號類型(HUP|TERM|QUIT) cat /usr/local/nginx/nginx.pid
          例如

          nginx重啟命令

          nginx重啟可以分成幾種類型

          1.簡單型,先關閉進程,修改你的配置后,重啟進程。
          kill -QUIT cat /usr/local/nginx/nginx.pid
          sudo /usr/local/nginx/nginx
          2.重新加載配置文件,不重啟進程,不會停止處理請求
          3.平滑更新nginx二進制,不會停止處理請求

           

          使用信號加載新的配置

          Nginx 支持幾個信號,能在它運行時控制其操作。其中最普通的是 15 ,用來中止運行的進程:

          而最有趣的是能平滑改變 nginx 配置的選項(請注意,在重載前,要先測試一下配置文件):

           

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

           

          平滑升級到新的二進制代碼

          你可以在不中斷服務的情況下 - 新的請求也不會丟失,使用新的 nginx 可執行程序替換舊的(當升級新版本或添加/刪除服務器模塊時)。

          首先,使用新的可執行程序替換舊的(最好做好備份),然后,發送 USR2 (kill -USR2 pid)信號給主進程。主進程將重命名它的 .pid 文件為 .oldbin (比如:/usr/local/nginx/logs/nginx.pid.oldbin),然后執行新的可執行程序,依次啟動新的主進程和新的工作進程:

           

          在這時,兩個 nginx 實例會同時運行,一起處理輸入的請求。要逐步停止舊的實例,你必須發送 WINCH 信號給舊的主進程,然后,它的工作進程就將開始從容關閉:

           

          一段時間后,舊的工作進程處理了所有已連接的請求后退出,就僅由新的工作進程來處理輸入的請求了:

           

          這時,因為舊的服務器還尚未關閉它監聽的套接字,所以,通過下面的幾步,你仍可以恢復舊的服務器:

          • 發送 HUP 信號給舊的主進程 - 它將在不重載配置文件的情況下啟動它的工作進程
          • 發送 QUIT 信號給新的主進程,要求其從容關閉其工作進程
          • 發送 TERM 信號給新的主進程,迫使其退出
          • 如果因為某些原因新的工作進程不能退出,向其發送 KILL 信號

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

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

           

          1. 大木爻手
            2018年10月17日10:47 | #1

            啟動不是直接 nginx
            退出不是 nginx -s stop
            為什么文章要寫的這么麻煩,殺線程?

          2. 2018年2月1日18:03 | #2

            學習了。不錯。

          3. 2017年10月24日15:44 | #3

            abc :
            這個不錯

          4. 2017年5月31日10:04 | #4

            不錯,頂一個!!!!

          5. 2016年9月12日17:18 | #5

            有用!!!

          6. 2015年6月24日12:01 | #6

            ngnix :sudo service nginx configtest
            [FAIL] Testing nginx configuration: failed !

          7. ternus
            2015年6月13日20:02 | #7

            學習了,平滑升級這點命令有點少啊。

          8. abc
            2015年4月1日21:16 | #8

            這個不錯

          9. 2015年2月9日15:02 | #9

            嗯 這一條很好,很重要

          10. Echo
            2014年1月13日22:33 | #10

            Nice~!

          11. pinefantasy
            2013年11月27日18:58 | #11

            通過傳遞參數給 ./configure 或使用 pid 指令,來改變該文件的位置。---這個沒看懂,記住pid做什么呢

            • mood
              2013年11月27日21:32 | #12

              重啟或者關閉的時候會讀pid

            • 2014年4月15日07:36 | #13

              方便信號控制進程,不用每次都ps -ef |grep nginx來查看nginx的pid

          12. dayphosphor
            2013年10月15日17:39 | #14

            超不錯~~

          13. jay61439476
            2012年12月24日10:09 | #15

            不錯 這對實際生產很有幫助

          印度快乐8官网
          <em id="1rarx"><ins id="1rarx"></ins></em><sup id="1rarx"></sup>

          <progress id="1rarx"><tr id="1rarx"></tr></progress>
          <sup id="1rarx"><menu id="1rarx"></menu></sup>
          <menuitem id="1rarx"></menuitem><optgroup id="1rarx"><small id="1rarx"><sub id="1rarx"></sub></small></optgroup>

            <sup id="1rarx"><menu id="1rarx"></menu></sup>
            <div id="1rarx"></div><div id="1rarx"><tr id="1rarx"><object id="1rarx"></object></tr></div>
              <em id="1rarx"></em>

                  <em id="1rarx"><ins id="1rarx"></ins></em><sup id="1rarx"></sup>

                  <progress id="1rarx"><tr id="1rarx"></tr></progress>
                  <sup id="1rarx"><menu id="1rarx"></menu></sup>
                  <menuitem id="1rarx"></menuitem><optgroup id="1rarx"><small id="1rarx"><sub id="1rarx"></sub></small></optgroup>

                    <sup id="1rarx"><menu id="1rarx"></menu></sup>
                    <div id="1rarx"></div><div id="1rarx"><tr id="1rarx"><object id="1rarx"></object></tr></div>
                      <em id="1rarx"></em>