温馨提示×

如何更新Linux LNMP系统

小樊
42
2026-01-11 18:48:43
栏目: 智能运维

Linux LNMP 系统更新与升级指南

一 更新前准备

  • 备份关键数据与配置:至少备份网站目录(如 /var/www/html)、数据库(全量导出)、以及 Nginx/MySQL/PHP 配置目录(如 /etc/nginx//etc/mysql//etc/php/)。数据库可用命令:mysqldump -u root -p --all-databases > backup.sql
  • 选择维护窗口与灰度策略:在业务低峰期执行,先对测试或灰度环境验证,再上线生产。
  • 检查兼容性:确认新版本 Nginx/MySQL/MariaDB/PHP 与业务代码、扩展、框架的兼容性,查阅官方变更说明。
  • 准备回滚方案:保留旧版本二进制与配置,记录当前版本号,确保可快速回退。

二 不同发行版的更新命令

  • Debian/Ubuntu 系列(APT)
    • 系统软件包更新:sudo apt update && sudo apt upgrade -y
    • 组件更新示例:
      • Nginx:sudo apt install --only-upgrade nginx
      • MariaDB:sudo apt install --only-upgrade mariadb-server
      • PHP(按需指定版本):sudo apt install php-fpm php-mysql
  • CentOS/RHEL 系列(YUM/DNF)
    • 系统软件包更新:sudo yum updatesudo dnf update
    • 组件更新示例:sudo yum install nginx php php-fpm mysql-server
  • 一键安装包场景(如 lnmp.org 提供的脚本)
    • 进入解压后的 LNMP 目录,按需执行升级脚本,例如:
      • Nginx:./upgrade_nginx.sh
      • PHP:./upgrade_php.sh
      • MySQL/MariaDB:./upgrade_mysql.sh./upgrade_mysql2mariadb.sh / ./upgrade_mariadb.sh
    • 脚本通常会进行版本选择与备份,但依然建议先手动完整备份。

三 更新后的操作与验证

  • 重启相关服务并应用新配置:
    • Nginx:sudo systemctl restart nginx
    • PHP-FPM(按实际版本):sudo systemctl restart php-fpm
    • MySQL/MariaDB:sudo systemctl restart mysqlsudo systemctl restart mariadb
  • 验证版本与运行状态:
    • 版本检查:nginx -vmysql -V(或 mariadb --version)、php -v
    • 服务状态:sudo systemctl status nginxsudo systemctl status php-fpmsudo systemctl status mysql/mariadb
  • 功能性验证:访问站点首页与关键接口,查看错误日志(如 /var/log/nginx/error.log、PHP-FPM 日志、MySQL 错误日志)。

四 常见问题与注意事项

  • 数据库升级风险最高:务必全量备份并校验一致性;升级后按需执行 mysql_upgrade(MySQL 5.7 及更早常见),并运行 mysql_secure_installation 进行安全加固。
  • PHP 跨版本注意事项:扩展需与新版本匹配(如 mysqli/pdogdintlopcache 等);升级前确认框架/CMS 的版本支持矩阵。
  • 依赖与冲突处理:遇到依赖错误优先通过包管理器解决,不随意强制覆盖;必要时在测试环境复现后再处理生产。
  • 回滚策略:若更新后异常,优先用备份恢复配置与数据,或切回旧版本二进制并重启服务。
  • 监控与观察:升级后密切监控 CPU/内存/连接数/错误率 至少 24–48 小时

五 快速参考命令清单

  • Debian/Ubuntu
    • 备份数据库:mysqldump -u root -p --all-databases > backup.sql
    • 系统更新:sudo apt update && sudo apt upgrade -y
    • Nginx:sudo apt install --only-upgrade nginx && sudo systemctl restart nginx
    • MariaDB:sudo apt install --only-upgrade mariadb-server && sudo systemctl restart mariadb
    • PHP:sudo apt install php8.1-fpm php8.1-mysql && sudo systemctl restart php8.1-fpm
    • 验证:nginx -vmariadb --versionphp -v
  • CentOS/RHEL
    • 系统更新:sudo yum update
    • Nginx/PHP/MySQL:sudo yum install nginx php php-fpm mysql-server
    • 重启与验证:按需 systemctl restart 并用 -v/-V 检查版本

0