LoginSignup
21
17

More than 3 years have passed since last update.

【rails5.2】master.keyを本番環境(AWS EC2)に設定(追加作成)する方法

Last updated at Posted at 2020-01-18

master.keyを作成していないとどうなるのか?

master.keyを本番環境で設定しておかなければ、rails db:create RAILS_ENV=productionなどを実行した際にエラーが表示される。

rails db:create RAILS_ENV=productionを実行

$ rails db:create RAILS_ENV=production

するとエラーが表示される

rails aborted!
NoMethodError: Cannot load database configuration:
undefined method `[]' for nil:NilClass

この'[]'はdatabase.ymlの下記が読み込めないために発生する。

database.yml
production:
  <<: *default
  database: <%= Rails.application.credentials.db[:database] %>
  username: <%= Rails.application.credentials.db[:username] %>
  password: <%= Rails.application.credentials.db[:password] %>
  socket: <%= Rails.application.credentials.db[:socket] %>

'[]'は、[:database]、[:username]、[:password]、[:socket]などの環境変数が読み込めないことを意味している。
AWSからすれば、「credentials.ymlの[:database]読み込めっていうけど、鍵がないからデータ見れねえええよおおお」
という状態です。

なぜ読み込めないのか?

credential.ymlの中身は他の人が閲覧できないように暗号化されている。
この暗号化を解除するのがmaster.key。
master.keyは扉を開ける鍵の役割をしており、鍵を使って解除しなければ、その先のデータを読み込むことができない。

これは、本番環境でも同じです。
master.keyがなければ、暗号化を解除できないので、環境変数を読み込めずエラーとなる。

本番環境のshared/configにmaster.keyを作成

ローカル環境にある,master.keyの中身を確認する

rails newで作成された、ローカルのmaster.keyを確認する。

$ vi config/master.key

すると下記のようにmaster.keyの中身が表示されます。

fadfdfdgaf44623535y....

この表示された、master.keyの値をコピーしましょう

スクリーンショット 2020-01-18 18.20.47.png
表示されたmaster.keyをコピーします。
これを本番環境で貼り付けていきます。

本番環境でmaster.keyを作成

EC2のアプリのconfigを開きましょう

# 誤解が生まれやすいmaster.keyの作成場所

✖︎ アプリ名>config>master.key
○ アプリ名>shared>config>master.key

🚨アプリ名>shared>config>master.keyの場所に作成する必要があるので注意しましょう

#本番環境
[ec2-user@ip-172-31-23-189 ~]$ cd /var/ここはそれぞれ違います/[アプリ名]
[ec2-user@ip-172-31-23-189 <アプリ名>]$ cd shared/config

そうしたら、本番環境上でmaster.keyを作成します

[ec2-user@ip-172-31-23-189 config]$ vi master.key
# ローカル環境のmaster.keyの値を入力
fsdgagaf08deg424~~~~~

画像だと下記のような画面になります。

スクリーンショット 2020-01-18 18.20.47.png
『 i 』を押すと----INSERT-----と表示がされて、文字入力ができます。
ここにコピーしたローカルのmaster.keyの値を貼り付けします。

『 esc 』ボタンを押した後、:wq入力して保存します

これで本番環境でもmaster.keyが設定されています。

21
17
0

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
  3. You can use dark theme
What you can do with signing up
21
17