温馨提示×

LNMP如何实现自动更新

小樊
40
2025-12-21 23:18:05
栏目: 编程语言

LNMP自动更新方案

一 核心思路与准备

  • 明确范围:区分系统安全补丁组件主版本升级(Nginx、MySQL/MariaDB、PHP)。生产环境建议优先自动化安全补丁,主版本升级采用灰度或维护窗口执行。
  • 备份与回滚:更新前备份数据库网站代码配置文件(如 Nginx、PHP-FPM、MySQL/MariaDB 配置),并准备回滚方案(快照、包管理器历史、脚本自带备份/回滚能力)。
  • 兼容性验证:升级前确认应用与PHP版本扩展数据库的兼容性,必要时在测试环境验证。
  • 变更窗口与通知:选择低峰时段,准备回滚预案告警通知(如更新失败自动回滚并告警)。

二 Debian Ubuntu 路线

  • 启用无人值守安全更新
    • 安装并启用组件:sudo apt-get install -y unattended-upgrades apt-listchanges
    • 启用自动更新:sudo dpkg-reconfigure --priority=low unattended-upgrades(按提示开启)
    • 配置策略:编辑 /etc/apt/apt.conf.d/50unattended-upgrades,保留安全更新
      • 典型配置片段:Unattended-Upgrade::Allowed-Origins { “${distro_id}:${distro_codename}-security”; };
    • 可选:图形化配置 sudo unattended-upgrades-gtk
  • 组件更新与重启
    • 安全补丁:由 unattended-upgrades 自动完成;必要时重启受影响服务(如内核更新后重启系统)。
    • 主版本升级:不建议全自动,建议手动执行并验证
      • Nginx:sudo apt install --only-upgrade nginx
      • MySQL/MariaDB:sudo apt install --only-upgrade mysql-server 或 mariadb-server
      • PHP:sudo apt install --only-upgrade php-fpm php-mysql 等扩展
      • 重启服务:sudo systemctl restart nginx php*-fpm mysql/mariadb
  • 维护与清理
    • 定期清理:sudo apt autoremove -y && sudo apt clean
    • 查看日志:/var/log/unattended-upgrades/、/var/log/apt/history.log、/var/log/syslog。

三 CentOS RHEL 路线

  • 启用 DNF Automatic(推荐)
    • 安装:sudo dnf install -y dnf-automatic
    • 配置:编辑 /etc/dnf/automatic.conf
      • apply_updates = yes
      • download_updates = yes
      • emit_via = email(或 motd、stdio)
    • 启用并启动定时器:sudo systemctl enable --now dnf-automatic.timer
  • 组件更新与重启
    • 安全补丁:由 dnf-automatic 自动完成;内核或关键库更新后按需重启(可配合 reboot-notifier 或脚本判断)。
    • 主版本升级:不建议全自动,建议手动执行并验证
      • Nginx:sudo dnf update nginx
      • MySQL/MariaDB:sudo dnf update mysql-server 或 mariadb-server
      • PHP:sudo dnf update php php-fpm 及扩展
      • 重启服务:sudo systemctl restart nginx php-fpm mysql/mariadb
  • 维护与清理
    • 清理:sudo dnf autoremove -y && sudo dnf clean all
    • 查看日志:/var/log/dnf.log、/var/log/dnf.rpm.log。

四 使用 LNMP 一键安装包的升级方式

  • 适用对象:使用 lnmp.org 一键安装包的环境。
  • 升级脚本:在解压的 LNMP 目录中执行
    • Nginx:./upgrade.sh nginx(支持平滑升级,按提示输入目标版本)
    • MySQL/MariaDB:./upgrade.sh mysql 或 ./upgrade.sh mariadb(脚本会做数据备份,仍建议先自行备份)
    • PHP:./upgrade.sh php(注意应用对 PHP 版本的兼容性)
  • 回滚:脚本升级失败可按日志与备份恢复(旧目录、旧 init 脚本、旧 my.cnf 等),详见脚本输出与文档说明。

五 自动化实践与安全建议

  • 灰度与回滚
    • 先灰度一台或少量实例,验证无误再批量;主版本升级失败立即回滚(快照、包管理器历史、脚本备份)。
  • 监控与自愈
    • 监控 Nginx、MySQL/MariaDB、PHP-FPM 状态,异常时自动重启并记录告警;结合健康检查与回滚策略提升可用性。
  • 定时与通知
    • 安全补丁建议全量自动;主版本升级使用定时任务在维护窗口执行,并接入邮件/企业微信/钉钉通知。
  • 配置与扩展管理
    • 使用配置管理工具(如 Ansible、SaltStack)管理 Nginx、PHP-FPM、数据库配置与扩展版本,减少漂移。
  • 版本与变更记录
    • 记录每次更新的版本时间变更人回滚方案,便于审计与复盘。

0