有時候咱們可能須要對Nginx進行升級,例如檢測到Nginx漏洞,或者由於業務須要等狀況。
下面我就來講一下Nginx平滑升級步驟
整個升級過程當中,無需中止Nginx服務,不會影響到業務
需求模擬:nginx-1.18.0 =》nginx-1.19.0
環境說明:
系統版本:Centos7.7
Nginx版本:nginx-1.18.0nginx
(一)編譯新版本nginxxcode
注意:無需執行make install,一旦執行make install會致使原nginx程序異常
如需驗證nginx業務是否有受到影響,請跳轉至第三步bash
tar -zxvf nginx-1.19.0.tar.gz cd nginx-1.19.0/ ./configure --prefix=/usr/local/nginx make mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak #原nginx可執行文件備份 cp objs/nginx /usr/local/nginx/sbin/nginx #新版本的nginx編譯後,會在objs目錄下生成一個可執行nginx文件,使用該文件代替原nginx可執行文件 make upgrade #執行升級,原nginx要求使用絕對路徑運行,以下圖。執行到這裏就算是升級完成了
(二)確認是否升級成功curl
比較簡單的辦法,就是直接nginx -V查看一下版本信息,以下。能夠能夠看到升級到1.19版本了ide
[root@bp nginx-1.19.0]# /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.19.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) configure arguments: --prefix=/usr/local/nginx
(三)驗證nginx業務是否受到影響ui
我寫了個腳本檢測nginx頁面返回碼,以下url
[root@bp ~]# cat nginxcode.sh #!/bin/bash while (true) do curl --silent -I 106.13.13.242|grep 200 >> code.txt done [root@bp ~]# nohup ./nginxcode.sh &
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
。。。
在平滑升級過程當中,另開一個窗口查看腳本輸出狀況,該腳本正常狀況下會一直輸出200返回碼,即說明nginx業務未受影響code