Linux LAMP更新与升级指南
小樊
44
2025-12-21 23:04:10
Linux LAMP 更新与升级指南
一 准备与总体流程
- 明确目标:是做安全补丁/小版本更新,还是跨小版本/跨主版本升级(如 PHP 7.4 → 8.1、MySQL 5.7 → 8.0、操作系统大版本升级)。
- 完整备份:至少备份数据库与关键配置,并准备快速回滚方案。
- 数据库:使用 mysqldump 全量备份(示例:mysqldump -u root -p --single-transaction --routines --triggers --databases 你的库 > backup.sql)。
- 文件与配置:打包 /var/www、/etc/apache2、/etc/php、/etc/my.cnf.d 等目录。
- 系统快照:如为虚拟机/云主机,创建快照以便一键回滚。
- 维护窗口与回滚预案:选择低峰时段,准备回滚包与回滚步骤文档。
- 检查可用空间与依赖:确保磁盘空间充足,了解组件间的依赖变化与废弃特性。
- 变更记录:记录当前版本与关键配置,便于比对与审计。
二 通用更新步骤
- 系统层面更新
- Debian/Ubuntu:
- 更新索引与升级:sudo apt update && sudo apt upgrade
- 处理依赖变化:sudo apt full-upgrade(必要时重启:sudo reboot)
- CentOS/RHEL(或兼容发行版):
- 全量升级:sudo yum update -y
- 仅安全更新:sudo yum update --security -y(需先安装 yum-security 插件)
- 组件更新
- Apache
- Debian/Ubuntu:sudo apt install --only-upgrade apache2
- CentOS/RHEL:sudo yum update httpd
- 重启:sudo systemctl restart apache2
- MariaDB/MySQL
- Debian/Ubuntu:sudo apt install --only-upgrade mariadb-server(或 mysql-server)
- CentOS/RHEL:sudo yum update mariadb-server(或 mysql-server)
- 重启:sudo systemctl restart mariadb(或 mysqld)
- 建议运行:sudo mysql_secure_installation(按需)
- PHP
- Debian/Ubuntu:sudo apt install --only-upgrade php libapache2-mod-php php-mysql(多版本并存时指定如 php8.1)
- CentOS/RHEL:sudo yum update php php-mysql
- 重启:sudo systemctl restart apache2(或 php-fpm)
- 验证
- 版本:apache2 -v、mysql --version(或 mariadb --version)、php -v
- 连通与解析:curl -I http://localhost;必要时创建 /var/www/html/info.php 验证 PHP 加载
- 日志:检查 /var/log/apache2/error.log、/var/log/mysql/error.log 是否有异常
- 自动化安全更新(Debian/Ubuntu)
- 配置无人值守升级:sudo apt install unattended-upgrades && sudo dpkg-reconfigure unattended-upgrades
三 发行版与版本切换要点
- Debian/Ubuntu
- 多版本 PHP:使用 ondrej/php PPA 或发行版提供的 Sury 仓库,按需安装/切换版本(如 php7.4、php8.1、php8.2),并启用对应 libapache2-mod-phpX.Y 或 php-fpm。
- 示例(切换到 PHP 8.1):sudo apt install php8.1 libapache2-mod-php8.1 php8.1-mysql && sudo a2dismod php7.4 && sudo a2enmod php8.1 && sudo systemctl restart apache2
- CentOS/RHEL
- 使用 yum 管理软件包与依赖,必要时启用 EPEL/Remi 仓库获取新版 PHP 与扩展。
- 示例(启用 Remi 后升级到 PHP 8.1):sudo yum-config-manager --enable remi-php81 && sudo yum update php php-mysql && sudo systemctl restart httpd
- Arch Linux
- 滚动更新:sudo pacman -Syu
- 组件:sudo pacman -S apache、sudo pacman -S mariadb(或 mysql)、sudo pacman -S php php-apache(按需启用模块与 FPM)
四 回滚与验证
- 快速回滚
- 包级回滚:优先使用包管理器历史或快照回滚(如 apt 的 held 包/降级、yum 的版本锁定或快照恢复)。
- 数据与配置:用备份恢复 数据库 与 配置文件,再重启服务。
- 功能与性能验证
- 应用自检:登录后台、跑冒烟测试、检查关键业务接口与定时任务。
- 错误与性能:复查 error.log、慢查询日志(如开启 slow_query_log)、监控 CPU/内存/连接数 是否异常。
- 安全与合规:确认 TLS/HTTPS 正常、禁用不必要模块与端口、核对 防火墙 规则(HTTP/HTTPS 放行)。
五 注意事项与风险提示
- 生产环境务必先备份并选择低峰时段操作;跨版本升级(尤其是 PHP、MySQL/MariaDB)可能引入兼容性与功能废弃问题,需先在测试环境验证。
- 如仍在 CentOS 7,请注意其已于2024-12-30停服,后续无官方补丁,建议规划迁移至 AlmaLinux/Rocky Linux 8/9 或 RHEL 等受支持系统。
- 防火墙与端口:确保 HTTP/HTTPS 放行(如 firewalld:sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload)。
- 安全更新优先:在资源紧张或稳定性要求高的场景,优先执行仅安全更新(如 yum update --security 或 unattended-upgrades)。