nginx平滑升级 不暂停服务
有的时候nginx的服务不能中断,只能平滑升级
nginx编译安装参考:链接
1.备份旧的nginx主程序
这里使用mv而不是cp,避免后面无法复制新版
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
2.编译新版本nginx
这里根据你的情况配置,但是不要make install
./configure 。。。。。。
make
make后会在编译的目录objs下生成新的主程序
3.替换nginx主程序
cp objs/nginx /usr/local/nginx/sbin/nginx
4.检查新版本nginx是否正常运行
/usr/local/nginx/sbin/nginx -t
提示类似如下内容说明配置文件正常
5.查找现有的pid位置
find / -name "nginx.pid"
6.启用新的nginx.pid
这里的pid换成你找到的pid位置,比如我的在/usr/local/nginx/logs/nginx.pid
kill -USR2 $(cat /usr/local/nginx/logs/nginx.pid)
运行上面的命令会自动生成旧的pid,用于平滑结束
检查是否新的pid已经开启了
ls /usr/local/nginx/logs/nginx.pid.oldbin
7.等旧的nginx处理完现有的之后自动关闭(平滑结束)
kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid.oldbin)
8.检查nginx运行状态
systemctl status nginx
查看版本和编译信息
/usr/local/nginx/sbin/nginx -V