LNMP故障排查流程与要点
一、快速定位流程
二、关键日志与配置文件路径
| 组件 | 常用服务管理 | 关键日志 | 常用配置文件 | 快速校验/重启 |
|---|---|---|---|---|
| Nginx | systemctl status nginx | /var/log/nginx/error.log(访问日志 /var/log/nginx/access.log) | /etc/nginx/nginx.conf、/etc/nginx/sites-available/ | nginx -t;systemctl reload nginx |
| PHP-FPM | systemctl status php-fpm | /var/log/php-fpm/error.log(路径随版本/发行版可能为 /var/log/php7.x-fpm.log) | /etc/php/{version}/fpm/php.ini、/etc/php/{version}/fpm/pool.d/www.conf | systemctl reload php-fpm |
| MySQL/MariaDB | systemctl status mysql/mariadb | /var/log/mysql/error.log;慢查询日志 /var/log/mysql/slow.log | /etc/mysql/my.cnf 或 /etc/my.cnf | mysqladmin ping;systemctl restart mysql |
| 系统 | - | /var/log/syslog 或 /var/log/messages | - | tail -f /var/log/syslog |
三、常见故障与处理对照表
| 症状 | 优先检查 | 快速修复要点 |
|---|---|---|
| 502 Bad Gateway | Nginx error.log 报 “connect() to unix:/run/php/phpX.Y-fpm.sock failed” 或 “Connection refused”;PHP-FPM 未运行/进程耗尽 | 确认 php-fpm 运行;核对 fastcgi_pass 与 listen 一致(socket 路径或 127.0.0.1:9000);适当调大 pm.max_children;重启 php-fpm 与 nginx |
| 504 Gateway Timeout | 后端处理慢或网络延迟;Nginx 超时配置偏小 | 优化慢接口/SQL;适度增大 fastcgi_read_timeout / fastcgi_send_timeout;检查数据库慢查询 |
| 403 Forbidden | 目录无索引文件且未开启 autoindex;文件/目录权限错误;SELinux/AppArmor 限制 | 设置默认首页或开启 autoindex;校正权限(文件 644、目录 755);检查 SELinux/AppArmor 策略 |
| 500 Internal Server Error | PHP 语法/致命错误、未捕获异常;PHP-FPM 启动失败 | 打开/查看 PHP 错误日志;修正代码或扩展问题;确保 php.ini 与 pool 配置正确 |
| Nginx 无法启动/端口被占用 | 端口冲突、配置语法错误 | 用 ss/netstat 查占用并释放;执行 nginx -t 修正语法后启动 |
| MySQL 无法连接 | 服务未启动、连接参数错误、权限/防火墙 | 用 mysqladmin ping 与 error.log 排查;核对 主机/端口/用户/密码;放行 3306 或调整授权 |
| 网站访问慢 | CPU/内存/磁盘 I/O 瓶颈;慢查询;外部依赖 | 用 top/vmstat/iostat 定位瓶颈;开启并分析 slow.log;优化索引/SQL 与缓存策略 |
四、高效排查命令清单
五、排错最佳实践