插件窝 干货文章 Centos下Nginx版本如何平滑升级与回滚?

Centos下Nginx版本如何平滑升级与回滚?

Nginx 编译 平滑 升级 708    来源:    2025-05-11

CentOS下Nginx平滑升级与回滚指南

平滑升级步骤

1. 准备工作

  • 备份当前Nginx配置文件和重要数据:

    cp -r /etc/nginx /etc/nginx_backup
    cp /usr/sbin/nginx /usr/sbin/nginx_backup
    
  • 检查当前Nginx版本和编译参数:

    nginx -V
    

    记录下configure arguments部分,新版本需要使用相同的编译参数。

2. 下载并编译新版本

# 下载新版本源码
wget http://nginx.org/download/nginx-x.x.x.tar.gz
tar zxvf nginx-x.x.x.tar.gz
cd nginx-x.x.x

# 使用相同的编译参数配置
./configure [之前记录的参数]

# 编译(不安装)
make

3. 平滑升级

# 备份旧二进制文件
mv /usr/sbin/nginx /usr/sbin/nginx.old

# 复制新二进制文件
cp objs/nginx /usr/sbin/nginx

# 测试新配置文件
nginx -t

# 平滑重启
kill -USR2 `cat /var/run/nginx.pid`

4. 验证升级

nginx -v
ps aux | grep nginx

回滚步骤

1. 回退到旧版本

# 停止新master进程
kill -QUIT `cat /var/run/nginx.pid.oldbin`

# 如果出现问题,恢复旧二进制文件
mv /usr/sbin/nginx.old /usr/sbin/nginx

# 重启旧版本
nginx -s reload

2. 完全回滚

# 停止Nginx服务
systemctl stop nginx

# 恢复备份的二进制文件
cp /usr/sbin/nginx_backup /usr/sbin/nginx

# 恢复配置文件
rm -rf /etc/nginx
cp -r /etc/nginx_backup /etc/nginx

# 启动服务
systemctl start nginx

注意事项

  1. 确保在低流量时段进行操作
  2. 升级前检查新版本的变更日志,了解可能的兼容性问题
  3. 对于使用yum安装的Nginx,可以使用yum直接升级: bash yum update nginx systemctl reload nginx
  4. 对于编译安装的Nginx,必须保留相同的编译参数

  5. 使用systemd管理的Nginx可以通过以下命令平滑重启:

    systemctl reload nginx
    

通过以上步骤,您可以实现Nginx的无缝升级和快速回滚,确保服务不间断运行。