Dragon Arrow written by Tatsuya Nakaji, all rights reserved animated-dragon-image-0164

EC2仮想サーバーにRuby On Rails5.2 のアプリをクローンした後の稼働まで

May 24, 2019

目的: Rails4までは $ rake secret でシークレットキーを確認してconfig/secrets.yml に貼り付けることで本番環境でファイルを読み込めるようになっていた。

Rails5.2から機密情報をcredentialsで暗号化する手法が導入され、MASTERを使ってファイルを読み込む。

今回はMASTERKEYをどう渡すのか、そしてDBをどう設定してローカルで動いていた時みたいに稼働させるのか、手順を記す。



環境変数:RAILS_MASTER_KEY

/config/master.keyが共有できない環境ではmaster key環境変数:RAILS_MASTER_KEYで指定します。

/config/master.keyが存在せず、環境変数:RAILS_MASTER_KEYmaster keyが設定されてない場合はcredentials.yml.enc内のデータは読み取れません。

今回は/config/master.keyを作成しますが、EC2では $ export RAILS_MASTER_KEY="xxx"で設定したら読み込めなくなります。


GitHubからRailsアプリをクローン

作成したprojectsへ移動

$ cd /var/www/projects


bundlerをインストール

$ gem install bundler


Gemfileを作成

$ bundle init


Gemfileを編集

$ vim Gemfile


Railsバージョンを記載

gem "rails", '5.2.3'


vendor/bundleへgemをインストール

$ bundle install --path vendor/bundle --jobs=4
$ bundle exec rails -v


GitHubからアプリをクローン

$ git clone git@github.com:GitHubのユーザー名/リポジトリ名.git
$ ls# リポジトリ名  Gemfile  Gemfile.lock  vendor


クローンしたディレクトリへ移動

$ cd リポジトリ名/


gemインストール

$ bundle install --path vendor/bundle


ローカル環境で開発していたときと同じ状態になるようにmaster.keyをconfig配下に作成する

$ cd config
$ vi master.key
---
.gitignoreされているマスターキーを貼り付ける
---

これで、credentialsで暗号化したファイルの内容を読み込むことができるようになる!


ちなみに...$ export RAILS_MASTER_KEY="xxx"で環境変数から設定したら読み込めませんでした。



DBのテーブル作成

初めにMySQLなり PostgreSQLなりでDBやユーザー、パスワード設定までdatabase.ymlと同じ設定の環境を用意する。

これをしとかないと、MySQLサーバー, PostgreSQLサーバーにそもそも接続ができない

ec2サーバーにsshした後に
$ bundle exec rake db:schema:load RAILS_ENV="test"
$ bundle exec rake db:schema:load RAILS_ENV="development"
$ bundle exec rake db:schema:load RAILS_ENV="production"

テーブル一覧が作成されるはず!


ちなみに画像表示が必要な場合...クローンしたら

bundle exec rake assets:precompile RAILS_ENV="test"
bundle exec rake assets:precompile RAILS_ENV="development"
bundle exec rake assets:precompile RAILS_ENV="production"

も早めにしとこう