CentOS LNMP 环境下升级系统的稳妥做法
一 升级策略与准备
- 明确目标与路径
- 同版本小版本升级:如 CentOS 7.9 → 7.9(仅补丁/安全更新),风险最低。
- 跨小版本升级:如 7.6 → 7.9,可用官方仓库或切换到 Vault 指定版本升级。
- 跨大版本升级:如 CentOS 7 → 8,官方无直接工具,需手动迁移,生产环境不建议直接执行。
- 备份与回滚预案
- 备份网站文件、数据库、证书与关键配置:/var/www、/etc/nginx、/etc/my.cnf、/etc/php.ini、/etc/php-fpm.d、SSL 证书等。
- 记录与导出:当前系统版本(cat /etc/redhat-release)、已安装软件与版本(rpm -qa)、数据库结构与数据(mysqldump)。
- 准备回滚:保留旧版本二进制与配置、快照/镜像、可回滚的仓库配置。
- 维护窗口与变更管控
- 选择低峰时段,设置监控与告警,准备临时静态页或维护页,确保可快速回滚。
二 同版本小版本升级步骤(以 CentOS 7 为例)
- 更新系统到当前小版本的最新补丁
- 执行:sudo yum update -y
- 重启:sudo reboot
- 重启后核对版本
- 执行:cat /etc/redhat-release
- 说明
- 该方式不改变主版本号,仅应用安全与 bug 修复,适合 LNMP 稳定环境作为常规维护手段。
三 跨小版本升级步骤(以 CentOS 7 内部版本为例)
- 方式 A:使用官方仓库的 releasever 指定版本
- 查看当前版本:cat /etc/redhat-release
- 指定升级到目标小版本(示例为 7.9):sudo yum upgrade --releasever=7.9 -y
- 清理缓存并重启:sudo yum clean all && sudo reboot
- 方式 B:切换到 Vault 仓库后升级
- 安装/更新 centos-release 以拿到 Vault 路径:sudo yum install centos-release -y
- 清理缓存:sudo yum clean all
- 仅启用目标小版本的仓库进行升级(示例为 7.9):sudo yum --disablerepo=‘’ --enablerepo='C7.9’ upgrade
- 必要时仅升级内核:sudo yum --disablerepo=‘’ --enablerepo='C7.9,epel’ update kernel
- 将版本标识回退到目标小版本:sudo yum --disablerepo=‘’ --enablerepo='C7.9,epel’ downgrade centos-release
- 重启并核对:cat /etc/redhat-release
- 说明
- 以上方法适用于 CentOS 7 内部的跨小版本升级;升级完成后建议再次执行 yum update 获取最新补丁。
四 跨大版本升级与替代方案(7 → 8)
- 官方工具与方法
- 在 CentOS 6/7 上,曾有 preupgrade-assistant 与 redhat-upgrade-tool 的组合用于跨版本升级(示例命令:preupgrade-assistant --force;redhat-upgrade-tool --network 7 …)。但 CentOS 8 之后官方不再提供直接的大版本升级工具,且流程复杂、风险高。
- 更稳妥的替代路径
- 新建 CentOS 8/9 或兼容发行版(如 Rocky Linux/AlmaLinux)目标环境,按 LNMP 逐一部署与迁移。
- 使用 rsync/数据库主从或导出导入等方式迁移网站与数据,逐步切换解析与流量。
- 适用于生产环境,可显著降低停机与兼容性风险。
五 LNMP 组件升级与验证要点
- 通用备份
- 网站与上传目录:sudo cp -a /var/www /var/www.bak
- Nginx:sudo cp -a /etc/nginx /etc/nginx.bak
- 数据库:mysqldump -u root -p --all-databases > /var/backups/all-databases.sql
- PHP:sudo cp /etc/php.ini /etc/php.ini.bak;如用 FPM:sudo cp -a /etc/php-fpm.d /etc/php-fpm.d.bak
- 按安装方式升级
- 仓库安装(推荐)
- Nginx:sudo yum update nginx && sudo systemctl restart nginx
- MariaDB:sudo yum update mariadb-server mariadb && sudo systemctl restart mariadb
- PHP:sudo yum update php php-fpm && sudo systemctl restart php-fpm
- 源码编译安装
- 下载目标版本源码,按既有编译参数 ./configure → make → make install,注意与旧配置兼容;替换二进制后重启服务。
- 验证
- 版本核对:nginx -v;mysql -V 或 mariadb -V;php -v
- 服务状态:systemctl status nginx/mysqld/php-fpm
- 功能回归:访问站点、登录后台、执行关键业务操作与日志检查。