新随笔  :: 管理

Nginx热部署/升级/回滚

Posted on 2021-11-08 22:43  SliverLee  阅读(138)  评论(0)    收藏  举报

操作之前,请先通读全文,条件允许,可以在测试机先测试!!!!


 

一、操作流程预览

1、操作前先备份

2、将旧nginx文件换成新的nginx二进制文件;

3、向master进程发送USR2信号;

4、master进程修改pid文件名,加后缀.old;

5、master进程用新nginx文件后启动新master进程

6、向老master进程发送WINCH信号,关闭老worker进程;

7、回滚:向老master发送HUP信号,向新master发送QUIT;

####安装nginx流程,请参考我另一篇文章https://www.cnblogs.com/SliverLee/articles/13573831.html

二、备份文件和程序

 

 

 程序备份

     cp -rp sbin/nginx nginx.od

 pid文件备份

      cp -rp logs/nginx.pid nginx.pid.old

三、升级Nginx程序

3.1 查看Niginx状态

 

 

 3.2 编译安装新版本Nginx

cd ~/tools

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

tar zxf nginx-1.20.1.tar.gz 

cd nginx-1.20.1 && ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/root/tools/pcre-8.35

make 

注意这里,只需要make,不要make install

3.3 替换旧程序

cd ~/tools/nginx-1.20.1 

[root@MasterHost01 nginx-1.20.1]# ./objs/nginx -v
nginx version: nginx/1.20.1

 

更新程序

[root@MasterHost01 nginx-1.20.1]# cp -rpf ./objs/nginx /usr/local/webserver/nginx/sbin/
cp: overwrite ‘/usr/local/webserver/nginx/sbin/nginx’? yes
[root@MasterHost01 nginx-1.20.1]# /usr/local/webserver/nginx/sbin/nginx -v
nginx version: nginx/1.20.1

 

3.4 发送升级信号给进程号

# kill -USR2 19513  #master线程

 

 测试,网页访问正常

3.5 优雅关闭老线程work

# kill -WINCH  19513

 

 3.6 升级完成,如果升级之后,发现有问题,可以及时回滚

 保留旧master线程,可以用作回滚使用,如果确认不需要,可以kill掉

四、回滚Nginx 版本

4.1 回滚备份程序

cd /usr/local/webserver/nginx/sbin/

cp -rp nginx.old nginx -f

4.2 生成新的进程

# kill -HUP 25193

# kill -QUIT 25193

 

 master进程回滚到19513,worker进程重启,访问页面正常,回滚操作完成.