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版本