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