##概要
メルカリのクローンサイトを作成する際にインフラ、デプロイ関係の担当をした者が沼にハマった部分を共有し、同じような状態から抜け出すための一助になればと思ったことが投稿するきっかけになります。
今回は、API関連のキーや環境変数を設定したのに本番環境では上手く挙動しない際に対処した方法をいくつか紹介します!
基本的なことから盲点な部分まで、同じような状況で困っている方の一助に少しでもなれたら幸いです。
##環境
- Rails v5.2.3
- Ruby v2.5.1
- Unicorn
- capistrano
- nginx
- mysql
- AWS, EC2(本番環境)
①まずはスペルミス、スペース(空白)の確認
最初から言われなくても分かるよっていう内容ですいません。
しかし、スペルミスは皆さん気をつけていることだとは思いますが、意外と足を引っ張るのは**スペース(空白)**の確認です。
(例)
AWS_SECRET_ACCESS_KEY = '************************'
=> スペースあり
AWS_SECRET_ACCESS_KEY='************************'
=> スペースなし
上記の微妙な違いで、内容は正確だがキーや環境変数が反映されない状態に陥ってしまいます。
まずは初心に戻った気持ちで**スペース(空白)**のチェックをしてみるのも良いかもしれません。
##②設定を反映させるためには...
スペルミスやスペースもなく設定が完了。以上終わり。 ではないのです。
設定した内容を反映させるためにはAWS(EC2)であれば、一度EC2上からログアウトし再度ログインすることによって設定が反映されます。
ただし、 .bash_profile などに設定をし直ぐに反映をさせたい場合は以下のコマンドを打つことによって反映されます。
source ~/.bash_profile
設定ファイル名は任意のもので大丈夫です。
また、設定ファイルの違いって案外知らないと思うので(自分は笑)、気になる方は下記にまとめたので見てみてください!
読み込み順 | 設定ファイル | 概要 |
---|---|---|
1 | /etc/profile | ログインする全ユーザー共通設定 |
2 | ~/.bash_profile | ※下記に概要記載 |
3 | ~/.bashrc | bash起動時に読み込ませたい設定 |
4 | /etc/bashrc | システム全体の関数等の設定 |
※ ~/.bash_profileに関しては、~/.bash_login, ~/.profileと順に、上のファイルが無ければ下のファイルが読み込まれる流れになります。
##③capistrano(自動デプロイ)導入後に設定が反映されない時
今回の投稿で一番伝えたかった内容になります。なぜかと言いますと...自身が沼にハマったからです。笑
スペルミス、余計なスペースも無い、EC2からログアウト・再ログインして設定の反映もバッチリ。さあ、後はcapistranoを動かして挙動を見に行きますか.....? んん? あれ、反映されていない。(白目)
この状況で沼にハマり、かれこれ2~3時間。 やっと見つけた救世主のコマンドを紹介します。(※今回はcapistranoを使用しています。)
bundle exec cap -t production unicorn:stop
=> unicornの停止。これを打たないとコードが反映されていない状況に。
bundle exec cap production deploy
=>再度capistranoで自動デプロイの実行。これで反映。
この2つのコマンドを実行することによって、本番環境でAPIを利用したり、しっかりと環境変数も用いることができていました。
##終わりに
インフラ関連に対する苦手意識を持っていましたが、何事も根拠があって、それを理解することによって物事の流れを掴むことができ、やりがいに繋がっていくと感じます。僕もまだまだこれからですが、また沼ったことを共有できればと考えています。長々と見て頂きありがとうございました。
###参照
https://qiita.com/yunzeroin/items/480a3a677f78a57ac52f