下面按常见场景给你一套在 Debian + LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 环境下的调试思路与常用命令,从“我该先看哪里”到“逐项排查”。
LNMP 常见出问题的地方:
| 层级 | 常见现象 |
|---|---|
| Nginx | 502 / 404 / 访问无响应 |
| PHP | 页面空白、500、PHP 不执行 |
| MySQL | 连不上数据库 |
| 系统 | 权限、端口、防火墙 |
systemctl status nginx
启动 / 重启:
systemctl start nginx
systemctl restart nginx
tail -f /var/log/nginx/error.log
常见错误:
connect() failed (111: Connection refused) → PHP-FPM 没启动permission denied → 权限问题no live upstreams → 后端挂了tail -f /var/log/nginx/access.log
状态码含义:
nginx -t
systemctl status php-fpm
# 或(Debian 常见)
systemctl status php8.2-fpm
启动:
systemctl start php8.2-fpm
tail -f /var/log/php8.2-fpm.log
或:
journalctl -u php8.2-fpm -f
常见两种:
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
检查 socket 是否存在:
ls -l /run/php/
权限问题常见:
chown www-data:www-data /run/php/php8.2-fpm.sock
fastcgi_pass 127.0.0.1:9000;
创建测试文件:
echo "<?php phpinfo();" > /var/www/html/info.php
访问:
http://服务器IP/info.php
编辑:
vim /etc/php/8.2/fpm/php.ini
设置:
display_errors = On
error_reporting = E_ALL
重启:
systemctl restart php8.2-fpm
systemctl status mariadb
# 或
systemctl status mysql
mysql -u root -p
tail -f /var/log/mysql/error.log
检查:
测试:
telnet 127.0.0.1 3306
Debian 默认 Web 用户是:
www-data
检查网站目录权限:
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
ss -lntp
确认:
ufw status
放行 Web:
ufw allow 80
ufw allow 443
90% 是 PHP-FPM 问题
排查顺序:
fastcgi_pass 是否正确# 1. 看 Nginx 状态
systemctl status nginx
# 2. 看错误日志
tail -f /var/log/nginx/error.log
# 3. 看 PHP-FPM
systemctl status php8.2-fpm
# 4. 测试 PHP
curl http://localhost/info.php
你可以直接贴出:
nginx -t 输出502 / 500 / 404 具体现象我可以一步一步帮你定位 ✅