【Ruby/Rails】デプロイ作業をCapistranoで自動化する

スポンサードリンク

こんにちは、しきゆらです。

 

Railsアプリをデプロイする時は、Capistranoというツールを使うのが一般的なようです。

これは、gitにRailsアプリを公開しておくと、それをもとにしてデプロイ作業をやってくれる便利なものです。

早速、使い方を見ていきます。

 

 

スポンサードリンク


環境

今回の環境は、以下のとおりです。

ローカル

  • Mac
  • Ruby 2.5.1
  • Capistrano 3.10.2

 

デプロイ先

  • CentOS7
  • Ruby 2.5.1
  • Apache環境
  • Pumaを使いたい

 

Capistranoのインストール

公式サイトは以下。

Capistrano

http://capistranorb.com/

 

ローカル側での作業です。

まずは、Capistranoと付随するものをGemfileに追加していきます。

RubyをrbenvやRVMで管理している場合は、別途プラグインが必要です。

そのへんは、公式サイトを見てください。

 

Gemfileに追加したら、「bundle install」でインストールします。

 

Capistranoの設定

まずは、初期ファイルを作ります。

ターミナルから、以下コマンドで生成。

実行すると、以下のようなファイルが作られます。

それぞれの役割は以下の通り。

  • Capfile: Capistranoの設定ファイル。Guardfileとかの立ち位置。
  • deploy.rb: すべてのデプロイで使われる設定やタスクなどを書くファイル。
  • production.rb: 本番環境向けデプロイへの追加設定ファイル。
  • staging.rb: よくわからん。

 

それぞれに書き込んでいきます。

Capfile

 

deploy.rb

 

production.rb

 

設定が終われば、後はコマンド一発でデプロイ!

 

デプロイする

実際にコマンドを実行。

エラーが起きなければ、完了です。

 

 

実際に起きたエラー

bundlerが見つからない

実行中、上記のようなエラーで止まってしまいました。

sshでサーバへログインしてパスを確認しても通ってるしなぁ・・・。

 

と思いながら調べてみると、参考になりそうなものが。

参考

https://qa.atmarkit.co.jp/q/2817

上記サイトの「解答」部分です。

sshでログインした時のパスとcapistranoがアレコレするときのパスが異なるようです。

確認として、以下のコマンドで

これでパスが返ってこない場合は、もしかしたら以下の方法で直るかもしれません。

 

参考

https://qiita.com/silph/items/6e47ee6c363ed1ba9c68

解決方法は、「.bash_profileは読み込まれないから.bashrcに書く」

シンプルですね。

私の環境でも、pathの設定はbash_profileに書いてあったので、bashrcに移動させたらエラーが消えました。

 

secret_base_keyがない!!と怒られる

こんなエラーも出ました。

どうも、secret_key_baseがないよ、という感じ。

 

まずは、設定するキーを生成します。

結果をコピペするなり、パイプで繋いでコピーするなりしてください。

 

「secret_key_base」で検索していると、「secrets.yml」にかけ!という記事ばかりでしたが、それはRails 5.1までの話。

Rails 5.2の場合はエラーにあるコマンドで書くようです。

 

  • Rails 5.1の場合

「config/secrets.yml」に以下のように記述する。

 

  • Rails 5.2の場合

Rails5.2からは、credentials.yml.encというファイルに「secret_key_base」を設定するようになったようです。

キーを設定する場合は、以下のコマンドで設定してあげます。

内容は以下のように書いてあげます。

そして、複合するためのファイルである「master.key」をセキュアな方法でデプロイ先の「app_dir/shared/config」においてあげると動きます。

 

参考

http://waiyanyoon.com/deploying-rails-5-2-applications-with-encrypted-credentials-using-capistrano/

 

 

ここまでで、とりあえず必要なものはサーバへ上げられたと思います。

後はApacheとpumaのつながりを調整してあげないといけないですが、次回に回します。

 

 

今回はここまで。

おわり

スポンサードリンク

コメントを残す

メールアドレスが公開されることはありません。