可以在不中断服务的情况下,新的请求也不会丢失,使用新的 nginx 可执行程序替换旧的(当升级新版本或添加/删除服务器模块时).
绝对路径启动有效
1.查看老版本编译选项 /usr/local/nginx/sbin/nginx -V
2.解压并编译新版本 ./configure --老版本选项 make
3.新编译的命令替换原来的命令
4. kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
主进程将重命名它的 .pid 文件为 .oldbin,然后执行新的可执行程序,依次启动新的主进程和新的工作进程.
kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin`
给旧的主进程发WINCH信号,把旧的工作进程从容关闭, 有新的请求发到新进程
这时,因为旧的服务器还尚未关闭它监听的套接字,所以,通过下面的几步,你仍可以恢复旧的服务器:
1.发送 HUP 信号给旧的主进程 - 它将在不重载配置文件的情况下启动它的工作进程
2.发送 QUIT 信号给新的主进程,要求其从容关闭其工作进程
3.发送 TERM 信号给新的主进程,迫使其退出
4.如果因为某些原因新的工作进程不能退出,向其发送 KILL 信号
新的主进程退出后,旧的主进程会由移除 .oldbin 前缀,恢复为它的 .pid 文件,这样,一切就都恢复到升级之前了.
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
如果尝试升级成功,而你也希望保留新的服务器时,发送 QUIT 信号给旧的主进程使其退出而只留下新的服务器运行.
最后nginx -V 查看版本