部署 Laravel 应用
PHP artisan 框架,用 Octane、Forge 或 Vapor,含队列 worker 和 Horizon 仪表盘。
平台高级
为什么
Laravel 提供优雅语法、Eloquent ORM 和丰富生态(队列、事件、广播)。Laravel Forge/Vapor 一键部署,Octane 用 Swoole/RoadRunner 提升 5-10 倍性能。
平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。
何时使用
PHP Web 应用、SaaS 和富领域逻辑 API 用 Laravel。高流量选 Octane;serverless AWS 选 Vapor。
如何做
1. 构建 — composer install --no-dev,php artisan optimize
2. Forge — 服务器配置 + Git 零停机部署
3. Vapor — AWS Lambda serverless,vapor deploy
4. Octane — php artisan octane:start --server=swoole 高性能
5. 迁移 — 仅首次部署 php artisan migrate:fresh --seed
6. 队列 — php artisan queue:work,supervisor 保活
7. 存储 — php artisan storage:link 公共磁盘符号链接
8. 环境 — .env.production,APP_DEBUG=false,APP_ENV=production
示例
# Dockerfile — Laravel + Nginx + PHP-FPM
FROM composer:2 AS vendor
WORKDIR /app
COPY composer.* ./
RUN composer install --no-dev --optimize-autoloader
FROM php:8.3-fpm-alpine
WORKDIR /app
COPY --from=vendor /app/vendor ./vendor
COPY . .
RUN php artisan optimize && php artisan storage:link
EXPOSE 9000
# supervisor.conf — 队列 worker
[program:queue]
command=php /app/artisan queue:work redis --sleep=3 --tries=3
autostart=true
autorestart=true
# vapor.yml — serverless AWS
name: myapp
environments:
production:
database: myapp-prod
cache: myapp-redis
memory: 1024
runtime: php-8.3-alpine
常见问题
- ⚠部署后类未找到 — 忘记 composer dump-autoload 或 optimize
- ⚠Storage 链接断 — 未运行 php artisan storage:link,文件上传 404
- ⚠队列任务卡住 — 无 supervisor,queue:work 死亡不重启
最佳实践
- ✓高流量用 Laravel Octane(Swoole/RoadRunner)— 应用常驻内存,快 5-10 倍
- ✓队列 worker 用 supervisor 管理 — 崩溃自动重启,确保任务始终处理
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求