备份当前Nginx配置文件和重要数据:
cp -r /etc/nginx /etc/nginx_backup
cp /usr/sbin/nginx /usr/sbin/nginx_backup
检查当前Nginx版本和编译参数:
nginx -V
记录下configure arguments
部分,新版本需要使用相同的编译参数。
# 下载新版本源码
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
# 备份旧二进制文件
mv /usr/sbin/nginx /usr/sbin/nginx.old
# 复制新二进制文件
cp objs/nginx /usr/sbin/nginx
# 测试新配置文件
nginx -t
# 平滑重启
kill -USR2 `cat /var/run/nginx.pid`
nginx -v
ps aux | grep nginx
# 停止新master进程
kill -QUIT `cat /var/run/nginx.pid.oldbin`
# 如果出现问题,恢复旧二进制文件
mv /usr/sbin/nginx.old /usr/sbin/nginx
# 重启旧版本
nginx -s reload
# 停止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
bash
yum update nginx
systemctl reload nginx
对于编译安装的Nginx,必须保留相同的编译参数
使用systemd管理的Nginx可以通过以下命令平滑重启:
systemctl reload nginx
通过以上步骤,您可以实现Nginx的无缝升级和快速回滚,确保服务不间断运行。