平滑升级nginx

这篇文章主要介绍如何在不停止旧nginx的基础上升级nginx。
1、到http://nginx.org/en/download.html下载最新稳定版本的nginx。
2、备份nginx二进制文件和配置文件

  1. cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old
  2. cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.old

3、执行./configure命令,如

  1. ./configure --with-http_ssl_module --with-openssl=/path/to/openssl_src

可以执行/usr/local/nginx/sbin/nginx -V命令查看以前的编译参数。
4、执行make install clean来安装新的nginx。
5、为旧的nginx主进程发送USR2信号,这会启动新的nginx主进程而保留旧的nginx主进程。

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

6、发送WINCH信号到旧的nginx主进程以杀掉旧的nginx子进程。假设旧的主进程pid是123。

  1. kill -WINCH 123

7、现在你可以测试网站访问是否正常,如果正常,执行以下命令退出旧的nginx主进程;如果不正常,请看第8步。

  1. kill -QUIT 123

8、如果发现nginx不能正常服务,假设新的nginx主进程pid是321,分别执行以下命令以旧nginx替代新nginx。

  1. kill -HUP 123 - 这会让旧的nginx主进程重新生成子进程继续服务
  2. kill -QUIT 321 - 关闭新的nginx进程
  3. kill -TERM 321 -强制退出nginx进程

然后你就可以保证服务器继续上线来检查升级失败的原因。
参考:http://www.softwareprojects.com/resources/programming/t-recompileupgrade-nginx-binary-with-no-down-time-1520.html

标签:Nginx 发布于:2019-10-15 10:08:43