nginx 平滑升级与回滚

1 当前nginx版本

[root@wyl-001]# /usr/local/nginx-1.14/sbin/nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
configure arguments: --prefix=/usr/local/nginx-1.14

2.升级操作

[root@wyl-001]# cd /usr/local/nginx-1.18.0/
[root@wyl-001]# ./configure --prefix=/usr/local/nginx-1.14/sbin/
[root@wyl-001]# make

版本升级其实就是针对二进制文件的升级,过程如下:

#备份旧版本nginx二进制文件
[root@wyl-001 opt]# cd /usr/local/nginx-1.14/sbin
[root@wyl-001 sbin]# mv nginx nginx.bak
#拷贝新版本的二进制文件到当前目录
[root@wyl-001 sbin]# cd /usr/local/nginx-1.18.0/objs
[root@wyl-001 objs]# cp nginx /usr/local/nginx-1.14/sbin/

主进程支持的信号Nginx信号简介

  • TERMINT: 立刻退出
  • QUIT: 等待工作进程结束后再退出
  • KILL: 强制终止进程
  • HUP: 重新加载配置文件,使用新的配置启动工作进程,并逐步关闭旧进程。
  • USR1: 重新打开日志文件
  • USR2: 启动新的主进程,实现热升级
  • WINCH: 逐步关闭工作进程

接下来进行平滑升级操作

[root@wyl-001 objs]# ps -ef|grep nginx
root 4637 1 0 2021 ? 00:00:03 nginx: master process ./sbin/nginx
nobdy 10229 4637 0 2021 ? 01:49:08 nginx: worker process
nobody 10230 4637 0 2021 ? 01:48:44 nginx: worker process
。。。


[root@wyl-001 objs]# kill -USR2 4637
# 查看有一个新的进程号
[root@wyl-001 objs]# ps -ef|grep nginx

这时新的master进程已经正常开启,但老的work进程也存在,所以我们使用下面的命令,将老的work进程发出平滑停止的信号,如下:

[root@wyl-001 objs]# kill -WINCH 4637

查看服务和日志是否都是正常的,如果都是正常的那么nginx热升级就已经完成了。

如果在版本升级完成后,没有任何问题,就可以关闭老的master进程

[root@wyl-001 objs]# kill -QUIT 4637

 

3 回滚操作

在上面的结果中,我们也能看到老的master进程是一直存在,在没有手工关闭前,它是不会自已关闭的,如果出现问题能及时快速的回滚到上一个稳定版本。

[root@wyl-001 objs]# cd /usr/local/nginx-1.14/sbin/
[root@wyl-001 sbin]# mv nginx.bak nginx
[root@wyl-001 sbin]# kill -USR1 4637

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值