Envoy 是一个 composer 扩展包,它的本质作用是代替你登录远程的目标服务器(下称目标机)并执行一系列命令,它的执行环境要有事先装有 php 与 composer,但它不仅仅能在 php 项目里起作用,原因是前面提到的它的本质是帮你执行命令,而这命令不只针对 php 的命令。因此你不仅可以把它当作部署项目的工具,甚至可以是对目标机的简单管理工具。下面从本地机对目标机的登录到 envoy 的安装使用来分步介绍它。
实现本地机与目标机的 ssh 密钥登录
假定目标服务器是 sorgo@192.168.8.8
#如果本地机的用户还没 rsa 密钥的那先生成
ssh-keygen -t rsa -C “your_email@example.com”
#发送密钥到目标机,并进行密码验证
ssh-copy-id sorgo@192.168.8.8
#测试是否能直接 ssh 登录而不再要求输入密码
ssh sorgo@192.168.8.8
安装和使用
#全局安装
composer global require laravel/envoy
#一键生成 envoy 执行文件模板:Envoy.blade.php
envoy init sorgo@192.168.8.8
修改 Envoy.blade.php 文件
{{– 这是 blade 文件里的注释 –}}
{{– web 是标识这台服务器的名字 –}}
@servers([‘web’ => ‘jeffio@116.85.48.221’])
{{– deploy 是给这个任务起的名字 –}}
@task(‘deploy’)
cd /www/wwwroot/sifou.com
git pull origin master
composer install
@endtask
执行任务,命令格式是 envoy run 任务名
envoy run deploy
以上即可一键完成:
进入指定目录
git 拉取更新
安装 composer 包
这样一个简单的部署就完成了,极大降低了维护的操作成本。
参考
更多写操作请参考收下文档 Envoy 详细文档