Debian上LNMP的故障排查指南
导读:Debian 上 LNMP 故障排查指南 一 快速定位流程 查看系统整体状态:使用 tail -f /var/log/syslog、journalctl -xe、dmesg 观察启动与运行报错;用 ps aux、top/htop 检查异常...
Debian 上 LNMP 故障排查指南
一 快速定位流程
- 查看系统整体状态:使用 tail -f /var/log/syslog、journalctl -xe、dmesg 观察启动与运行报错;用 ps aux、top/htop 检查异常进程与资源占用;必要时用 strace 跟踪可疑进程的系统调用。
- 检查网络连通与端口可达:对外部做 ping,对关键端口做 telnet 或 nc 测试;排查路由用 traceroute/mtr;本机端口与连接状态用 ss -tulpen 或 netstat -tulpen。
- 确认服务是否运行与开机自启:对 Nginx、MySQL/MariaDB、PHP-FPM 执行 systemctl status/restart/enable,并优先看服务自身的错误日志。
- 校验配置与语法:Nginx 执行 nginx -t;PHP-FPM 执行 php-fpm7.x -t(按实际版本);MySQL 可通过 mysqld --verbose --help | grep -A1 ‘Default options’ 确认读取的配置文件路径并检查。
- 变更前先备份:配置文件与数据库先备份,变更后逐步回滚验证。
二 服务与日志定位对照表
| 症状 | 优先检查 | 关键命令与路径 | 常见修复 |
|---|---|---|---|
| Nginx 无法访问/502/504 | 进程、端口、反向代理配置、PHP-FPM 连通性 | systemctl status nginx;ss -lntp | grep ‘80|443’;nginx -t;检查 fastcgi_pass 地址与端口;查看 /var/log/nginx/error.log |
| Nginx 启动失败 | 配置语法、端口占用、权限 | nginx -t;ss -lntp | grep ‘80|443’;释放占用端口;修正语法与目录权限 |
| PHP-FPM 启动失败 | 套接字/目录权限、进程池配置 | systemctl status php-fpm;php-fpm7.x -t | 创建缺失目录(如 /var/run/php/ 或 /run/php/);修正 listen.owner/group、listen.mode;检查 /etc/php/7.x/fpm/pool.d/www.conf |
| MySQL/MariaDB 无法启动 | 错误日志、数据目录权限、磁盘空间 | systemctl status mysql;ls -ld /var/lib/mysql;df -h | 依据 /var/log/mysql/error.log 修复权限/表损坏;释放磁盘空间;必要时 my.cnf 调优 |
| 网站白屏/报错但 Nginx 200 | PHP 错误日志、display_errors、日志路径 | tail -f /var/log/php7.x-fpm.log;php -i | 开启/修复 log_errors;确保日志目录可写;修正语法错误 |
| APT 更新失败 | 软件源、密钥、网络 | tail -f /var/log/apt/term.log;ping 域名 | 更换 /etc/apt/sources.list 为可用镜像;导入缺失 GPG 密钥;检查 DNS/网络 |
说明:日志与配置路径在不同版本/安装方式下可能略有差异,常见位置包括 /var/log/nginx/error.log、/var/log/mysql/error.log、/var/log/php7.x-fpm.log 或 /var/log/php-fpm.log;Nginx 主配置 /etc/nginx/nginx.conf,PHP-FPM 池配置 /etc/php/7.x/fpm/pool.d/www.conf。
三 常见故障与修复要点
- 502 Bad Gateway / 504 Gateway Timeout:多为 PHP-FPM 无响应或超时。检查 /var/log/nginx/error.log 与 PHP-FPM 日志;确认 listen 地址与 Nginx 的 fastcgi_pass 一致;适当提高 pm.max_children、request_terminate_timeout,并优化慢查询与后端应用性能。
- PHP-FPM 启动失败(目录缺失):老版本 php5-fpm 常见 /var/run/php5 目录缺失,执行 mkdir -p /var/run/php5 后重启;新版本使用 /run/php/,确保 listen.owner/group 与 listen.mode 正确。
- Nginx 配置测试通过但端口未监听:可能配置未生效或被其他进程占用;用 ss -lntp | grep ‘80|443’ 确认实际监听进程,释放端口或修正配置后 nginx -s reload。
- MySQL 启动失败:优先查看 /var/log/mysql/error.log;常见为 数据目录权限、磁盘满、InnoDB 恢复失败;按日志指引修复或恢复备份。
- APT 源不可用/密钥错误:编辑 /etc/apt/sources.list 更换可用镜像;导入缺失 GPG 密钥;网络不通时先 ping 域名排查 DNS/路由。
四 一键诊断命令清单
- 系统与健康:
- 实时日志:tail -f /var/log/syslog
- 资源占用:top/htop
- 进程快照:ps aux
- 内核与启动:dmesg | tail、journalctl -xe
- 网络与端口:
- 连通性:ping 8.8.8.8
- 路由诊断:traceroute 8.8.8.8 或 mtr 8.8.8.8
- 本机端口:ss -tulpen 或 netstat -tulpen
- 服务端口:telnet 127.0.0.1 80 或 nc -zv 127.0.0.1 3306
- 服务与配置:
- Nginx:systemctl status nginx、nginx -t、/var/log/nginx/error.log
- MySQL:systemctl status mysql、/var/log/mysql/error.log
- PHP-FPM:systemctl status php-fpm、php-fpm7.x -t、/var/log/php7.x-fpm.log
- 调试:strace -p -f -o /tmp/strace.log
- 维护与修复:
- 更新:apt update & & apt upgrade
- 依赖:apt-get -f install
- 空间:df -h、du -sh /var/log /var/lib/mysql
- 文件系统(离线):fsck(仅在关机且未挂载时执行)
五 排障最佳实践
- 变更可控:修改前备份配置与数据库;变更后小步验证,保留回滚方案。
- 先日志后改动:优先从 服务日志与系统日志 找到明确报错,再针对性修改。
- 最小化改动:一次只调整一个变量(如 worker_processes、pm.max_children、timeout),便于定位因果。
- 资源先行:遇到不稳定先查 CPU/内存/磁盘/连接数,排除基础资源瓶颈。
- 版本与路径:注意 Debian 版本 与 PHP 主次版本 的差异,配置文件与日志路径可能不同;不确定时以服务实际输出与日志为准。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian上LNMP的故障排查指南
本文地址: https://pptw.com/jishu/762425.html
