温馨提示×

laravel在centos中的版本选择建议

小樊
36
2025-11-25 19:06:01
栏目: 智能运维

版本选择总览

  • 新项目优先选择Laravel 10 或 11(LTS),以获得更长的安全维护周期与更好的生态支持;若团队已有大量 Laravel 8/9 资产,可在评估升级成本后继续维护现有版本。
  • 操作系统建议优先使用CentOS Stream 8/9或迁移到AlmaLinux/Rocky Linux 8/9;传统的CentOS 7仍可运行,但已进入维护末期,PHP 上游支持较弱,建议仅用于存量业务或过渡期。
  • 版本决策顺序建议:先定操作系统与可用的PHP 版本,再选与之兼容的Laravel 主版本,最后确定具体的小版本与安全补丁级别。

操作系统与 PHP 的搭配建议

  • 下表给出常见组合与适配场景,便于快速决策:
操作系统 建议 PHP 版本 适配的 Laravel 版本 说明
CentOS 7 PHP 7.4(通过 Remi) Laravel 8/9 传统环境、存量项目友好;PHP 7.4 的安全支持有限,不建议新项目采用
CentOS Stream 8/9 PHP 8.1/8.2 Laravel 10/11 新项目推荐组合,生态与性能更均衡
AlmaLinux/Rocky Linux 8/9 PHP 8.1/8.2 Laravel 10/11 RHEL 兼容替代,生产首选平台之一
  • 说明与依据:
    • CentOS 8已于2021 年底停止维护,生产环境更推荐迁移到 Stream 8/9 或 RHEL 兼容发行版。
    • Laravel 8要求PHP ≥ 7.3并需启用若干常见扩展(如 BCMath、Ctype、Fileinfo、Mbstring、OpenSSL、PDO、Tokenizer、XML 等)。
    • 在 CentOS 7 上可通过 Remi 仓库启用 PHP 7.4,满足 Laravel 8/9 的运行需求。

Laravel 版本与 PHP 要求速查

  • Laravel 8PHP ≥ 7.3,需启用 BCMath、Ctype、Fileinfo、Mbstring、OpenSSL、PDO、Tokenizer、XML 等扩展。
  • Laravel 9:建议 PHP 8.0+(实际部署多用 8.1/8.2)。
  • Laravel 10:建议 PHP 8.1+
  • Laravel 11:建议 PHP 8.2+
  • 提示:选择具体小版本时,优先选取包含最新安全修复的“补丁版”(例如 10.x 的最新小版本),避免直接使用 x.0 首发版本。

落地实施要点

  • 在 CentOS 7 上启用 Remi 仓库并安装 PHP 7.4(示例):
    • 安装 EPEL 与 Remi:sudo yum install -y epel-release http://rpms.remirepo.net/enterprise/remi-release-7.rpm
    • 启用 PHP 7.4:sudo yum-config-manager --enable remi-php74
    • 安装 PHP 与常用扩展:sudo yum install -y php php-mysqlnd php-opcache php-mcrypt
  • 在 CentOS Stream 8/9 或 AlmaLinux/Rocky 8/9 上安装 PHP 8.1/8.2(示例使用 dnf 与 Remi 模块流):
    • 启用 Remi 模块流:sudo dnf module enable php:remi-81 或 php:remi-82
    • 安装 PHP 与扩展:sudo dnf install -y php php-mysqlnd php-opcache
  • Composer 与项目创建:
    • 安装 Composer:curl -sS https://getcomposer.org/installer | php && sudo mv composer.phar /usr/local/bin/composer
    • 创建项目(指定版本):composer create-project --prefer-dist laravel/laravel myapp “10.*”
  • Web 服务器与权限:
    • 配置 Apache/Nginx 的 DocumentRoot 指向项目的 public 目录,启用 URL 重写(如 Apache 的 mod_rewrite)。
    • 设置目录权限:确保 storagebootstrap/cache 可写(如将运行用户加入 Web 服务用户组并设定合适的组写权限)。

0