Nginx在线服务状态下平滑升级或新增模块的详细操作
今天应开发的需求,需要在Nginx增加一个模块,并不能影响现有的业务,所以就必须要平滑升级Nginx,好了,不多说了
1:查看现有的nginx编译参数
/usr/local/nginx/sbin/nginx -V
2:按照安装nginx的方法进行安装,只需要到make,千万不要make install
3: 备份旧版本的nginx可执行文件(期间nginx不会停止服务)
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
4:复制新的nginx二进制文件,进入新的nginx源码包
cp objs/nginx /usr/local/nginx/sbin/
5: 测试新版本的nginx是否正常
/usr/local/nginx/sbin/nginx -t
6: 给nginx发送平滑迁移信号(若不清楚pid路径,请查看nginx配置文件)
kill -USR2 `cat /var/run/nginx.pid`
7:查看nginx pid,会出现一个nginx.pid.oldbin
8:从容关闭旧的Nginx进程
kill -WINCH `cat /var/run/nginx.pid.oldbin`
9:此时不重载配置启动旧的工作进程
kill -HUP `cat /var/run/nginx.pid.oldbin`
10:结束工作进程,完成此次升级
kill -QUIT `cat /var/run/nginx.pid.oldbin`
11:验证Nginx是否升级成功
/usr/local/nginx/sbin/nginx -V