操作之前,请先通读全文,条件允许,可以在测试机先测试!!!!
一、操作流程预览
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进程重启,访问页面正常,回滚操作完成.
浙公网安备 33010602011771号