如何更新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 update 或 sudo 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 mysql 或 sudo systemctl restart mariadb
- 验证版本与运行状态:
- 版本检查:nginx -v、mysql -V(或 mariadb --version)、php -v
- 服务状态:sudo systemctl status nginx、sudo systemctl status php-fpm、sudo systemctl status mysql/mariadb
- 功能性验证:访问站点首页与关键接口,查看错误日志(如 /var/log/nginx/error.log、PHP-FPM 日志、MySQL 错误日志)。
四 常见问题与注意事项
- 数据库升级风险最高:务必全量备份并校验一致性;升级后按需执行 mysql_upgrade(MySQL 5.7 及更早常见),并运行 mysql_secure_installation 进行安全加固。
- PHP 跨版本注意事项:扩展需与新版本匹配(如 mysqli/pdo、gd、intl、opcache 等);升级前确认框架/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 -v、mariadb --version、php -v
- CentOS/RHEL
- 系统更新:sudo yum update
- Nginx/PHP/MySQL:sudo yum install nginx php php-fpm mysql-server
- 重启与验证:按需 systemctl restart 并用 -v/-V 检查版本