当前位置: 代码网 > 服务器>服务器>Nginx > 一文弄懂Nginx热升级

一文弄懂Nginx热升级

2024年06月17日 Nginx 我要评论
1、热升级步骤nginx备份原有nginx二进制文件拷贝新nginx二进制文件到sbin目录下使用 kill -usr2 master进程pid使用kill -winch master进程pid关闭老

1、热升级步骤

  • nginx
    • 备份原有nginx二进制文件
    • 拷贝新nginx二进制文件到sbin目录下
    • 使用 kill -usr2 master进程pid
    • 使用kill -winch master进程pid关闭老workr进程
    • 回退老master进程时只需reload即可

openresty热升级与nginx相同

2、热升级实现

备份旧版本nginx二进制文件

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

下载最新版本的 nginx,解压后进行编译,将新版本的nginx二进制文件拷贝到旧版本的sbin目录下

旧版本nginx二进制文件编译了那些库,新版本也要有相同的库,安装地址也要相同

wget https://nginx.org/download/nginx-1.26.0.tar.gz
tar -zxvf nginx-1.26.0.tar.gz
cd nginx-1.26.0
./configure
make
cp objs/nginx /usr/local/nginx/sbin/

查看 nginx 运行状况

1715063157690.png

发送信号使 nginx 的旧版本停止接收请求

kill -usr2 51393

再次查看 nginx 运行状况

1715063246935.png

发送user2信号后master会重命名pid文件,在文件后添加oldbin后缀。然后master进程会用新nginx文件启动一个新的master进程,

1715063396061.png

发送winch信号给旧master进程,优雅的关闭旧worker进程

kill -winch 51393

再次检查进程情况,旧master的worker已经关闭了,旧master不会自己退出,用作版本回退

1715063544549.png

确认正常后,可以关闭旧master

kill -quit 51393

3、升级失败回退

用于nginx升级失败立马回退版本,如果没有备份只能再走一起热升级,回退版本。

使用备份文件覆盖新版本nginx二进制文件

mv /usr/local/nginx/sbin/nginx.old /usr/local/nginx/sbin/nginx

向旧版本master进程发送hup信号,拉起worker进程

kill -hup 51393

1715064496059.png

发送usr2信号,停止新版本master进程接收请求

kill -usr2 53976

关闭新版本的服务进程

kill -winch 53976

1715064746592.png

退出新版本进程

kill -quit 53976

再次查看,新版本的master进行已停止

1715064833468.png

到此这篇关于一文弄懂nginx热升级的文章就介绍到这了,更多相关nginx热升级内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com