<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 運行和控制Nginx ### nginx命令行參數 不像許多其他軟件系統,Nginx 僅有幾個命令行參數,完全通過配置文件來配置 -c </path/to/config> **為 Nginx 指定一個配置文件,來代替缺省的。** **-t** 不運行,而僅僅測試配置文件。nginx 將檢查配置文件的語法的正確性,并嘗試打開配置文件中所引用到的文件。 **-v** 顯示 nginx 的版本。 **-V** 顯示 nginx 的版本,編譯器版本和配置參數。 ? ### nginx控制信號 可以使用信號系統來控制主進程。默認,nginx 將其主進程的 pid 寫入到 /usr/local/nginx/nginx.pid 文件中。通過傳遞參數給 ./configure 或使用 **pid** 指令,來改變該文件的位置。 主進程可以處理以下的信號: <table><tbody><tr><td>TERM, INT</td> <td>快速關閉</td> </tr><tr><td>QUIT</td> <td>從容關閉</td> </tr><tr><td>HUP</td> <td>重載配置<br/> 用新的配置開始新的工作進程<br/> 從容關閉舊的工作進程</td> </tr><tr><td>USR1</td> <td>重新打開日志文件</td> </tr><tr><td>USR2</td> <td>平滑升級可執行程序。</td> </tr><tr><td>WINCH</td> <td>從容關閉工作進程</td> </tr></tbody></table> 盡管你不必自己操作工作進程,但是,它們也支持一些信號: | 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` 例如 ~~~ kill?-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 ,用來中止運行的進程: ~~~ #?<strong>ps?aux?|?egrep?'(PID|nginx)'</strong> USER???????PID?%CPU?%MEM????VSZ???RSS?TTY??????STAT?START???TIME?COMMAND root??????2213??0.0??0.0???6784??2036??????????Ss???03:01???0:00?nginx:?master?process?/usr/sbin/nginx?-c?/etc/nginx/nginx.conf #?<strong>kill?-15?2213</strong> ~~~ 而最有趣的是能平滑改變 nginx 配置的選項(請注意,在重載前,要先測試一下配置文件): ? ~~~ #<strong>?nginx?-t?-c?/etc/nginx/nginx.conf</strong> 2006/09/16?13:07:10?[info]?15686#0:?the?configuration?file?/etc/nginx/nginx.conf?syntax?is?ok 2006/09/16?13:07:10?[info]?15686#0:?the?configuration?file?/etc/nginx/nginx.conf?was?tested?successfully #<strong>?ps?aux?|?egrep?'(PID|nginx)'</strong> USER???????PID?%CPU?%MEM????VSZ???RSS?TTY??????STAT?START???TIME?COMMAND root??????2213??0.0??0.0???6784??2036??????????Ss???03:01???0:00?nginx:?master?process?/usr/sbin/nginx?-c?/etc/nginx/nginx.conf <strong>#?kill?-HUP?2213</strong> ~~~ 當 nginx 接收到 HUP 信號,它會嘗試先解析配置文件(如果指定配置文件,就使用指定的,否則使用默認的),成功的話,就應用新的配置文件(例如:重新打開日志文件或監聽的套接 字)。之后,nginx 運行新的工作進程并從容關閉舊的工作進程。通知工作進程關閉監聽套接字但是繼續為當前連接的客戶提供服務。所有客戶端的服務完成后,舊的工作進程被關閉。 如果新的配置文件應用失敗,nginx 將繼續使用舊的配置進行工作。 ? ### 平滑升級到新的二進制代碼 你可以在不中斷服務的情況下 - 新的請求也不會丟失,使用新的 nginx 可執行程序替換舊的(當升級新版本或添加/刪除服務器模塊時)。 首先,使用新的可執行程序替換舊的(最好做好備份),然后,發送 USR2 (kill -USR2 pid)信號給主進程。主進程將重命名它的 **.pid** 文件為 **.oldbin** (比如:**/usr/local/nginx/logs/nginx.pid.oldbin**),然后執行新的可執行程序,依次啟動新的主進程和新的工作進程: ? ~~~ ??PID??PPID?USER????%CPU???VSZ?WCHAN??COMMAND 33126?????1?root?????0.0??1164?pause??nginx:?master?process?/usr/local/nginx/sbin/nginx 33134?33126?nobody???0.0??1368?kqread?nginx:?worker?process?(nginx) 33135?33126?nobody???0.0??1380?kqread?nginx:?worker?process?(nginx) 33136?33126?nobody???0.0??1368?kqread?nginx:?worker?process?(nginx) 36264?33126?root?????0.0??1148?pause??nginx:?master?process?/usr/local/nginx/sbin/nginx 36265?36264?nobody???0.0??1364?kqread?nginx:?worker?process?(nginx) 36266?36264?nobody???0.0??1364?kqread?nginx:?worker?process?(nginx) 36267?36264?nobody???0.0??1364?kqread?nginx:?worker?process?(nginx) ~~~ 在這時,兩個 nginx 實例會同時運行,一起處理輸入的請求。要逐步停止舊的實例,你必須發送 WINCH 信號給舊的主進程,然后,它的工作進程就將開始從容關閉: ? ~~~ ??PID??PPID?USER????%CPU???VSZ?WCHAN??COMMAND 33126?????1?root?????0.0??1164?pause??nginx:?master?process?/usr/local/nginx/sbin/nginx 33135?33126?nobody???0.0??1380?kqread?nginx:?worker?process?is?shutting?down?(nginx) 36264?33126?root?????0.0??1148?pause??nginx:?master?process?/usr/local/nginx/sbin/nginx 36265?36264?nobody???0.0??1364?kqread?nginx:?worker?process?(nginx) 36266?36264?nobody???0.0??1364?kqread?nginx:?worker?process?(nginx) 36267?36264?nobody???0.0??1364?kqread?nginx:?worker?process?(nginx) ~~~ 一段時間后,舊的工作進程處理了所有已連接的請求后退出,就僅由新的工作進程來處理輸入的請求了: ? ~~~ ??PID??PPID?USER????%CPU???VSZ?WCHAN??COMMAND 33126?????1?root?????0.0??1164?pause??nginx:?master?process?/usr/local/nginx/sbin/nginx 36264?33126?root?????0.0??1148?pause??nginx:?master?process?/usr/local/nginx/sbin/nginx 36265?36264?nobody???0.0??1364?kqread?nginx:?worker?process?(nginx) 36266?36264?nobody???0.0??1364?kqread?nginx:?worker?process?(nginx) 36267?36264?nobody???0.0??1364?kqread?nginx:?worker?process?(nginx) ~~~ 這時,因為舊的服務器還尚未關閉它監聽的套接字,所以,通過下面的幾步,你仍可以恢復舊的服務器: - 發送 HUP 信號給舊的主進程 - 它將在不重載配置文件的情況下啟動它的工作進程 - 發送 QUIT 信號給新的主進程,要求其從容關閉其工作進程 - 發送 TERM 信號給新的主進程,迫使其退出 - 如果因為某些原因新的工作進程不能退出,向其發送 KILL 信號 新的主進程退出后,舊的主進程會由移除 **.oldbin** 前綴,恢復為它的 **.pid** 文件,這樣,一切就都恢復到升級之前了。 如果嘗試升級成功,而你也希望保留新的服務器時,發送 QUIT 信號給舊的主進程使其退出而只留下新的服務器運行: ? ~~~ ??????PID??PPID?USER????%CPU???VSZ?WCHAN??COMMAND ????36264?????1?root?????0.0??1148?pause??nginx:?master?process?/usr/local/nginx/sbin/nginx ????36265?36264?nobody???0.0??1364?kqread?nginx:?worker?process?(nginx) ????36266?36264?nobody???0.0??1364?kqread?nginx:?worker?process?(nginx) ????36267?36264?nobody???0.0??1364?kqread?nginx:?worker?process?(nginx) ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看