Ubuntu升级Nginx并保留配置的完整步骤
备份现有配置与程序
为避免升级过程中配置丢失或服务中断,需提前备份Nginx的关键文件:
sudo cp -r /etc/nginx /etc/nginx_backup # 备份整个配置目录
sudo cp /usr/sbin/nginx /usr/sbin/nginx.bak # 备份Nginx二进制程序(可选,用于快速恢复)
若有自定义证书(如SSL证书),建议单独备份证书目录(通常位于/etc/nginx/cert
):
sudo cp -r /etc/nginx/cert /etc/nginx/cert_backup
检查当前Nginx版本
确认当前运行的Nginx版本,便于后续验证升级结果:
nginx -v
Ubuntu默认源中的Nginx版本可能滞后,需替换为官方源以获取最新版本:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo gpg --dearmor -o /etc/apt/keyrings/nginx.gpg
lsb_release -cs
获取代号,如20.04对应focal
、22.04对应jammy
),编辑源列表文件:echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/nginx.gpg] \
https://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" | sudo tee /etc/apt/sources.list.d/nginx.list > /dev/null
sudo apt update
N
(保留现有配置):sudo apt install nginx
若已卸载旧版本,可直接运行上述命令;若未卸载,APT会自动升级现有版本并保留配置。nginx -v
sudo nginx -t
若输出syntax is ok
且test is successful
,说明配置有效。reload
命令重新加载配置,无需中断正在处理的请求:sudo systemctl reload nginx
或重启服务(会短暂中断服务,建议在维护窗口操作):sudo systemctl restart nginx
sudo systemctl status nginx
sudo apt --fix-broken install
sudo cp /etc/nginx_backup/nginx.conf /etc/nginx/
sudo cp -r /etc/nginx_backup/conf.d /etc/nginx/ # 恢复自定义配置目录
pid file not found
错误,需检查/etc/nginx/nginx.conf
中的pid
指令路径(通常为/run/nginx.pid
),并确保/lib/systemd/system/nginx.service
中的PIDFile
路径一致。修改后执行:sudo systemctl daemon-reload
sudo systemctl restart nginx
通过以上步骤,可在Ubuntu系统上安全升级Nginx至最新版本,同时保留原有配置,确保服务连续性与稳定性。