温馨提示×

centos lnmp升级步骤是什么

小樊
49
2026-01-10 21:41:25
栏目: 智能运维

CentOS 上 LNMP 升级步骤

一 升级前准备

  • 明确目标版本与变更范围:例如 Nginx 主线版MySQL 8.0MariaDB 10.xPHP 7.4/8.0/8.1/8.2,并评估与现有应用(如 WordPress、Discuz 等)的兼容性。
  • 完整备份:
    • 数据库全量备份:mysqldump -u root -p --all-databases > full-backup.sql;MariaDB 可用 mariadb-dump
    • 配置文件备份:/etc/nginx//etc/my.cnf/etc/php.ini/etc/php-fpm.d//usr/local/nginx/conf/vhost/ 等。
    • 网站目录与上传数据:/home/wwwroot/ 或自定义目录。
  • 准备回滚方案:保留旧版本二进制与配置,记录当前各组件版本号,确保可快速回退。
  • 维护窗口与通知:选择低峰期,通知业务方,必要时短暂切换维护页。

二 系统级更新

  • 更新系统软件包索引与已安装包:
    • CentOS 7:sudo yum update -y
    • CentOS 8/Stream:sudo dnf update -y
  • 目的:减少依赖冲突,为后续组件升级打好基础。

三 组件升级

  • Nginx
    • 添加官方仓库(示例为 CentOS 7 主线版):
      • sudo yum install -y epel-release
      • sudo yum install -y https://nginx.org/packages/mainline/centos/7/$basearch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    • 执行升级:sudo yum update -y nginx
    • 重启:sudo systemctl restart nginx
    • 验证:nginx -v
  • MySQL 或 MariaDB
    • MySQL 8.0(示例为 CentOS 7):
      • 添加仓库:wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm && sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
      • 升级:sudo yum update -y mysql-community-server
      • 重启:sudo systemctl restart mysqld
    • MariaDB(若当前使用 MariaDB):
      • 升级:sudo yum update -y mariadb-server mariadb
      • 重启:sudo systemctl restart mariadb
    • 数据库升级后建议执行:mysql_upgrade -u root -p(MySQL)以完成系统表升级。
    • 验证:mysql -Vmariadb -V
  • PHP(两种常见方式)
    • 方式 A(系统仓库或 Remi 仓库,便于小版本升级):
      • 安装 EPEL 与 Remi:sudo yum install -y epel-release https://rpms.remirepo.net/enterprise/remi-release-7.rpm
      • 启用所需版本(示例为 PHP 7.4):sudo yum-config-manager --enable remi-php74
      • 升级:sudo yum update -y php\* 或按需安装扩展(如 php-fpm php-mysqlnd php-mbstring php-xml php-gd php-opcache
      • 重启:sudo systemctl restart php-fpm
    • 方式 B(编译升级,适合跨小版本/大版本,如 7.2 → 7.4/8.x):
      • 下载并解压 PHP 源码,配置常用选项(如 --enable-fpm --with-mysqli --enable-mbstring --with-zip 等),make && make install
      • 替换或更新配置文件与 systemd 服务,平滑切换。
    • 验证:php -vphp -m

四 升级后验证与回滚

  • 版本与服务状态
    • nginx -vmysql -Vmariadb -Vphp -v
    • systemctl status nginx mysqld php-fpm,确认 active (running)
  • 功能性验证
    • 访问站点首页与 phpinfo(),检查 数据库连接、Session、文件上传、伪静态 等是否正常。
    • 查看错误日志:/var/log/nginx/error.log/var/log/mysqld.log/var/log/php-fpm.log
  • 回滚策略
    • Nginx:sudo yum downgrade -y nginx 或切回旧版二进制与配置并 systemctl restart nginx
    • MySQL/MariaDB:用备份恢复 full-backup.sql,或 sudo yum downgrade -y ... 后重启服务
    • PHP:切回旧版 PHP-FPM 配置/套接字或二进制并重启,确保 Nginx 与 PHP-FPM 用户/权限一致

五 常见问题与处理

  • PHP-FPM 启动失败或 502/504
    • 检查 /etc/php-fpm.d/www.conf/etc/nginx/conf.d/ 中的监听方式(socket 与 9000 端口二选一并保持一致),用户组与目录权限匹配(如 www:www),必要时查看 journalctl -xe 与 Nginx 错误日志定位。
  • 依赖或编译错误(常见于跨版本编译 PHP)
    • configure: error: Please reinstall the libzip distribution,可编译安装 libzip 1.5.x 并确保 cmake ≥ 3.0 后再编译 PHP。
  • 数据库字符集/排序规则不兼容
    • 升级到 MySQL 5.5+ 后,导入低版本备份可能出现 Unknown collation: 'utf8mb4_unicode_ci',需使用与目标库版本匹配的备份或在高版本导入后执行 mysql_upgrade

0