温馨提示×

怎样调试 linux lnmp

小樊
40
2026-09-12 14:43:44
栏目: 智能运维

“调试 LNMP(Linux + Nginx + MySQL/MariaDB + PHP)”通常指定位并解决网站打不开、502/504、PHP 报错、数据库连不上等问题。下面按「分层排查 → 常用命令 → 典型问题」给你一套实用调试思路。


一、先确认整体链路

请求流程一般是:

浏览器 → Nginx → PHP-FPM → PHP 代码 → MySQL

哪一层断,就从哪一层查。


二、基础状态检查(第一步必做)

1. 查看服务是否运行

systemctl status nginx
systemctl status php-fpm
systemctl status mysql

ps aux | grep -E 'nginx|php-fpm|mysqld'

没运行就启动:

systemctl start nginx php-fpm mysql

三、Nginx 调试

1. 检查配置语法

nginx -t

2. 查看 Nginx 错误日志(最重要)

tail -f /var/log/nginx/error.log

常见错误:

  • permission denied → 权限问题
  • no such file → root 路径错
  • connect() failed (111) → PHP-FPM 没起

3. 打开详细日志(调试用)

nginx.confserver 块中:

error_log /var/log/nginx/error.log debug;

四、PHP / PHP-FPM 调试

1. PHP 是否正常工作

php -v
php -m

2. PHP-FPM 状态

systemctl status php-fpm
journalctl -u php-fpm -f

3. PHP 错误日志

php -i | grep error_log

或看 php.ini

display_errors = On
error_log = /var/log/php/php-error.log

4. 测试 PHP 是否执行

echo "<?php phpinfo();" > /usr/share/nginx/html/info.php

浏览器访问:

http://ip/info.php

5. 常见 502 原因

  • PHP-FPM 没启动
  • fastcgi_pass 地址错(socket 或端口)
  • PHP 执行超时

五、MySQL / MariaDB 调试

1. 能否登录

mysql -u root -p

2. 错误日志

tail -f /var/log/mysqld.log

journalctl -u mariadb

3. PHP 连不上数据库

检查:

  • 主机是否是 localhost(用 socket)还是 127.0.0.1
  • 用户权限
  • 防火墙
SELECT user,host FROM mysql.user;

六、权限问题(非常常见)

1. Nginx 用户

ps aux | grep nginx

通常是 www-datanginx

2. 目录权限

chown -R nginx:nginx /usr/share/nginx/html
chmod -R 755 /usr/share/nginx/html

3. SELinux(CentOS)

setenforce 0

audit2why < /var/log/audit/audit.log

七、网络与防火墙

netstat -tunlp | grep -E '80|443|9000|3306'
firewall-cmd --list-all

八、典型问题速查表

现象 可能原因
403 目录无索引文件 / 权限不足
404 root 路径错
500 PHP 代码报错
502 PHP-FPM 挂了
504 PHP 执行超时
连不上 DB 账号/权限/防火墙

九、推荐调试顺序(实战)

  1. nginx -t
  2. tail -f /var/log/nginx/error.log
  3. systemctl status php-fpm
  4. tail -f php-error.log
  5. mysql -u xxx -p

如果你愿意,可以告诉我:

  • 系统(CentOS / Ubuntu)
  • 报错页面或日志内容
  • LNMP 是源码装还是一键包(LNMP.org /宝塔)

我可以直接帮你定位具体错误。

0