nginx實現熱部署(平滑升級)


這里我們使用的是上一篇文章封裝好的rhel7.3的虛擬機,主機名修改成了server1

環境:

          虛擬機server1:rhel7.3系統

          軟件:nginx-1.14.2.tar.gz、nginx-1.15.8.tar.gz  ==> 點擊下載

我們這里的思想是熱部署將nginx-1.14.2版本升級到nginx-1.15.8

整個熱部署的思想是

修改配置文件nginx.conf后,重新生成新的worker進程,當然會以新的配置進行處理請求,而且新的請求必須都交給新的worker進程,至於老的worker進程,等把那些以前的請求處理完畢后,kill掉即可。

1.編譯安裝nginx(舊版本)

這里我使用lftp將兩個包放在了封裝好已經可以使用的虛擬機上,只需要解壓編譯安裝即可

  1.  
    tar zxf nginx-1.14.2.tar.gz
  2.  
    yum install gcc zlib-devel pcre-devel -y
  3.  
    cd nginx-1.14.2
  4.  
    vim auto/cc/gcc ##屏蔽其中的debug
  5.  
    ./configure --prefix=/usr/ local/nginx
  6.  
    make&&make install

這樣nginx就成功的安裝在了server1上了,此時我們可以查看nginx的版本

/usr/local/nginx/sbin/nginx -v

開啟nginx

/usr/local/nginx/sbin/nginx

2.編譯新的nginx版本,並獲取二進制文件

  1.  
    tar zxf nginx-1.15.8.tar.gz
  2.  
    cd nginx-1.14.2
  3.  
    vim auto/cc/gcc ##屏蔽其中的debug
  4.  
    ./configure - -prefix=/usr/local/nginx  #路徑和之前安裝一樣
  5.  
    make ##切忌不要make install
  6.  
    cd objs
  7.  
    ls ##如下圖所示,nginx是我們需要的二進制文件

 

3.熱部署

我們可以使用以下命令查看nginx的進程

ps -ef |grep nginx	##查看nginx的進程

開始之前,我們首先要進行一個備份,回滾的時候會用到

  1.  
    cd /usr/local/nginx/sbin
  2.  
    cp nginx nginx.old ##這樣就備份了老的nginx

結下來就可以進行部署了

  1.  
    cp -f /root/nginx-1.15.8/objs/nginx /usr/ local/nginx/sbin/
  2.  
    kill -USR2 2086 ##相當於reload
  3.  
    ps -ef | grep nginx
  4.  
    kill -WINCH 2086 ##相當於kill -9
  5.  
    ps -ef | grep nginx
  6.  
    /usr/ local/nginx/sbin/nginx -v

如上圖所示,當我們替換掉nginx二進制文件以后,我們使用kill -USR2使新的nginx上線,然后使用kill -WINCH命令殺掉原來的進程,查看版本號,就已經是1.15了

4.回滾

如果我們發現升級有問題,我們想回滾怎么辦呢?

  1.  
    cp -f /usr/ local/nginx/sbin/nginx.old /usr/local/nginx/sbin/nginx
  2.  
    ps -ef |grep nginx

  1.  
    kill -HUP 2104
  2.  
    ps -ef |grep nginx
  3.  
    kill -USR2 2104
  4.  
    kill -WINCH 2104
  5.  
    ps -ef |grep nginx
  6.  
    /usr/ local/nginx/sbin/nginx -v

這樣就回滾回了1.14版本

ok~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM