在生产环境中对Nginx平滑升级

环境

服务器:192.168.10.181

系统:CentOS 6.0

当前Nginx版本:1.0.8

升级nginx版本:1.1.5

操作过程

1、切换至root用户

在生产环境中对Nginx平滑升级_第1张图片

2、查看当前运行的Nginx的主进程

[root@Nginx canyouNgx]# ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}'

3、备份旧版本

[root@Nginx canyouNgx]# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

4、解压Nginx-1.1.5源码包,执行模块配置

[root@Nginx nginx-1.1.5]# ./configure

5、编译安装新版本

[root@Nginx nginx-1.1.5]# make && make install

6、启动新版本的Nginx

发送 USR2 信号到旧版本的 PID,这样做会启动新版本,但是旧版本也不会退出, 两个版本会同时运行

[root@Nginx nginx-1.1.5]# kill -USR2 6294

7、关闭旧版本的nginx进程

发送 WINCH 信号到旧版本 PID,此时用 ps aux|grep nginx 可以看到旧版本 Nginx 的 worker 会逐渐退出,最后所有请求都会由新版本的 Nginx 处理

[root@Nginx nginx-1.1.5]# kill -WINCH 6294

8、彻底关闭旧版本

最后测试新版本没有问题后可以彻底停掉旧版本,发送 QUIT 信号到旧版本的 PID

[root@Nginx nginx-1.1.5]# kill -QUIT 6294

9、查看当前的nginx主进程号

[root@Nginx nginx-1.1.5]# ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}'

10、查看当前的nginx版本

[root@Nginx nginx-1.1.5]# /usr/local/nginx/sbin/nginx -V

PS:

如果测试后想恢复到旧版本的话,发送 HUP 信号到旧版 PID

kill -HUP PID
关闭新版本,发送 QUIT 到新版本 PID,如果着急,也可以用 TERM

kill -QUIT PID
最后把备份的 Nginx 替换回去

rm -rf /usr/local/nginx/sbin/nginx
mv /usr/local/nginx/sbin/nginx.old /usr/local/nginx/sbin/nginx

你可能感兴趣的:(在生产环境中对Nginx平滑升级)