Nginx热升级

Nginx热升级指服务不中断情况下用新的Nginx二进制文件替换老的Nginx二进制文件。
1. 备份和替换Nginx二进制文件

git clone https://github.com/nginx/nginx.git
cd nginx
git checkout release-1.22.0
./auto/configure && make && make install && /usr/local/nginx/sbin/nginx

git checkout release-1.22.1
./auto/configure && make

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.backup
cp /root/code/nginx/objs/nginx /usr/local/nginx/sbin

2. 发送USR2给老master进程来启动新master进程
kill -12 老master进程
新master进程是老master进程的子进程

老master进程记录在/usr/local/nginx/logs/nginx.pid.oldbin中,新master进程记录在/usr/local/nginx/logs/nginx.pid中。

新请求由新master和新worker处理。
老master进程不退出原因在于回滚。
3. 升级
向老master进程发送SIGQUIT信号。
kill -3 老master进程

4. 回滚
向老master发送信号SIGHUP(reload,创建新worker),向新master发送信号SIGQUIT。

回滚时只向新master发送信号SIGQUIT也没问题,不增加新的worker进程。

 

kill -l:查看所有信号值

 

参考资料
nginx热升级

posted on 2023-06-23 15:55  王景迁  阅读(90)  评论(0编辑  收藏  举报

导航