前言
在服务器运维工作中,Nginx 作为高性能的 Web 服务器和反向代理,其版本更新不仅能修复已知漏洞、提升稳定性,还可能带来新的功能特性。但升级过程中如何保障业务不中断?本文将详细对比 普通升级 与 平滑升级 两种方案,从原理、操作步骤到注意事项,带你完整掌握 Nginx 版本升级流程。
目录
前言
1.普通升级
2.平滑升级
1.普通升级
1. 升级前必做:备份旧版本
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old.1.12.2
2. 停止旧版本服务
/usr/local/nginx/sbin/nginx -s quit.
. 3.编译新版本
cd /usr/local/src
tar -zxvf nginx-1.22.0.tar.gz
cd nginx-1.22.0
# 配置(必须与旧版本参数一致!)
./configure --prefix=/usr/local/nginx --with-http_ssl_module
# 编译(注意:只 make,千万不要 make install!)
make
4. 替换二进制文件
cp objs/nginx /usr/local/nginx/sbin/nginx
5. 启动新版本并验证
/usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -v # 应显示 1.22.0
2.平滑升级
确认当前是原生启动的
ps -ef | grep nginx
编译目标版本
cd /usr/local/src/nginx-1.12.2
make
备份当前二进制文件
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old.1.22.0
替换新版本二进制文件
cp -f objs/nginx /usr/local/nginx/sbin/nginx
校验配置兼容性
/usr/local/nginx/sbin/nginx -t
执行平滑升级
kill -USR2 $(cat /usr/local/nginx/logs/nginx.pid)
#启动新 Master 进程
#此时执行 ps -ef | grep nginx,你会看到两个 master process
kill -WINCH $(cat /usr/local/nginx/logs/nginx.pid.oldbin)
#关闭旧 Worker 进程
kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid.oldbin)
#彻底退出旧 Master 进程
最终验证
/usr/local/nginx/sbin/nginx -v