Nginx平滑升级

来源:互联网 发布:5x5矩阵的行列式怎么算 编辑:程序博客网 时间:2024/05/01 22:18

原文 来自Nginx官网 :https://www.nginx.com/resources/wiki/start/topics/tutorials/commandline/#upgrading-to-a-new-binary-on-the-fly


如果想要升级Nginx版本(或者在原本版上增加、删除模块),同时保持服务不间断,采用如下方式可满足要求。


1. 使用新的二进制文件替换老的二进制文件,这需要注意的是nginx源码在执行make编译后,不要直接make install,否则可能会覆盖其他配置文件,命令如下:

cd /usr/local/nginx/sbinmv nginx nginx.oldcp ***/nginx .

2. 向老的master进程发送SIGUSR2信号,这一步操作将会引起以下变动:

- 将老的nginx.pid 重命名为nginx.pid.oldbin 命令如下:

- 执行新的二进制文件,启动master进程,并启动worker进程

此时,查看nginx应有两个master进程及二倍的worker进程

: PID  PPID USER    %CPU   VSZ WCHAN  COMMAND33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sbin/nginx33134 33126 nobody   0.0  1368 kqread nginx: worker process (nginx)33135 33126 nobody   0.0  1380 kqread nginx: worker process (nginx)33136 33126 nobody   0.0  1368 kqread nginx: worker process (nginx)36264 33126 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
命令如下:

kill -s SIGUSR2 `cat /usr/local/nginx/logs/nginx.pid`

3. 将老的nginx进程优雅的关闭

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


此时查看Nginx进程只有一个master进程了

: PID  PPID USER    %CPU   VSZ WCHAN  COMMAND: 36264     1 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx: 36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx): 36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx): 36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)


4. 至此 nginx升级完成,可以查看下版本是否升级成功

/usr/local/nginx/sbin/nginx -v
原创粉丝点击