search
LoginSignup
13

More than 3 years have passed since last update.

posted at

updated at

LaravelにEnvoyタスクランナーを導入する手順

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ありがとう。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
13