对于新手搭建 Laravel 开发环境,我的核心建议是:首选 Ubuntu(或 Debian 系),次选 CentOS/RHEL 系。
如果是在本地开发(Local Development)或者使用云服务器进行初步学习,Ubuntu 20.04/22.04 LTS 是更平滑、更少踩坑的选择。
以下从技术细节、生态兼容性、运维成本三个维度为你深度解析为什么这么推荐,并给出具体落地方案。
1. 包管理与依赖安装的“顺滑度”差异
Laravel 的底层依赖非常重:PHP、Composer、Nginx/Apache、MySQL/MariaDB、Redis、Node.js (用于前端构建) 等。
-
Ubuntu (APT):
- 命令直观:
apt update && apt install php8.1-fpm nginx mysql-server redis - 社区文档多:StackOverflow 上绝大多数 PHP/Laravel 教程默认基于 Ubuntu/Debian。遇到问题,搜到的解决方案直接复制粘贴即可运行。
- PPA 源丰富:如果你需要特定版本的 PHP 或扩展,
ppa:ondrej/php几乎是行业标准,安装极其方便。
- 命令直观:
-
CentOS (YUM/DNF):
- 版本滞后风险:CentOS 7 默认的 PHP 版本较老(5.4/7.0),虽然可以配置 Remi 源来安装新版 PHP,但步骤繁琐,且容易因依赖冲突导致系统混乱。
- CentOS 8 已停止维护,目前主流是 CentOS Stream 9 或 Rocky/AlmaLinux。这些发行版的包管理逻辑与 Ubuntu 不同,且国内镜像源同步有时存在延迟。
- SELinux 陷阱:CentOS 默认开启 SELinux,对于新手来说,配置 Nginx 和 PHP-FPM 的权限往往会被 SELinux 拦截,报错信息晦涩难懂,排查成本极高。
2. Laravel 官方及社区的最佳实践支持
-
Homestead/Valet 的底层逻辑:
- Laravel 官方的 Homestead 虚拟机默认基于 Ubuntu。
- Laravel Valet(macOS 推荐工具)在 Linux 下也主要适配 Ubuntu/Debian 的路径和包管理器。
- 这意味着,当你阅读官方文档或第三方高质量教程时,代码示例大多是基于 Ubuntu 语境的。
-
Docker 容器的通用性:
- 现在主流做法是使用 Docker 容器化部署。Docker 官方基础镜像中,
php:8.2-fpm等镜像通常基于 Debian Slim 或 Alpine。 - 虽然宿主机是 CentOS 还是 Ubuntu 对 Docker 影响不大,但在编写
Dockerfile或处理宿主机关联文件权限问题时,Ubuntu 的用户组命名(如www-data)与常见镜像更契合,而 CentOS 常用nginx或apache用户,偶尔会出现权限不一致的小麻烦。
- 现在主流做法是使用 Docker 容器化部署。Docker 官方基础镜像中,
3. 云服务器厂商与国内生态现状
你提到熟悉国内云厂商,这点很关键:
-
阿里云/腾讯云/华为云:
- 所有厂商都提供 Ubuntu 20.04/22.04 的一键镜像。
- 国内很多针对 Laravel 优化的面板(如宝塔面板 BT Panel)对 Ubuntu 的支持力度更大,插件市场更新更快。
- 虽然宝塔也支持 CentOS,但由于 CentOS 7 停服潮的影响,许多新发布的软件包优先适配 Debain/Ubuntu 体系。
-
企业级生产环境例外:
- 如果你的目标是进入大型国企、银行或对稳定性要求极高的传统行业,他们可能强制要求使用 CentOS Stream / Rocky Linux / Anolis OS(龙蜥)。
- 在这种情况下,你需要掌握如何在 RHEL 系系统上编译安装高版本 PHP 和使用 EPEL 源。但这属于“进阶运维”范畴,不适合新手入门。
✅ 推荐方案:新手最佳实践路径
方案一:本地开发 + 远程服务器(最推荐)
-
本地开发机(Windows/Mac/Linux):
- Windows:使用 Laragon 或 XAMPP,或者直接用 WSL2 安装 Ubuntu。
- Mac:使用 Laravel Valet(一键启动,体验极佳)。
- Linux:直接安装 Ubuntu Desktop,使用
apt安装 LEMP stack。
-
云服务器(测试/演示用):
- 选择 Ubuntu 22.04 LTS。
- 使用 宝塔面板(BT Panel) 或 OneinStack 等一键部署工具。
- 原因:新手不需要手动配置 Nginx 虚拟主机、SSL 证书、PHP 扩展。面板会自动处理,让你专注于 Laravel 代码本身。
方案二:纯命令行硬核玩家(适合想深入理解原理)
如果你坚持要用命令行从零搭建,以下是 Ubuntu 上的标准流程:
# 1. 更新系统
sudo apt update && sudo apt upgrade -y
# 2. 安装 Nginx
sudo apt install nginx -y
# 3. 安装 PHP 及相关扩展(以 PHP 8.2 为例)
sudo apt install php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring php8.2-xml php8.2-bcmath php8.2-zip php8.2-intl -y
# 4. 安装 MySQL
sudo apt install mysql-server -y
# 5. 安装 Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
# 6. 配置 Nginx 指向 Laravel 的 public 目录(需手动编辑 /etc/nginx/sites-available/default)
⚠️ 注意:在 CentOS 上,第 3 步会变成
yum install remi-php82 php-fpm ...等一系列复杂操作,且需额外配置 Remi GPG key 和 enable remi-php82 repo。
❌ 不推荐的原因总结
| 对比项 | Ubuntu | CentOS (Stream/Rocky) |
|---|---|---|
| 安装难度 | ⭐☆☆☆☆ (极简) | ⭐⭐⭐☆☆ (中等,需配源) |
| 文档匹配度 | ⭐⭐⭐⭐⭐ (几乎全部匹配) | ⭐⭐☆☆☆ (部分过时或不适用) |
| SELinux 干扰 | 无默认严格限制 | 有,易导致 403 Forbidden |
| 社区资源 | 海量 StackOverflow 答案 | 较少,且多为企业级场景 |
| 学习曲线 | 平缓 | 陡峭 |
📌 最终结论
作为新手,你的首要目标是快速跑通 Laravel 项目,建立信心,理解框架逻辑,而不是花费大量时间解决操作系统层面的依赖冲突。
因此,请毫不犹豫地选择 Ubuntu 22.04 LTS。等你熟练掌握了 Laravel 的核心概念后,再尝试迁移到 CentOS/RHEL 系系统也不迟,那时你会有足够的知识去应对那些“坑”。
💡 小贴士:无论选择哪个系统,强烈建议在后续学习中引入 Docker。Docker 屏蔽了底层操作系统的差异,让你的开发环境在任何机器上都保持一致,这才是现代 Web 开发的正确打开方式。
云技术博客