Debian LAMP 更新与升级步骤
一 操作前准备
- 备份关键数据与配置:网站目录(如 /var/www)、数据库(如 mysqldump -u root -p --all-databases > full_backup.sql)、数据库配置与系统关键配置(如 /etc)。
- 确认运行环境:当前 Debian 版本(如 lsb_release -a)、Web 服务器(Apache)、数据库(MySQL/MariaDB)、PHP 版本与运行方式(mod_php/FPM)。
- 准备维护窗口与回滚方案:确保磁盘空间充足、可短暂停机,保留旧版本包与配置以便回滚。
- 如计划跨大版本升级(如 11 Bullseye → 12 Bookworm),建议先在测试环境演练。
二 日常安全更新与组件升级
- 更新索引与系统包:
- 执行:sudo apt update && sudo apt upgrade,必要时执行 sudo apt full-upgrade;完成后视情况 sudo reboot。
- 重启相关服务:
- sudo systemctl restart apache2
- 数据库:
- sudo systemctl restart mysql(MySQL)或 sudo systemctl restart mariadb(MariaDB)
- PHP:
- FPM:sudo systemctl restart php-fpm
- mod_php:重启 apache2 即可
- 验证运行状态与版本:
- 服务状态:sudo systemctl status apache2 mysql/mariadb php-fpm
- 版本信息:apache2 -v、mysql --version、php -v
- 清理无用包:sudo apt autoremove。
三 跨版本升级 Debian 时的 LAMP 处理
- 逐版本升级原则:如从 10 → 11 → 12,不要跨多代一次性升级。
- 升级前准备:
- 全量备份(数据、配置、证书、密钥)。
- 检查并解除保留包:sudo apt-mark showhold、sudo apt-mark unhold 。
- 调整 APT 源:
- 编辑 /etc/apt/sources.list 与 /etc/apt/sources.list.d/*.list,将旧代号替换为新代号(如 bullseye → bookworm)。
- 执行系统升级:
- sudo apt update && sudo apt full-upgrade && sudo reboot。
- 升级后处理:
- 清理:sudo apt autoremove;
- 验证:lsb_release -a、cat /etc/debian_version;
- 按需重启相关服务或整机。
四 组件升级要点与常见问题
- Apache
- 常规更新:sudo apt upgrade apache2 && sudo systemctl restart apache2;
- 跨版本升级后可用 apache2ctl -v、apache2ctl -M | grep version 验证模块与版本。
- MySQL/MariaDB
- 常规更新:sudo apt upgrade mysql-server 或 sudo apt upgrade mariadb-server,随后 sudo systemctl restart mysql/mariadb;
- 大版本或重要变更前务必全量备份;如使用 MySQL 官方仓库,请按官方指引添加源并升级;升级完成后可用 mysql --version 验证。
- PHP
- 同版本小更新:sudo apt upgrade php* 或指定版本(如 sudo apt upgrade php8.2*),并重启 apache2/php-fpm;
- 跨版本升级(如 8.2 → 8.3/8.4):
- 添加 Ondřej Surý 的 PHP 仓库,导入 GPG 并写入源列表;
- 安装新版本与扩展(如 sudo apt install php8.3 php8.3-cli php8.3-{bz2,curl,mbstring,intl});
- 按需安装 php8.3-fpm 或 libapache2-mod-php8.3;
- 调整 Apache 的 PHP 模块启用状态,切换站点使用的新版本;
- 验证:php -v,并重启 apache2/php8.3-fpm;
- 确认无误后可移除旧版:sudo apt purge php8.2*。
- 常见问题处理
- 依赖冲突:sudo apt -f install;
- 服务无法启动:查看日志(如 journalctl -u apache2、/var/log/mysql/error.log),修正配置后重启;
- 有包被保留:sudo apt-mark unhold ;
- 配置被覆盖:对比 /etc 下新旧配置,使用版本控制或备份恢复自定义项。
五 验证与后续维护
- 版本与连通性验证:
- 系统:lsb_release -a;
- 服务:systemctl status apache2 mysql/mariadb php-fpm;
- 版本:apache2 -v、mysql --version、php -v;
- 应用:访问站点与 /var/www/html/info.php(如启用)核对 PHP 信息。
- 自动化安全更新(可选):
- 安装与启用:sudo apt install unattended-upgrades,配置 /etc/apt/apt.conf.d/20auto-upgrades 为
- APT::Periodic::Update-Package-Lists “1”;
- APT::Periodic::Unattended-Upgrade “1”;
- 检查计划任务:systemctl status apt-daily.timer apt-daily-upgrade.timer;
- 演练:sudo unattended-upgrade --dry-run。