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),使用 ufw 或 iptables 实施最小暴露面。
- 强化 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.sock 或 127.0.0.1:9000),核对 Nginx fastcgi_pass 与 php.ini 改动。
- 数据库无法连接:检查 MySQL 是否运行、应用账号权限与主机限制、是否强制 TLS、以及防火墙策略。