最近nginx的更新还是挺频繁的,那升级啥的就在所难免了。好在nginx本身支持平滑升级,能在不影响服务运行的情况下完成升级。让我们来看看如何操作。
首先当然是告知当前运行的nginx要升级了。这需要向master进程发送USR2信号,如下所示:
$ ps aux | grep nginx root 11966 0.0 0.0 47628 980 ? Ss 15:54 0:00 nginx: master process ./nginx ... $ kill -s SIGUSR2 11966
这样,运行中的nginx会将pid文件重命名为nginx.pid.oldbin,如我的是在/usr/local/nginx/logs/下:
$ ls access.log error.log nginx.pid nginx.pid.oldbin
这时,就可以开始编译安装新版本的nginx了,之后新版本的nginx会自动启动,利用ps命令可查看到:
$ ps aux | grep nginx root 11966 0.0 0.0 47628 1172 ? Ss 15:54 0:00 nginx: master process ./nginx root 12014 0.0 0.0 47628 2660 ? S 15:56 0:00 nginx: master process ./nginx
可以发现新旧版本的nginx都在运行。
最后需要做的当然就是关闭旧版本的nginx:
$ kill -s SIGWINCH 11966
至此,升级结束。
原来好像有发现会生成一个.old,不过说实话,还真没注意到。
反过来,我觉得无论如何,还是应该在做这些操作前备份好重要数据吧。
这样升级会不会把原来的配置文件覆盖了的?