本篇文章简单介绍nginx的版本如何在线平滑升级。
本文举例nginx1.13.9升级到1.14.2版本,nginx主进程id是1533
1·备份
将当前的nginx安装目录备份一下,以防外一
cp -r nginx nginx_1.13.9
2·重新编译安装
记住要安装到当前nginx的安装目录中
2.1 升级版本
将新的nginx版本安装包,按照我另一个文章nginx-安装&启动&停止&平滑重启的步骤进行安装./configure --prefix=/usr/local/nginx makemake install
2.2 添加、删除模块
在原先的版本的nginx安装包下,重新走一遍安装流程,在./configure 的时候选择需要编译的模块
2.3 安装完之后检查版本
安装完之后,检查
下版本,已经是1.14.2了
3·新旧并行
kill -USR2 1533(旧版本主进程id)旧版本nginx的主进程将重命名它的.pid文件为.oldbin(如下面截图)然后会执行新版本的nginx可执行程序,依次启动新版本的主进程和新的worker进程(如下面截图,4657就是新版本nginx的主进程)此时,新旧版本的nginx实例会同时运行,共同处理输入的请求。
4·停老版本nginx的worker进程
开始停老版本nginx的实例,发送WINCH信号给老版本nginx的进程,从容关闭老版本nginx的worker进程(主进程不关闭)kill -WINCH 1533(旧版本主进程id)一段时间之后,老版本的工作进程处理完自己所有已连接的请求后退出,由新版本的工作进程来处理输入的请求。下面截图可以看到。老版本nginx的worker进程已经都不在了,只剩主进程还在
5·决定完成升级还是回退
此时,可以决定是使用新版本还是恢复到旧版本
5.1 完成升级,使用新版本
kill -QUIT 1533(旧版本主进程id)这样就只剩下新版本nginx的进程了,如下面截图
5.2 回退
kill -HUP 1533(旧版本主进程id)【旧版本nginx会在不重载配置文件情况下启动工作进程】kill -QUIT 4657 (新版本主进程id)【从容关闭新版本nginx的worker进程】kill -TERM 4657(新版本主进程id)【强制退出新版本的nginx】