Nginx(11)平滑升级

该文详细描述了如何在不中断服务的情况下,安全地用新编译的Nginx可执行文件替换旧版本。过程包括检查旧版本配置,编译新版本,发送特定信号(USR2,WINCH,HUP,QUIT,TERM,KILL)来管理主进程和工作进程的切换,确保请求不会丢失且系统稳定性得到维持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可以在不中断服务的情况下,新的请求也不会丢失,使用新的 nginx 可执行程序替换旧的(当升级新版本或添加/删除服务器模块时).
绝对路径启动有效

1.查看老版本编译选项   /usr/local/nginx/sbin/nginx -V

2.解压并编译新版本 ./configure --老版本选项    make

3.新编译的命令替换原来的命令 

4. kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
主进程将重命名它的 .pid 文件为 .oldbin,然后执行新的可执行程序,依次启动新的主进程和新的工作进程.

kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin`
给旧的主进程发WINCH信号,把旧的工作进程从容关闭, 有新的请求发到新进程

这时,因为旧的服务器还尚未关闭它监听的套接字,所以,通过下面的几步,你仍可以恢复旧的服务器:
1.发送 HUP 信号给旧的主进程 - 它将在不重载配置文件的情况下启动它的工作进程
2.发送 QUIT 信号给新的主进程,要求其从容关闭其工作进程
3.发送 TERM 信号给新的主进程,迫使其退出
4.如果因为某些原因新的工作进程不能退出,向其发送 KILL 信号
新的主进程退出后,旧的主进程会由移除 .oldbin 前缀,恢复为它的 .pid 文件,这样,一切就都恢复到升级之前了.

kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
如果尝试升级成功,而你也希望保留新的服务器时,发送 QUIT 信号给旧的主进程使其退出而只留下新的服务器运行.

 

 最后nginx -V 查看版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值