手動デプロイできたのに、自動デプロイができない!!!
そんでもって、master.keyがないエラーが表示されるんですけど、どうすればいいんだ!!!
となる方いると思います。
下記をすれば改善するので、早速取り組みましょう
Master.keyがないエラー( Missing encryption key to decrypt file with. Ask your team for your master key and write it to )
このエラーが表示されたということは、『 本番環境にあるmaster.keyをうまく読み込めていない 』ことを意味します。
rake stdout: Nothing written
rake stderr: Missing encryption key to decrypt file with. Ask your team for your master key and write it to /var/○○○(アプリを格納しているディレクトリ名)/○○○(アプリ名)/releases/20200121124714/config/master.key or put it in the ENV['RAILS_MASTER_KEY'].
なので現状として可能性は二つです。
- master.keyを作成していない。
- master.keyを作成する場所が間違っている。
ここまで作業を進めている人は,master.keyを作成しているはずです。
>つまり、master.keyの作成場所をまちがている可能性が高いです。
>作成していない人も解説しますので、このまま読み進めてください。
# 誤解が生まれやすいmaster.keyの作成場所
✖︎ アプリ名>config>master.key #こっちだとエラー
○ アプリ名>shared>config>master.key #正しい作成場所
おそらく、上記のようにmaster.keyの作成場所に誤りがある可能性が高いです。
ですから、
ターミナル(EC2)
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ cd shared
[ec2-user@ip-172-31-23-189 shared ]$ cd config
[ec2-user@ip-172-31-23-189 config ]$ ls
>ここでmaster.keyがない場合、 master.keyを作成してください。
master.keyを作成する場合、、、
ターミナル(ローカル)
アプリ名 $ vi config/master.key
>master.keyを中身がわかります。ここでコピーしましょう
>間違っても編集しないようにしましょう
EC2にmaster.keyを作成しましょう
ターミナル(EC2)
[ec2-user@ip-172-31-23-189 <リポジトリ名>]$ cd shared/config
[ec2-user@ip-172-31-23-189 config ]$ vi master.key
>編集画面が出るので
>ローカルのmaster.keyをコピペします。
>:wpで保存しましょう
あとは、deploy.rbにmaster.keyを読み込ます設定をします。
下記を追加してください
deploy.rb
set :linked_files, fetch(:linked_files, []).push("config/master.key")
これで改善します
# アプリケーションのディレクトリで実行する
$ bundle exec cap production deploy