Nginx 啓動、停止、平滑重啓和平滑升級

啓動操作

     
      # nginx -c /usr/local/nginx/conf/nginx.conf

-c參數指定了要加載的nginx配置文件路徑


停止操作
停止操作是通過向nginx進程發送信號(什麼是信號請參閱Linux文 章)來進行的
步驟1:查詢nginx主進程號


       # ps -ef | grep nginx

在進程列表裏 面找master進程,它的編號就是主進程號了。
步驟2:發送信號
從容停止Nginx:
    
        # kill -QUIT 主進程號  
快速停止Nginx:


        # kill -TERM 主進程號  
強制停止Nginx:


        # pkill -9 主進程號  
另外, 若在nginx.conf配置了pid文件存放路徑則該文件存放的就是Nginx主進程號,如果沒指定則放在nginx的logs目錄下。有了pid文 件,我們就不用先查詢Nginx的主進程號,而直接向Nginx發送信號了,命令如下:

        # kill -信號類型
'/usr/local/nginx/logs/nginx.pid'  



平滑重啓
如果更改了配置就要重啓Nginx,要先關閉Nginx再打開?不是的,可以向Nginx 發送信號,平滑重啓。
平滑重啓命令:



        # kill -HUP 住進稱號或進程號文件路徑  

或者使用



         # /usr/local/nginx/sbin/nginx -s reload  

注意,修改了配置文件後最好先檢查一下修改過的配置文件是否正 確,以免重啓後Nginx出現錯誤影響服務器穩定運行。判斷Nginx配置是否正確命令如下:



         # nginx -t -c /usr/local/nginx/conf/nginx.conf  

或者



          # /usr/local/nginx/sbin/nginx -t 

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

 

補充內容:nginx的幾種信號

TERM,INT 快速關閉

QUIT 從容關閉

HUP 平滑重啓,重新加載配置文件

USR1 重新打開日誌文件,在切割日誌時用途較大

USR2 平滑升級可執行程序

WINCH 從容關閉工作進程


平滑升級



Nginx方便地幫助我們實現了平滑升級。其原理簡單概括,就是:
(1)在不停掉老進程的情況下,啓動新進程。
(2)老進程負責處理仍然沒有處理完的請求,但不再接受處理請求。
(3)新進程接受新請求。
(4)老進程處理完所有請求,關閉所有連接後,停止。
這樣就很方便地實現了平滑升級。一般有兩種情況下需要升級Nginx,一種是確實要升級Nginx的版本,另一種是要爲Nginx添加新的模塊。


平滑升級命令:

         cd /mnt

下載nginx升級包

        wget http://nginx.org/download/nginx-1.10.2.tar.gz

解壓升級包

        tar zxvf nginx-1.10.2.tar.gz

        cd  nginx-1.10.2/

查看當前版本得到編譯參數

        /usr/local/nginx/sbin/nginx -V


用上面編譯參數

       ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-ipv6 --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-openssl=../openssl-1.0.2j --with-pcre=../pcre-8.39 --with-pcre-jit --with-ld-opt='-ljemalloc'

然後make,千萬別make install

make完了 在objs目錄下就多了個nginx,這個就是新版本的程序了

備份原nginx文件

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-2017110

將新生成nginx執行文件複製到nginx/sbin下

cp objs/nginx /usr/local/nginx/sbin/nginx

檢測配置文件是否正確

/usr/local/nginx/sbin/nginx -t

執行升級

make upgrade

執行完後

/usr/local/nginx/sbin/nginx -V

到此就完成平滑升級。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章