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