首先配置 Laravel Envoy 实现自动化部署,通过 Envoy.blade.php 定义服务器和任务;接着编写零停机部署流程,包括进入维护模式、拉取代码、安装依赖、数据库迁移和恢复服务;采用符号链接指向当前版本实现原子发布,确保切换瞬间完成;配置 SSH 免密登录保障脚本无交互执行;最后集成 Git Hook 自动触发部署,推送代码后自动运行部署任务并记录日志。

如果您正在使用 Laravel 开发应用,并希望在更新代码时避免服务中断,可以通过 Laravel Envoy 实现自动化部署流程。Envoy 提供了一种简洁的 Blade 风格语法来定义部署任务,使您能够在远程服务器上自动执行 Git 拉取、Composer 安装、队列重启等操作。
本文运行环境:Dell XPS 13,Ubuntu 22.04
Envoy 的核心是 Envoy.blade.php 文件,它定义了所有远程服务器要执行的任务。通过该文件可以组织多个部署步骤,确保部署过程标准化。
1、在项目根目录创建 Envoy.blade.php 文件。
2、使用 Blade 语法定义 @servers 分组,指定目标服务器的 IP 和 SSH 用户,例如:
@servers(['web' => 'user@192.168.1.100'])
3、使用 @task 定义具体任务,如部署代码、重启队列等。
为了实现零停机,需要在部署过程中保持服务可用性,通常采用维护模式切换和原子化发布策略。
1、在 @task 中进入维护模式:
php artisan down --render="maintenance" --retry=60
2、拉取最新代码:
cd /var/www/html && git pull origin main
3、安装依赖:
composer install --optimize-autoloader --no-dev
4、执行数据库迁移:
php artisan migrate --force
5、退出维护模式:
php artisan up
通过符号链接指向当前版本目录,可确保代码切换瞬间完成,从而避免部分文件加载旧版本的问题。
1、每次部署时创建新版本目录,如 /var/www/html/releases/202405101200。
2、将代码克隆或复制到该目录中。
3、执行 Composer 和 NPM 构建命令。
4、更新符号链接:
ln -sfn /var/www/html/releases/202405101200 /var/www/html/current
5、重启队列和缓存:
php artisan queue:restart && php artisan config:cache
自动化部署要求本地机器能无交互登录远程服务器,否则脚本会卡在密码输入环节。
1、生成本地 SSH 密钥:
ssh-keygen -t rsa -b 4096 -C "deploy@example.com"
2、将公钥上传至服务器的 ~/.ssh/authorized_keys 文件中。
3、测试连接:
ssh user@server-ip "ls /var/www"
4、确保远程服务器的 SSH 服务已启用且端口开放。
通过 Git 的 post-receive 钩子自动触发 Envoy 部署任务,减少人工干预。
1、在远程服务器上设置裸仓库作为接收端。
2、编辑 hooks/post-receive 文件,加入触发 Envoy 执行的命令。
3、推送代码后,钩子自动拉取并部署到目标路径。
4、可通过日志记录每次部署时间与提交哈希,便于追踪问题。
以上就是laravel怎么通过Envoy实现自动化和零停机部署_laravel Envoy自动化部署方法的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号