nginx平滑升级及回滚

nginx平滑升级及回滚

1.查看当前nginx版本

[root@iZ2zehdwq9kcuuz64a2m21Z ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-pcre

2.下载新版本nginx

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

3.解压安装编译

tar -xvf nginx-1.18.0.tar.gz -C /usr/local/
cd /usr/local/
cd nginx-1.18.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-pcre
make               (不要install,否则会覆盖)

4.升级新版nginx二进制程序

当前目录下有objs目录,进入objs目录复制新的nginx到nginx安装目录

mv /usr/local/nginx/sbin/nginx      /usr/local/nginx/sbin/nginx.bak
cp objs/nginx     /usr/local/nginx/sbin/

5.平滑重启nginx

/usr/local/nginx/sbin/nginx  -t
查看nginx  pid
ps -ef | grep nginx
cat /usr/local/nginx/logs/nginx.pid
kill -USR2  `cat /usr/local/nginx/logs/nginx.pid`

如果在版本升级完成之后,没有任何的问题,需要关闭老的master进程的话,只需要发出QUIT信号即可

kill -QUIT old_master_PID

6.查看是否更新成功

[root@iZ2zehdwq9kcuuz64a2m21Z ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-pcre

7.回滚到旧版本

之前老的master进程一直存在,如果不手动关闭,它不会自己关闭,正好利用这种设计,在发生问题时,及时回滚到旧版。

cd /usr/local/nginx/sbin/
mv  nginx     nginx.bak2
mv  nginx.bak  nginx
kill  -USR1  7173

查看nginx版本

原文地址:https://www.cnblogs.com/haoee/p/15497770.html