温馨提示×

Ubuntu LNMP如何更新和维护

小樊
43
2025-12-14 06:54:21
栏目: 智能运维

Ubuntu LNMP 更新与维护实操手册

一 更新流程与版本核验

  • 执行全系统更新并升级已安装包:
    • 更新索引:sudo apt update
    • 安全与常规升级:sudo apt upgrade
    • 如需处理依赖变更与新内核:sudo apt full-upgrade
    • 清理无用包:sudo apt autoremove && sudo apt autoclean
  • 分别更新与核验组件版本:
    • Nginx:sudo apt install nginx && sudo systemctl restart nginx && nginx -v
    • MySQL/MariaDB:sudo apt install mysql-server && sudo systemctl restart mysql(MariaDB 为 mariadb-server
    • PHP(以 8.1 为例):sudo apt install php8.1 php8.1-fpm php8.1-mysql && sudo systemctl restart php8.1-fpm && php -v
  • 变更生效前务必进行配置语法检查与平滑重启:
    • Nginx:sudo nginx -t && sudo systemctl reload nginx
    • PHP-FPM:sudo systemctl reload php8.1-fpm
  • 建议将以上步骤纳入定期维护计划(如每周例行更新)。

二 日常维护与监控

  • 日志与故障排查:
    • Nginx 错误日志:/var/log/nginx/error.log
    • MySQL 错误日志:常见路径 /var/log/mysql/error.log
    • PHP-FPM 日志:常见路径 /var/log/php8.1-fpm.log(按实际版本号调整)
    • 使用 tail -f 实时查看,结合时间与关键错误关键词定位问题。
  • 性能与健康监控:
    • 资源与连接:htop、iotop、netstat -tulpen | grep ‘:80|:443’
    • 服务状态:systemctl status nginx mysql php8.1-fpm
    • 可视化监控:部署 Prometheus + Grafana 采集 Nginx、MySQL、PHP-FPM 指标并设置告警。

三 安全加固要点

  • 系统与访问控制:
    • 仅开放必要端口(如 22/80/443),使用 ufwiptables 实施最小暴露面。
    • 强化 SSH:禁用 root 密码登录、启用密钥登录、可更改默认端口、结合 fail2ban 防暴力破解。
  • Web 与数据库安全:
    • Nginx:隐藏版本号 server_tokens off;,启用安全响应头(如 X-Frame-Options、X-Content-Type-Options、Content-Security-Policy、Strict-Transport-Security),限制目录浏览与请求方法。
    • PHP:禁用危险函数(如 exec、system、shell_exec、proc_open 等),关闭错误显示 display_errors = Off,开启错误日志 log_errors = On,必要时用 open_basedir 限制目录访问。
    • MySQL:执行 mysql_secure_installation,删除匿名/弱口令账户,限制 root 远程登录,按最小权限创建应用账号,启用 TLS 加密连接。
  • 加密与证书:
    • 全站启用 HTTPS,使用 Let’s Encrypt 自动签发与续期证书,配置强加密套件与 HSTS。

四 备份恢复与回滚策略

  • 数据库备份:
    • 全库备份:mysqldump -u root -p --single-transaction --routines --triggers --all-databases > backup_$(date +%F).sql
    • 单库备份:mysqldump -u appuser -p appdb > backup_appdb_$(date +%F).sql
  • 文件与配置备份:
    • 网站根目录:tar czf www_$(date +%F).tar.gz /var/www/html
    • 配置目录:tar czf nginx_conf_$(date +%F).tar.gz /etc/nginx
  • 自动化与保留:
    • 使用 cron 定时备份并配合 logrotate 管理历史备份,保留最近 7–30 天。
  • 恢复演练:
    • 数据库:mysql -u root -p < backup_YYYY-MM-DD.sql
    • 文件:解压覆盖至 /var/www/html 并修正属主属组(如 www-data:www-data)。
  • 回滚预案:
    • 组件层面优先使用包管理器回退版本(如 sudo apt install nginx=<版本>),配置回滚使用事先备份的 /etc 目录。

五 变更管理与故障处置

  • 变更流程:
    • 维护窗口与通知、先在测试环境验证、更新前完整备份、变更中配置语法检查与平滑重载、变更后业务与日志核验、保留回滚方案。
  • 常见问题快速处置:
    • 配置错误导致服务无法启动:执行 sudo nginx -t 或检查对应服务日志定位行号并修复,必要时用备份快速回滚。
    • 更新后 PHP 页面空白或 502:确认 PHP-FPM 已启动且监听正确(如 /run/php/php8.1-fpm.sock127.0.0.1:9000),核对 Nginx fastcgi_passphp.ini 改动。
    • 数据库无法连接:检查 MySQL 是否运行、应用账号权限与主机限制、是否强制 TLS、以及防火墙策略。

0