在 Debian 和 Ubuntu 上配置 WordPress + Nginx + PHP 的环境,核心差异非常小,甚至可以说几乎没有本质区别。
原因在于:
✅ 1. 同源性
Ubuntu 是基于 Debian 开发的 Linux 发行版。两者共享:
- 相同的包管理器基础(
apt/dpkg) - 相似的目录结构(如
/etc/nginx/,/var/www/html/) - 相同的系统服务管理方式(
systemd) - 相同的软件包名称(如
nginx,php-fpm,mysql-server)
✅ 2. 软件包高度一致
在两个系统上安装相同版本的软件时,命令几乎完全一样:
# 两者都适用
sudo apt update
sudo apt install nginx php-fpm php-mysql mysql-server
✅ 3. 配置文件格式与路径相同
Nginx 和 PHP-FPM 的配置文件位置、语法、模块加载方式在 Debian 和 Ubuntu 上完全一致。例如:
- Nginx 主配置:
/etc/nginx/nginx.conf - WordPress 站点配置示例通常放在
/etc/nginx/sites-available/或/etc/nginx/conf.d/ - PHP-FPM pool 配置:
/etc/php/<version>/fpm/pool.d/www.conf
⚠️ 唯一需要注意的细微差异
| 项目 | Debian | Ubuntu |
|---|---|---|
| 默认 PHP 版本 | 可能较旧(依赖发行版周期) | 通常更新更快,提供多个 PHP 版本PPA |
| 安全更新策略 | 更保守,更新频率较低 | 更积极,定期推送新内核和安全补丁 |
| 预装工具 | 最小化安装 | 某些桌面版可能预装额外工具(服务器版则无影响) |
| AppArmor vs SELinux | 默认启用 AppArmor | 同样默认启用 AppArmor(非 SELinux) |
| PHP 扩展安装 | apt install php8.1-mysql |
同样命令,但可用版本范围更广 |
📌 实际影响:这些差异在日常部署中几乎不可感知。只要确保安装的 PHP/Nginx/MariaDB 版本兼容即可。
✅ 推荐做法(通用脚本适用于两者)
以下是一个在 Debian 或 Ubuntu 上均可运行的标准化部署流程:
# 1. 更新系统
sudo apt update && sudo apt upgrade -y
# 2. 安装 Nginx, PHP-FPM, MariaDB
sudo apt install nginx mariadb-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip -y
# 3. 启动并启用服务
sudo systemctl enable --now nginx mariadb php8.1-fpm # 注意替换为实际PHP版本
# 4. 配置数据库
sudo mysql_secure_installation
sudo mysql -u root -p -e "CREATE DATABASE wordpress; CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'strong_password'; GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost'; FLUSH PRIVILEGES;"
# 5. 下载 WordPress
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
sudo cp -r wordpress/* /var/www/html/
sudo chown -R www-data:www-data /var/www/html/
# 6. 创建 Nginx 站点配置
sudo tee /etc/nginx/sites-available/wordpress <<EOF
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 根据实际PHP版本调整
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.ht {
deny all;
}
}
EOF
# 7. 启用站点并重启 Nginx
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
🔍 总结
| 问题 | 答案 |
|---|---|
| 配置差异大吗? | 不大,几乎无差异 |
| 能否用同一套教程? | 可以,绝大多数教程同时适用于两者 |
| 需要注意什么? | 仅需注意 PHP 版本兼容性 和 包名中的版本号(如 php8.1-fpm vs php8.2-fpm) |
| 最佳实践建议 | 使用 Docker 或 Ansible/Puppet 等自动化工具,可彻底屏蔽发行版差异 |
💡 进阶建议:如果希望完全避免发行版差异,推荐使用 Docker Compose 部署 LEMP 栈,这样无论主机是 Debian、Ubuntu 还是其他 Linux 发行版,环境都完全一致。
云知识CLOUD