CentOS 上常用的 Laravel 部署工具与方案
一 手工部署与脚本化
- 适用场景:服务器数量少、变更不频繁、需要完全掌控每一步。
- 关键组件:PHP 7.2+、Composer、Nginx/Apache、MariaDB/MySQL;通过命令行完成安装依赖、生成密钥、迁移与缓存优化。
- 基本流程要点:
- 安装与启动服务(如:Nginx/Apache、PHP-FPM、MariaDB)。
- 配置 Web 服务器(Nginx 示例 root 指向项目 public 目录,启用 try_files 转发到 index.php;PHP-FPM 使用 Unix Socket 与 Web 服务器通信)。
- 部署步骤:git clone/rsync 代码 → composer install --no-dev --optimize-autoloader → php artisan key:generate → php artisan migrate --force → php artisan config:cache / route:cache / view:cache。
- 权限与安全:目录 storage、bootstrap/cache 可写;配置 .env 与数据库;放行 80/443 端口;关闭调试模式 APP_DEBUG=false。
二 容器化与编排
- 适用场景:环境一致性要求高、需要快速扩缩容、微服务化或混合部署。
- 核心工具:Docker(构建 PHP-FPM 镜像)、Docker Compose(编排应用与数据库)、可选 Nginx 作为反向代理/静态资源服务。
- 基本流程要点:
- 构建镜像(示例 FROM php:7.4-fpm,安装 git/zip/unzip,拷贝 Composer 并执行 composer install --optimize-autoloader --no-dev)。
- 使用 docker-compose.yml 定义服务(如 web 与 db),挂载代码卷,设置环境变量(如 MYSQL_ROOT_PASSWORD、MYSQL_DATABASE 等)。
- 可选 Nginx 配置:root 指向 /var/www/html/public,location 规则与 try_files 转发到 index.php,PHP 通过 fastcgi_pass 连接 PHP-FPM。
三 CI/CD 自动化部署
- 适用场景:团队开发、多环境(测试/预发/生产)持续交付、降低人工失误。
- 常用工具与平台:GitLab CI/CD、GitHub Actions、Jenkins 等;通过流水线实现构建、测试、制品发布与远程部署。
- 基本流程要点(以 GitLab CI/CD 为例):
- 在仓库根目录配置 .gitlab-ci.yml,定义 stages: build → test → deploy。
- 构建阶段:composer install --optimize-autoloader --no-dev、生成密钥、缓存配置。
- 测试阶段:运行 phpunit 等单元/功能测试。
- 部署阶段:使用 SSH 将产物同步到目标服务器(如 rsync -avz --delete),仅对 master/main 分支触发;服务器需预先配置 SSH 免密登录 与目录权限。
四 常见辅助工具与选择建议
- 辅助工具与用途
- Supervisor:守护队列进程(如 php artisan queue:work),保障任务常驻运行与自动重启。
- Certbot(Let’s Encrypt):自动化申请与续期 HTTPS/TLS 证书,配置 Nginx 启用 443 与证书路径。
- Deployer(PHP):基于 SSH 的“零停机”发布工具,支持多服务器、回滚、共享目录与任务编排。
- rsync/Scp:轻量级文件同步与发布,适合简单场景或作为 CI/CD 的部署步骤。
- 防火墙与安全:firewalld 放行 80/443;数据库仅监听内网;.env 不纳入版本控制;禁用 APP_DEBUG 于生产。
- 选择建议
- 个人/小团队、快速上线:优先“手工部署 + 脚本化”或“Deployer”。
- 环境一致性/弹性伸缩:优先“Docker + Docker Compose”。
- 规范化团队协作与多环境交付:优先“CI/CD 流水线”(GitLab CI/Jenkins/GitHub Actions)。