Envoyタスクランナーって何?
デプロイ作業などをする際に、指定したサーバにsshで接続して、
コマンドを打ち込むなどの手作業を自動的にコマンド1発でやってくれる便利なツール。
コマンド一発で複数サーバに一気にデプロイできたり、さらに平行してコマンドを叩いてくれたりする。
コマンドはローカルから実行すればいいので、すごく楽。
まずはEnvoyをcomposerでglobalインストール
composer global require "laravel/envoy=~1.0"
globalインストールしたのにenvoyコマンドが見つかりませんと言われた場合
PATHが通ってないので設定する
zshの人は.bash_profileじゃなくて.zshrcに設定する。
echo 'export PATH=$HOME/.composer/vendor/bin:$PATH' >> .bash_profile
source .bash_profile
Laravelのアプリrootで以下を実行し、雛形を作成
envoy init {user_name}@{server ip}
アプリ直下のEnvoy.blade.phpを編集
Laravelのbladeシンタックスで書けばいいのでLaravelerにとって学習コストはゼロに近い。
@servers(['web' => '{user_name}@{server ip}'])
// サーバルートにあるhogeというフォルダの中身を見る
@task('hoge')
cd ~/hoge/
ls -la
@endtask
// cronに設定されてるバッチを確認する
@task('cron')
crontab -l
@endtask
// コンファーム付きで本番環境にデプロイする
@task('prod', ['on' => 'web', 'confirm' => true])
cd /var/www/honban/
git pull origin master
php artisan migrate --force
composer dump-autoload
gulp --production
@endtask
// コンファーム付きでstaging環境にデプロイする
@task('staging', ['on' => 'web', 'confirm' => true])
cd /var/www/staging/
git pull origin staging
php artisan migrate
composer dump-autoload
gulp --production
@endtask
実行コマンドは開発環境のアプリrootから叩く
- ~/hogeのファイルリスト表示
envoy run hoge
- crontabリスト表示
envoy run cron
- 本番デプロイ
envoy run prod
- stagingデプロイ
envoy run staging
プチ情報
sshを鍵認証にしておくとpasswordなども打ち込まなくていいので、非常に気持ちいい。
メリット
- デプロイ手順を覚えなくていい。
- 手順をミスって本番のコードを開発のbranchで上書きしてしまったなどの事故がなくなる。
- コマンドを貼り付けていくだけなので、とにかく学習コストがゼロ。
- 何をやってるのか、設定ファイルを見れば一目瞭然。
- Laravelじゃなくても使える
- 何をやるコマンドなのかしっかり理解していれば、細かい手順が分かっていなくてもデプロイが可能
まとめ
導入も簡単で、書くのも簡単でメリットいっぱい。Laravelありがとう。