Ubuntu系统如何升级Nginx到最新版本
导读:Ubuntu 升级 Nginx 到最新版本 一 升级思路与准备 先确认当前版本与系统代号:执行 nginx -v、nginx -V(查看编译参数与模块)、以及 lsb_release -cs(如:jammy、noble)。 备份关键数据与...
Ubuntu 升级 Nginx 到最新版本
一 升级思路与准备
- 先确认当前版本与系统代号:执行 nginx -v、nginx -V(查看编译参数与模块)、以及 lsb_release -cs(如:jammy、noble)。
- 备份关键数据与配置:建议备份 /etc/nginx 与证书目录(如 /etc/letsencrypt),并导出当前模块清单用于兼容性核对。
- 选择升级策略:优先使用 Nginx 官方 APT 仓库 的 stable 或 mainline 版本;若系统自带源版本过旧,添加官方源后再升级。
- 升级前尽量在测试环境验证自定义配置与第三方模块兼容性,避免生产中断。
二 方法一 使用官方仓库升级(推荐)
- 1)导入官方 GPG 密钥
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg > /dev/null
gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg - 2)添加仓库(二选一)
- 稳定版:echo “deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu $(lsb_release -cs) nginx” | sudo tee /etc/apt/sources.list.d/nginx.list
- 主线版:echo “deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/mainline/ubuntu $(lsb_release -cs) nginx” | sudo tee /etc/apt/sources.list.d/nginx.list
- 3)设置仓库优先级(确保优先使用官方包)
echo -e “Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n” | sudo tee /etc/apt/preferences.d/99nginx - 4)执行升级与验证
sudo apt update
sudo apt install --only-upgrade nginx # 若尚未安装会执行安装
nginx -v & & nginx -V
sudo nginx -t & & sudo systemctl reload nginx
说明:主线版包含最新特性与修复,稳定版更保守;两者均为官方打包,建议优先选择稳定版,需要新特性时再切主线版。
三 方法二 国内镜像与离线场景
- 国内镜像加速(可选):将官方域名替换为 https://mirrors.nju.edu.cn/nginx/,其余步骤相同。示例:
curl https://mirrors.nju.edu.cn/nginx/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg > /dev/null
echo “deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://mirrors.nju.edu.cn/nginx/ubuntu $(lsb_release -cs) nginx” | sudo tee /etc/apt/sources.list.d/nginx.list
sudo apt update & & sudo apt install --only-upgrade nginx - 离线/内网环境:在一台可联网机器按上述步骤添加官方源并下载 .deb 包及依赖,拷贝到目标服务器后执行 *sudo dpkg -i .deb;随后执行 sudo nginx -t &
&
sudo systemctl reload nginx。
提示:镜像仅加速下载,包内容仍来自官方仓库;离线安装需确保依赖完整。
四 方法三 从源码编译升级(进阶)
- 适用场景:需要自定义模块或特定编译参数。
- 简要步骤:
1)安装编译依赖:sudo apt install build-essential libpcre3-dev zlib1g-dev libssl-dev
2)下载并解压:wget https://nginx.org/download/nginx-.tar.gz & & tar -zxvf nginx-.tar.gz & & cd nginx-
3)配置与编译:./configure [你的原有编译参数] & & make(不要直接 make install)
4)备份与替换二进制:sudo cp /usr/sbin/nginx /usr/sbin/nginx.bak & & sudo cp objs/nginx /usr/sbin/nginx
5)热升级或平滑切换:- 热升级:sudo kill -USR2 $(cat /var/run/nginx.pid) & & sudo kill -WINCH $(cat /var/run/nginx.pid.oldbin)(确认新进程稳定后再 kill -QUIT 旧进程)
- 或先停旧进程再启动新进程:sudo systemctl stop nginx &
&
sudo systemctl start nginx
6)验证:nginx -t & & sudo systemctl status nginx
说明:编译参数可通过 nginx -V 获取,务必保持一致;源码方式更灵活但维护成本更高。
五 回滚与验证
- 回滚方案:
- APT 方式:sudo apt install --allow-downgrades nginx=< 旧版本号> ;或暂时将官方源优先级调低后降级。
- 源码方式:用备份的 /usr/sbin/nginx.bak 覆盖新二进制,执行 sudo nginx -t & & sudo systemctl reload nginx。
- 升级后必做检查:
- 配置语法:sudo nginx -t
- 服务状态:sudo systemctl status nginx
- 版本与模块:nginx -v、nginx -V
- 业务验证:访问关键域名与接口,观察错误日志 /var/log/nginx/error.log。
提示:任何变更前先备份,变更后在低峰期执行并保留回滚路径。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu系统如何升级Nginx到最新版本
本文地址: https://pptw.com/jishu/749366.html
