讲师中心 微信公众号
AI工具推荐 视频效率加速

Laravel Forge与Envoyer零停机部署指南

浅瑶君_8659

浅瑶君_8659

发布时间:2026-05-19 11:26:19

|

289人浏览过

|

来源于php中文网

原创

Forge默认部署不是零停机,因其直接在current目录执行git pull、composer install和migrate,导致代码/依赖/数据库实时变更,引发Class not found、500错误或队列执行旧逻辑;而Envoyer通过独立release目录、迁移前置、符号链接原子切换及共享路径隔离实现零停机。

laravel forge与envoyer零停机部署指南

Forge 默认部署为什么不是零停机

因为 Forge 没有版本化发布目录,也不做原子切换。它直接在 current 目录里执行 git pull、composer install 和 php artisan migrate —— 这些操作会实时修改正在服务请求的代码和依赖。一旦 composer install 正在写 vendor/,PHP-FPM 就可能加载到一半的类文件;或者迁移删了字段,而旧请求还在用老模型插入数据,立刻报 SQLSTATE[HY000]: General error 或 Call to undefined method。

常见表现包括:

  • 页面偶发 Class not found(autoloader 缓存未更新或 vendor 写入中断)
  • 表单提交 500(新迁移已删字段,但旧代码仍在处理请求)
  • 队列任务持续执行旧逻辑(worker 进程没重启,仍加载旧 release 路径)

Envoyer 的 zero-downtime 是怎么生效的

Envoyer 不是靠“开关”实现零停机,而是强制你用一套确定性流程:每次部署生成独立的 releases/20260514123456 目录,完整跑完 composer install、php artisan migrate --force、php artisan config:cache 后,再用 ln -nfs releases/20260514123456 current 切换软链。这个 ln 命令耗时纳秒级,Nginx 下次请求就自然落到新目录,旧进程继续处理完手头请求。

但前提是:

  • .env 和 storage/ 必须设为共享路径,否则新 release 读不到配置或上传文件
  • php artisan migrate 必须放在 “Deploy” 阶段(即切换前),不能放 “After”
  • 迁移必须向前兼容:比如要删字段,得先上线兼容新旧结构的代码,再单独部署删字段迁移
  • 队列进程需手动重启或配置为优雅退出,否则仍执行旧代码

在 Forge 上模拟 Envoyer 风格部署的关键步骤

Forge 允许你完全重写部署脚本,只要手动补上 Envoyer 那套结构就行。核心不是工具,是动作顺序。

Laravel Creem Agent
Laravel Creem Agent

Creem 支付商店助理 — 查询订阅、客户、交易、产品,执行心跳检查,管理本地 Laravel支付商店。

下载

你需要在 Forge 的「Deployment Script」里写类似这样的逻辑:

  • 生成带时间戳的 release 目录:RELEASE=$(date +"%Y%m%d%H%M%S") && mkdir -p releases/$RELEASE
  • 克隆代码进新目录:git clone --depth=1 --branch=main https://github.com/you/app.git releases/$RELEASE
  • 复制共享文件:cp /home/forge/example.com/shared/.env releases/$RELEASE/ 和 cp -r /home/forge/example.com/shared/storage releases/$RELEASE/
  • 进新目录装依赖、跑迁移、清缓存:cd releases/$RELEASE && $PHP_BINARY composer install --no-dev --optimize-autoloader && $PHP_BINARY artisan migrate --force && $PHP_BINARY artisan config:clear && $PHP_BINARY artisan config:cache
  • 最后原子切换:ln -nfs releases/$RELEASE /home/forge/example.com/current
  • 软链 storage:$PHP_BINARY artisan storage:link(确保 public/storage 指向新 release 的 storage/app)
  • 重启队列:sudo supervisorctl restart example-worker:

注意:$PHP_BINARY 是 Forge 注入的正确 PHP 路径,别硬写 php;artisan migrate --force 漏掉 --force 会在生产环境静默跳过。

最容易被忽略的三个 runtime 细节

哪怕脚本全对,以下三点不检查,零停机也会在上线后几小时内崩掉:

  • bootstrap/cache/config.php 和 bootstrap/cache/routes-v7.php 是硬编码绝对路径的 PHP 文件,必须在新 current 目录下重新生成,不能复用旧缓存
  • storage/framework/views/ 里的编译 Blade 模板也含路径信息,php artisan view:clear + php artisan view:cache 必须在切换后立即执行
  • Supervisor 管理的 php artisan schedule:run 进程不会自动 reload,得加 sudo supervisorctl reread && sudo supervisorctl update && sudo supervisorctl restart example-scheduler:

这些不是“部署完就完事”的环节,而是每次 current 切换后必须触发的 runtime 同步动作。漏掉任意一个,都可能让新功能在页面上显示,却在队列或定时任务里彻底失效。

热门AI工具

更多
PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

837

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

815

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

2468

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3761

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

5350

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

3576

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

6749

2025.08.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

1396

2026.03.04

FrankenPHP集成Laravel详细教程
FrankenPHP集成Laravel详细教程

本专题提供FrankenPHP集成Laravel的详细配置指南,全面解析运行原理、开发环境搭建、Caddyfile配置、Octane工作模式、数据库连接、队列任务、定时任务和生产环境优化,解决部署过程中常见的报错与兼容性问题。

0

2026.10.08

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
如何安装 Composer
如何安装 Composer

共1课时 | 200人学习

Composer手册
Composer手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn