Nginx 平滑升级

认识平滑升级

有时候我们需要对Nginx版本进行升级以满足运维人员对其功能的需求,例如添加xxx模块,需要xxx功能,而此时Nginx又在跑着业务无法停掉,这时我们就只能平滑升级了。

平滑升级原理

Nginx服务接收到USR2信号后,将Nginx.pid文件添加.oldbin变成nginx.pid.oldbin文件;然后执行新版本Nginx服务器的二进制文件启动服务,如果新的服务启动成功,系统中将有新旧两个Nginx主进程共同提供Web服务,之后,需要向旧的Nginx服务进程发送WINCH信号,使旧的Nginx服务平滑停止,并删除Nginx.pid.oldbin文件。

Nginx信号简介

1.主进程支持的信号
TERM, INT: 立刻退出
QUIT: 等待工作进程结束后再退出
HUP: 重新加载配置文件,使用新的配置启动工作进程,并逐步关闭旧进程。
USR1: 重新打开日志文件
USR2: 启动新的主进程,实现热升级
WINCH: 逐步关闭工作进程
2.工作进程支持的信号
TERM, INT: 立刻退出
QUIT: 等待请求处理结束后再退出
USR1: 重新打开日志文件

进行平滑升级

1.当前环境

System:CentOS-7.5
Nginx:1.12.0

2.查看当前版本并下载新版本Nginx

/usr/local/nginx/sbin/nginx -v
$nginx version: nginx/1.12.0
wget -c http://nginx.org/download/nginx-1.16.0.tar.gz
下载的版本为nginx-1.16.0

3.开始平滑升级

tar -xzf nginx-1.16.0.tar.gz
解压源码包
cd nginx-1.16.0
./configure --prefix=/usr/local/nginx/–with-http_stub_status_module --with-http_ssl_module
进入源码包内执行预编译
在这里插入图片描述

预编译结果如上图所示,即可执行编译。。。

make
执行编译,切记不要安装也就是不要去执行 make install

对Nginx执行文件进行更新

cd /usr/local/nginx/sbin
进入nginx的执行文件目录内
mv nginx nginx.old
将旧版本Nignx执行文件备份为nginx.old
cp /root/nginx-1.16.0/objs/nginx .
将新版本Nginx执行文件移动到当前目录内

进行平滑重启

/usr/local/nginx/sbin/nginx -t
检测新版本Nginx是否正常 正常为 successful
ps -ef|grep nginx
查看旧版本nginx进程
在这里插入图片描述

kill -USR2 4428
向主进程发送USR2信号,Nginx会启动一个新版本的master进程和工作进程,和旧版一起处理请求
在这里插入图片描述

此时再次查看Nginx进程就发现有俩Nginx在工作

kill -WITCH 4428
向原Nginx主进程发送WINCH信号,它会逐步关闭旗下的工作进程(主进程不退出),这时所有请求都会由新版Nginx处理
kill -QUIT cat /usr/local/nginx/logs/nginx.pid.oldbin
杀死旧版本Nginx主进程或者 kill -9 2248 也可以
/usr/local/nginx/sbin/nginx -v
$ ouput:nginx version: nginx/1.16.0

Nginx平滑升级结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值