LNMP故障排查实战技巧
一、快速定位流程
二、高频故障与对策
| 症状 | 快速检查 | 常见根因 | 修复建议 |
|---|---|---|---|
| 502 Bad Gateway | 看Nginx error.log是否提示“connect() to unix:/run/php/… failed”或“Connection refused”;确认PHP-FPM是否存活 | fastcgi_pass指向错误;PHP-FPM未启动;进程数不足;权限/套接字问题 | 修正fastcgi_pass;启动PHP-FPM;调大pm.max_children;统一Nginx与PHP-FPM运行用户;检查listen.owner/group与目录权限 |
| Nginx无法启动 | 执行nginx -t;netstat查80/443是否被占用 | 配置语法错误;端口冲突;依赖未起 | 修正配置并reload;释放或更换端口;确保依赖服务已启动 |
| 403 Forbidden | 查看Nginx error.log“Permission denied”;ls -l检查目录/文件属主与权限 | 目录/文件权限或属主错误;SELinux/防火墙策略限制 | 将网站目录设为www-data:www-data 755/644;按需调整SELinux/防火墙策略 |
| PHP错误不显示 | 检查php.ini的error_log与PHP-FPM日志;确认display_errors在开发环境开启 | 错误被记录但未展示;日志路径错误 | 开启display_errors(仅开发环境);修正error_log路径并赋权;tail -f实时观察日志 |
| MySQL无法启动 | 查看/var/log/mysql/error.log或/var/log/mariadb/error.log;检查数据目录权限与端口 | 配置错误;数据目录权限错误;端口冲突;磁盘满 | 校验配置;chown -R mysql:mysql /var/lib/mysql;释放或更换3306端口;清理磁盘 |
| 连接MySQL失败 | telnet 主机 3306;核对用户host白名单 | 监听地址/端口不对;用户host限制;防火墙阻断 | 修正my.cnf监听;调整用户host;放行3306端口 |
| 网站访问慢 | top/htop、iostat、MySQL慢查询日志 | PHP慢脚本;SQL未优化;连接瓶颈;磁盘IO高 | 优化代码与SQL;增加缓存;调优连接与缓冲池;排查磁盘IO与慢盘 |
三、关键命令与日志路径速查
四、实战排障最小闭环
五、预防与优化建议