Nginx平滑升级
有时候我们可能需要对Nginx进行升级,例如检测到Nginx漏洞,或者因为业务需要等情况。
下面我就来说一下Nginx平滑升级步骤
整个升级过程中,无需停止Nginx服务,不会影响到业务
需求模拟:nginx-1.18.0 =》nginx-1.19.0
环境说明:
系统版本:Centos7.7
Nginx版本:nginx-1.18.0
(一)编译新版本nginx
注意:无需执行make install,一旦执行make install会导致原nginx程序异常
如需验证nginx业务是否有受到影响,请跳转至第三步
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要求使用绝对路径运行,如下图。执行到这里就算是升级完成了
(二)确认是否升级成功
比较简单的办法,就是直接nginx -V查看一下版本信息,如下。可以可以看到升级到1.19版本了
[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业务是否受到影响
我写了个脚本检测nginx页面返回码,如下
[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业务未受影响