这篇文章主要介绍如何在不停止旧nginx的基础上升级nginx。
1、到http://nginx.org/en/download.html下载最新稳定版本的nginx。
2、备份nginx二进制文件和配置文件
- cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old
- cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.old
3、执行./configure命令,如
- ./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主进程。
- kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
6、发送WINCH信号到旧的nginx主进程以杀掉旧的nginx子进程。假设旧的主进程pid是123。
- kill -WINCH 123
7、现在你可以测试网站访问是否正常,如果正常,执行以下命令退出旧的nginx主进程;如果不正常,请看第8步。
- kill -QUIT 123
8、如果发现nginx不能正常服务,假设新的nginx主进程pid是321,分别执行以下命令以旧nginx替代新nginx。
- kill -HUP 123 - 这会让旧的nginx主进程重新生成子进程继续服务
- kill -QUIT 321 - 关闭新的nginx进程
- kill -TERM 321 -强制退出nginx进程
然后你就可以保证服务器继续上线来检查升级失败的原因。
参考:http://www.softwareprojects.com/resources/programming/t-recompileupgrade-nginx-binary-with-no-down-time-1520.html