当Nginx服务升级到新版本时,必须要将旧的二进制文件Nginx替换掉,通常情况下这是需要重启服务的,但Nginx支持重启服务来完成新版本的平滑升级。

升级时包括以下步骤:

1)通知正在运行的旧版本Nginx准备升级。通过向master进程发送 USR2 信号可达到目的。例如

kill  -USR2 <nginx master pid>

 

这时,运行中的Nginx会将pid文件重命名,如将/usr/local/nginx/logs/nginx.pid重命名为/usr/local/nginx/logs/nginx.pid.oldbin,这样新的Nginx才有可能启动成功。

2)启动新的Nginx,这时通过ps命令可以发现新旧版本的Nginx在同时运行。

 

3)通过kill命令向旧版本的master进程发送SIGQUIT信号,以“优雅”的方式关闭旧版本的Nginx。随后将只有新版本的Nginx服务运行,此时平滑升级完毕。

kill   -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

 

总结

pid所在路径是/var/run/nginx.pid

kill -USR2 `cat /var/run/nginx.pid`
kill -QUIT `cat /var/run/nginx.pid.oldbin`

或者pid所在路径是/usr/local/nginx/logs/nginx.pid

kill   -USR2 `cat /usr/local/nginx/logs/nginx.pid`
kill   -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

相关文章: