LoginSignup
2
2

More than 3 years have passed since last update.

Rails5 AWS EC2とRDS、S3、paperclipを使用したデプロイ

Last updated at Posted at 2020-03-27

デプロイ覚書

基本的に下記記事を参考にさせて頂きました。
https://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce
https://qiita.com/Yuki_Nagaoka/items/975b7598806d6ae0c0b2

上記記事の中では説明がなく自分がハマった箇所について。
まず
・画像投稿のストレージにS3を使用していた為その設定。
・あとRDSでデータベースを作成する際の文字コードの設定。
・デプロイ終わった後に大幅な修正を見つけてしまった際のやり方

S3使用時の設定について

https://qiita.com/nakki/items/6df87756ef4119cc3e68
コチラの記事を参考に実装しました。
デプロイ時にハマったのはunicornが起動しなかった。。。
ログを調べると
Cannot load Rails.config.active_storage.service
undefined method fetch for nilclass
コチラのエラーは同じエラー文での記事が見つけられませんでした。
デプロイの参考サイトと違う環境はS3を使っていることだし、active storageのエラーが出ていると言うことはやっぱりS3関係のエラーだろうと考えて調べる。。
ローカルではS3にちゃんと接続できて写真投稿も問題なくできていました。
ここのエラーに一日かかりました。。。
原因は、、、
config/environments/production.rbの設定でした。

config.require_master_key = true

このコードがデフォルトfalseでコメントアウトされているのですがtrueにして有効化。
これでproduction環境でS3に接続する環境変数が読み込まれるようになったようです。
確かにマスターキーがないと環境変数読み込めないですもんね。
これでunicorn問題なく起動OK。

RDSの文字コード

デプロイ終わってよっしゃー。会員ログインして動かしてみよ!
「ログイン」!→「エラー」

え?!

log/production.logを調べるとデータベースにレコード保存しようとしたときに文字コードが合わなくて弾かれた、と言うことらしい。
と言うことで下記記事参考に対応
https://qiita.com/kijitora-neko/items/aab58b4c1f684353e075

パッチ当てて再起動したんですがデータベース削除して作り直しても文字コードが変わらない。。。
3回くらいやったらやっと反映されました。。パッチが適用されるのにタイムラグがあるのかな?
同じ問題に当たった方は焦らずに設定確認して時間を置くことも必要かと。
もちろんそもそもRDSのデータベース作成時にパッチを作成して適用しておけばこのようなエラーは出ないかと。
次からは気をつけよう。

デプロイ後のアプリ修正

まあ、コチラはデプロイする前にちゃんとテストしとけよって話ですが。。。
デプロイしてからあれ?ここのリンク飛ばない?
あれ?問合せフォームから送信できない?
など等結構大幅に修正することがあったのでその時のやり方。

ちょっとした修正ならvimでコード修正してすぐ終わるかと思います。
でもいくつものファイルの修正や移動、削除など多くなってくるとコンソールからだと時間がかかる。。。

そこで一旦アプリ削除することにしました。
EC2インスタンスの/var/www/rails/アプリフォルダ
このアプリフォルダをコンソールで強制削除します。
nignx,unicorn,mysqlなどはこの上階層でインストールしているので影響なし。
アプリフォルダ削除後に再度git cloneして設定し直し。
と言っても作業量は大したことないです。#
その後プリコンパイル、nignx,unicorn,mysqlの再起動して終わり。

以上です。

多分CI/CDパイプラインとかそういうのはここのところを自動化してくれるんでしょうね。。
そこの勉強はこれからですがこの経験があると「何故それを使うのか?」というところが理解しやすいのかなと思います。

2
2
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
2
2