Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

Arm4
PHP / JavaScript / Laravel / Vue.js Webアプリケーションエンジニア
http://arm4.hatenablog.com/
prime-order
組織と業務に変革をもたらす新しいカタチのシステム開発サービス
https://prime-order.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away