在 Debian 上部署 LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 并实现“兼容”,通常关注 软件版本兼容、PHP 与 Nginx 的配合、PHP 与 MySQL 的驱动、以及不同 PHP 版本共存。下面按常见场景给你一个实用兼容方案。
| Debian 版本 | 推荐 LNMP 组合 |
|---|---|
| Debian 10 (Buster) | Nginx 1.14 / MariaDB 10.3 / PHP 7.3 |
| Debian 11 (Bullseye) | Nginx 1.18 / MariaDB 10.5 / PHP 7.4 |
| Debian 12 (Bookworm) | Nginx 1.22 / MariaDB 10.11 / PHP 8.2 |
✅ 建议:优先使用 Debian 官方源,避免混用第三方源导致不兼容
sudo apt update
sudo apt install nginx -y
验证:
nginx -v
sudo apt install mariadb-server -y
sudo mysql_secure_installation
✅ MariaDB 完全兼容 MySQL,PHP 无需额外改动
sudo apt install php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip -y
查看 PHP 版本:
php -v
ls /run/php/
常见:
php-fpm.sock(推荐)php7.4-fpm.sockphp8.2-fpm.sockserver {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}
⚠️ PHP 版本必须和 sock 文件名一致
检查:
php -m | grep mysql
❌ 不要使用旧 mysql_* 函数(PHP 7+ 已移除)
sudo apt install php7.4-fpm php8.2-fpm -y
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
或:
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
✅ 同一个 Nginx + MySQL,兼容多个 PHP 项目
原因:
解决:
sudo systemctl status php8.2-fpm
sudo nginx -t
sudo apt install php-mysql
sudo systemctl restart php-fpm
✅ 使用第三方源(如 ondrej):
sudo apt install curl
curl -sSL https://packages.sury.org/php/README | bash
sudo apt update
sudo apt install php7.4-fpm
⚠️ 注意系统稳定性
✅ 最稳妥
Debian 11 + Nginx + MariaDB + PHP 7.4
✅ 现代方案
Debian 12 + Nginx + MariaDB + PHP 8.2
✅ 老项目兼容
Debian + 多 PHP-FPM + 不同站点指定 PHP
如果你能告诉我:
我可以给你一套 完全匹配你环境的 LNMP 安装方案 ✅