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详细文档