一文弄懂Nginx热升级
作者:莽村宏伟
Nginx热升级指服务不中断情况下用新的Nginx二进制文件替换老的Nginx二进制文件,本文就来介绍一下Nginx热升级,感兴趣的可以了解一下
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 运行状况
发送信号使 nginx 的旧版本停止接收请求
kill -USR2 51393
再次查看 nginx 运行状况
发送USER2信号后master会重命名pid文件,在文件后添加oldbin后缀。然后master进程会用新Nginx文件启动一个新的master进程,
发送WINCH信号给旧master进程,优雅的关闭旧worker进程
kill -WINCH 51393
再次检查进程情况,旧master的worker已经关闭了,旧master不会自己退出,用作版本回退
确认正常后,可以关闭旧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
发送USR2信号,停止新版本master进程接收请求
kill -USR2 53976
关闭新版本的服务进程
kill -WINCH 53976
退出新版本进程
kill -QUIT 53976
再次查看,新版本的master进行已停止
到此这篇关于一文弄懂Nginx热升级的文章就介绍到这了,更多相关Nginx热升级内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!