在 Debian 上安装 LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 时经常报错,通常不是“Debian 不支持 LNMP”,而是源、版本、依赖、权限或服务冲突导致。下面我按最常见原因 → 对应解决办法给你系统梳理一下,你可以对照排查。
很多教程直接复制 Ubuntu 的源,导致 Debian 找不到包。
典型报错
E: Unable to locate package nginx
E: Package 'php-fpm' has no installation candidate
✅ 解决办法
# 使用 Debian 官方源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo nano /etc/apt/sources.list
示例(Debian 12 Bookworm):
deb http://deb.debian.org/debian bookworm main
deb http://deb.debian.org/debian bookworm-updates main
deb http://security.debian.org/debian-security bookworm-security main
然后:
sudo apt update
Debian 12 默认是 PHP 8.2,但很多教程用的是 7.x。
典型报错
No package php7.4-fpm available
✅ 解决办法
apt show php
apt-cache search php-fpm
推荐:
sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring
Debian 默认用 MariaDB,不是 MySQL。
典型报错
Unable to locate package mysql-server
✅ 解决办法
sudo apt install mariadb-server
如果你想用 MySQL:
sudo apt install default-mysql-server
⚠️ 不要同时装 MySQL + MariaDB
Nginx 起不来,多半是 80 / 443 被占用。
典型报错
bind() to 0.0.0.0:80 failed (98: Address already in use)
✅ 解决办法
sudo ss -lntp | grep 80
sudo apt remove apache2
sudo systemctl stop apache2
典型报错
Permission denied
✅ 解决办法
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
典型报错
502 Bad Gateway
✅ 检查服务
systemctl status nginx
systemctl status php8.2-fpm
systemctl status mariadb
启动:
sudo systemctl start nginx php8.2-fpm mariadb
sudo systemctl enable nginx php8.2-fpm mariadb
很多 LNMP 一键脚本 不适合 Debian,尤其是:
✅ 建议
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装 Nginx
sudo apt install nginx -y
# 安装 MariaDB
sudo apt install mariadb-server -y
# 安装 PHP
sudo apt install php-fpm php-mysql -y
# 启动服务
sudo systemctl enable nginx mariadb php8.2-fpm
sudo systemctl start nginx mariadb php8.2-fpm
测试 PHP:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
你可以直接把 完整报错信息 发出来,比如:
journalctl -xesystemctl status xxx我可以 逐行帮你分析,甚至给你一份 Debian 12 专用 LNMP 安装脚本。