)
从 https://nginx.org/en/download.html 下载最新稳定版本nginx-1.30.2.tar.gz上传到了 /home/nginx目录下。原服务器Nginx是1.21.6版本且configure没有模块参数。configure arguments: 是空白的说明当时安装时没有加任何模块参数。可以使用-V命令检测参数如果有参数则需要在configure 时附带。[roothost nginx]# ./sbin/nginx -Vnginx version: nginx/1.21.6 built by gcc4.8.520150623(Red Hat4.8.5-36)(GCC)configure arguments:注意升级后检测是否有worker进程是否存在如果不存在重新加载:# 升级完成后/usr/local/nginx/sbin/nginx-sreload完整升级步骤第一步解压cd/home/nginxtar-zxvfnginx-1.30.2.tar.gz第二步备份当前环境# 备份配置文件cp-r/usr/local/nginx/conf /usr/local/nginx/conf.bak.$(date%Y%m%d)# 备份旧二进制文件cp/usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak.$(date%Y%m%d)# 记录旧版本信息/usr/local/nginx/sbin/nginx-V/root/nginx_old_info.txt# 确认备份成功ls-la/usr/local/nginx/conf.bak.$(date%Y%m%d)ls-la/usr/local/nginx/sbin/nginx.bak.$(date%Y%m%d)第三步编译新版本# 进入解压目录cd/home/nginx/nginx-1.30.2# 清理可能存在的编译残留makeclean2/dev/null# 配置编译参数旧版本没有额外参数直接默认即可./configure# 编译make第四步平滑升级不中断服务# 查看当前 nginx master 进程 PIDcat/usr/local/nginx/logs/nginx.pid# 替换二进制文件cp-fobjs/nginx /usr/local/nginx/sbin/nginx# 向 master 进程发送 USR2 信号启动新版本 workerkill-USR2$(cat/usr/local/nginx/logs/nginx.pid)# 等待2秒让新进程启动sleep2# 向旧 master 发送 WINCH 信号优雅关闭旧 workerkill-WINCH$(cat/usr/local/nginx/logs/nginx.pid)第五步验证升级结果# 查看版本号应显示 1.30.2/usr/local/nginx/sbin/nginx-V# 测试配置文件语法/usr/local/nginx/sbin/nginx-t# 查看 nginx 进程psaux|grepnginx|grep-vgrep# 测试业务是否正常curl-Ihttp://127.0.0.12/dev/null|head-5第六步确认无误后清理旧进程# 确认新版本正常工作后关闭旧 master 进程kill-QUIT$(cat/usr/local/nginx/logs/nginx.pid.oldbin)# 清理旧 PID 文件rm-f/usr/local/nginx/logs/nginx.pid.oldbin# 最终确认进程状态psaux|grepnginx:|grep-vgrep快速回滚方案如果升级失败# 停止当前 nginx/usr/local/nginx/sbin/nginx-sstop# 恢复旧二进制cp/usr/local/nginx/sbin/nginx.bak.$(date%Y%m%d)/usr/local/nginx/sbin/nginx# 启动旧版本/usr/local/nginx/sbin/nginx# 验证/usr/local/nginx/sbin/nginx-V一键执行脚本可选你可以将以下内容保存为upgrade_nginx.sh然后执行bash upgrade_nginx.sh#!/bin/bashset-eecho 1. 解压 cd/home/nginxtar-zxvfnginx-1.30.2.tar.gzecho 2. 备份 cp-r/usr/local/nginx/conf /usr/local/nginx/conf.bak.$(date%Y%m%d)cp/usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak.$(date%Y%m%d)echo 3. 编译 cd/home/nginx/nginx-1.30.2makeclean2/dev/null ./configuremakeecho 4. 平滑升级 cp-fobjs/nginx /usr/local/nginx/sbin/nginxkill-USR2$(cat/usr/local/nginx/logs/nginx.pid)sleep2kill-WINCH$(cat/usr/local/nginx/logs/nginx.pid)echo 5. 验证 /usr/local/nginx/sbin/nginx-V/usr/local/nginx/sbin/nginx-techo 6. 清理旧进程 kill-QUIT$(cat/usr/local/nginx/logs/nginx.pid.oldbin)2/dev/nullrm-f/usr/local/nginx/logs/nginx.pid.oldbinecho 升级完成 使用make upgrade替代三个kill# 1. 进入新版本源码目录cd/home/nginx/nginx-1.30.2# 2. 用旧版本的编译参数配置你的情况是空参数./configure# 3. 编译不要 make installmake# 4. 备份旧二进制cp/usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak# 5. 替换二进制文件cp-fobjs/nginx /usr/local/nginx/sbin/nginx# 6. 自动完成平滑升级这一步替代了你之前所有的 kill 命令makeupgrade# 7. 验证版本/usr/local/nginx/sbin/nginx-V