chaihongjun.me

web不停服nginx平滑静默升级和跨版本升级注意事项

本篇文章针对使用oneinstack(https://oneinstack.com/)或者lnmp(https://linuxeye.com/31.html)一键安装包背景,需要注意的一些地方。

v2-7aac9ef2a6fe63d71971adfa7ff7695b_1440w.png

首先是需要更新nginx的时候将源码包下载解压到"src"目录,nginx1.9版本之前使用的spdy模块编译参数是

--with-http_spdy_module

nginx1.9及其往后模块升级成

--with-http_v2_module

当所有需要的源码都到位"src"里面之后,开始编译

make

完成编译之后,新版本nginx生成的可执行文件存在源码包"objs"目录里。然后进行平滑升级:

#先备份旧版本程序
mv /user/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx1.8.1
#复制新版本到执行目录
cp objs/nginx /usr/local/nginx/sbin/nginx
#检测一下可执行程序和配置文件
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
# 平滑升级
kill -USR2 `cat /var/run/nginx.pid`
kill -WINCH `cat /var/run/nginx.pid.oldbin`
kill -HUP `cat /var/run/nginx.pid.oldbin`
kill -QUIT `cat /var/run/nginx.pid.oldbin`

总结一下:

  1. 新旧版本的nginx源码包放到同一个目录层级,防止configure(nginx -V)参数路径错误

  2. 升级前备份旧版本,以防出错可以回退

  3. 替换新版本之后要验证一下程序和配置

知识共享许可协议本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。作者:柴宏俊»