温馨提示×

Debian LAMP故障排查技巧

小樊
33
2025-12-06 20:53:57
栏目: 智能运维

Debian LAMP故障排查技巧

一 快速定位与日志分析

  • 先确认服务状态与端口连通:使用systemctl status apache2 mariadb php[7.x]-fpm查看是否运行;用**ss -tulpen | egrep ‘:(80|443|3306)’**检查端口占用与监听。
  • 集中查看错误日志:
    • Apache:/var/log/apache2/error.log(实时跟踪:tail -f)
    • MariaDB/MySQL:/var/log/mysql/error.logjournalctl -u mariadb
    • PHP:取决于运行方式,常见为**/var/log/php[7.x]-fpm.log/var/log/apache2/error.log**
  • 高效检索与筛选:
    • 在日志中搜“error/warning”:grep -i “error” /var/log/apache2/error.log
    • 查看系统级错误:journalctl -p err 或按时间段 journalctl --since “2025-12-06 00:00:00”
  • 解析要点:优先关注时间戳、进程ID、日志级别、具体报错行号/文件,据此回溯到配置或代码。

二 分层排查清单

  • Apache
    • 配置语法与站点启用:apache2ctl configtest;检查**/etc/apache2/sites-enabled/**是否启用正确站点。
    • 模块与处理链:确认启用mod_rewrite等必要模块(a2enmod rewrite);如使用PHP-FPM,确认proxy_fcgi与对应MIME-Type配置。
    • 目录与权限:确保DocumentRoot目录对www-data可读可执行;常见权限为文件644、目录755
    • 默认首页:确认DirectoryIndex index.php index.html已设置。
  • PHP
    • 运行形态:区分mod_phpPHP-FPM;FPM需确认php[7.x]-fpm运行且监听正确(socket或TCP)。
    • 错误报告:开发环境可临时开启display_errors = Onerror_reporting = E_ALL;生产环境建议写入日志而非页面输出。
    • 常用扩展:按应用需求启用mysqli/pdo_mysql/gd/mbstring等;修改php.ini后需重启对应服务。
  • MariaDB/MySQL
    • 服务与权限:systemctl status mariadb;登录失败可运行mysql_secure_installation加固与重置策略。
    • 连接与认证:确认应用使用的主机、端口、用户、密码、套接字正确;排查bind-address与防火墙。
    • 错误定位:查看**/var/log/mysql/error.log**与journalctl输出,关注启动失败、权限、磁盘空间等。

三 常见症状与修复对照表

症状 优先检查 快速修复
无法访问网站(空白/超时) 服务状态、端口监听、防火墙 systemctl restart apache2;ss -tulpen
Apache启动失败 配置语法、站点配置、端口占用 apache2ctl configtest;tail -f /var/log/apache2/error.log;ss -tulpen
PHP页面空白或报500 PHP错误日志、语法错误、权限 tail -f /var/log/php[7.x]-fpm.log 或 /var/log/apache2/error.log;php -l file.php
数据库连接失败 凭据、主机、端口、套接字、用户权限 查看应用配置;mysql -u root -p -h 127.0.0.1 -P 3306;/var/log/mysql/error.log
Permission denied 文件/目录属主与权限、SELinux/AppArmor ls -l /var/www/html;ps aux
端口冲突 占用进程 ss -tulpen

四 进阶诊断与验证

  • 最小复现:在**/var/www/html放置info.php**()验证PHP解析;用test_mysql.php测试数据库连接(mysqli_connect),便于快速判断是PHP、Apache还是数据库问题。
  • 运行方式验证:若使用PHP-FPM,确认php[7.x]-fpm运行且Apache ProxyFCGI配置正确;必要时切换为mod_php交叉验证。
  • 网络与防火墙:确认云厂商安全组/本机防火墙放行80/443/3306;本地测试可用curl -I http://localhost。
  • 深入追踪:对可疑进程使用strace -p ;资源瓶颈用top/htop观察;文件/套接字占用用lsof定位。

五 维护与预防建议

  • 变更留痕:修改配置前备份;变更后用apache2ctl configtest校验;修改php.ini或FPM池配置后重启对应服务
  • 安全加固:定期apt update && apt upgrade;运行mysql_secure_installation;限制数据库远程登录;为Web目录设置最小权限。
  • 日志与健康:建立日志轮转(logrotate);对关键错误设置监控告警;定期巡检磁盘空间与InnoDB状态。

0