在 Debian 上搭建 LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 时出错很常见,排查思路基本是分层定位。下面我按最常见错误场景 → 排查方法 → 解决办法给你一个实用指南。
LNMP 每一层都可能出错:
| 层 | 常见表现 |
|---|---|
| Nginx | 403 / 502 / 网站打不开 |
| PHP | 页面空白 / PHP 不解析 |
| MySQL/MariaDB | 连不上数据库 |
| 系统 | 服务起不来 / 端口冲突 |
sudo systemctl status nginx
常见原因:
检查:
sudo nginx -t
ss -lntp | grep :80
解决:
sudo apt install nginx -y
sudo systemctl restart nginx
原因:
index 文件不存在检查:
ls -l /var/www/html
修复权限(常见规范):
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
原因:
检查:
systemctl status php-fpm
# 或
systemctl status php8.x-fpm
Nginx 配置示例(关键):
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
原因:
fastcgi_pass 错误✅ 必须安装:
sudo apt install php-fpm php-mysql
sudo vi /etc/php/8.2/fpm/php.ini
设置:
display_errors = On
log_errors = On
重启:
sudo systemctl restart php8.2-fpm
sudo systemctl status mariadb
常见原因:
修复:
sudo journalctl -xe
sudo dpkg --configure -a
确认服务在运行:
ss -lntp | grep 3306
确认 PHP 扩展:
php -m | grep mysql
✅ 没装就装:
sudo apt install php-mysql
# Nginx
sudo tail -f /var/log/nginx/error.log
# PHP
sudo tail -f /var/log/php8.2-fpm.log
# MariaDB
sudo tail -f /var/log/mysql/error.log
sudo apt update
sudo apt install nginx mariadb-server php-fpm php-mysql
测试 PHP:
echo "<?php phpinfo();" | sudo tee /var/www/html/info.php
访问:
http://服务器IP/info.php
你可以直接把 错误信息贴出来,例如:
systemctl status nginx 输出/var/log/nginx/error.log 报错我可以 精确到哪一行配置错了。