📝

自分のRailsアプリをAWS上で公開する記録

2023/01/31に公開

雑多なメモです。

ここから下は本当に雑多に書き散らしたものなので、ある程度やったことをまとめます。

  • 個人のサービスをAWS上でデプロイした。
  • EC2上にRailsアプリをデプロイした。(RDSなどは使わず単純にEC2単体)
  • お名前.comで独自ドメインを取得した。
  • EC2の前にALBを立てて、Route53の設定をした。
  • SSL証明書もとって、httpsでアクセスできるようにした。

以下メモ。

AWS上での環境構築を、とりあえずこの記事を見てやってみる。
https://qiita.com/gyu_outputs/items/b123ef229842d857ff39
Amazon Linux 2 AMIを選択してみた(Amazon Linux AMIは選択肢に出てこなかった)

  • EC2インスタンス作成
  • Elastic IPを作成と紐付け
  • AWSセキュリティグループの設定

IPv6のデフォルト経路?ってこんな風に書くんだ ::/0
実はIPv6のIPアドレスの指定の仕方よく分かってない
https://www.allied-telesis.co.jp/support/list/router/ar450s/docs/overview_25IPV6_20RT.html

Rubyは3.1.2
Railsは7.0.4
MySQLの代わりにSQLite 3.30.1を入れる
https://blog.serverworks.co.jp/tech/2020/01/19/rails6/

セッションマネージャーも使いたかったので
https://dev.classmethod.jp/articles/session-manageer-confirmation-item/
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-getting-started-instance-profile.html
とかをみながら設定してみたがうまくいかなかったのでいったん放置

productionでunicorn起動時にエラーが出たがこれで解決
https://manabupanda.net/practice_web_programming/ruby_on_rails/rails-if-you-are-the-application-owner-check-the-logs-for-more-information/

amazon linux 2にはnginxがないようだ

sudo yum -y install nginx
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                     | 3.7 kB  00:00:00     
No package nginx available.
Error: Nothing to do


nginx is available in Amazon Linux Extra topic "nginx1"

To use, run
# sudo amazon-linux-extras install nginx1

Learn more at
https://aws.amazon.com/amazon-linux-2/faqs/#Amazon_Linux_Extras

https://qiita.com/tamorieeeen/items/07743216a3662cfca890
これを参考にしてみる
amazon-linux-extrasって何?

capistranoはまた今度でええやろ
https://qiita.com/gyu_outputs/items/b123ef229842d857ff39#capistranoとはからインストール自動デプロイ

ドメインを取得する

お名前.comで取得する方法と、AWSのRoute53でドメインまで取得する方法がありそう。
厳密に計算してはいないが、お名前.comの方が少なくとも初年度はほとんどお金がかからず安そうだったので、とりあえずそっちで取得しておく。
https://qiita.com/crml1206/items/e5a6ac785b669e643f31
https://mik2062.jp/route53-onamae/

whois情報公開代行というサービスがあるのを初めて知った
https://www.onamae.com/guide/p/29?btn_id=guide_search_p-29_Whois情報公開代行

ここらへんを見ながらドメインとEC2をつなげる
https://qiita.com/kono-hiroki/items/154e3ff96f7f63dc62cf

ドメイン側でRoute53で作ったネームサーバを登録してあげないといけない

SSL証明書を発行してhttpsでアクセスできるようにする
https://aws.taf-jp.com/blog/37623

うーん、ターゲットグループとインスタンスの間の通信がうまくいってない
もう少し概念を理解して調査しなければ

色々調べていたらできた。上記の記事に書かれていることは大体やったと思ったので、他の記事を探してみることにした。
https://dev.classmethod.jp/articles/alb-route53-acm-build2/
ここにあるように、Route53のレコードを編集しなければいけなかった。
もともとインスタンスのIPアドレスに直にアクセスするようにしていたのを、ALBに転送する仕組みが必要だった。
確かにそうか。SSL証明書を取って、証明書にALBを結び付けて(ALBは443で待ち受ける)、ALBからターゲットとなるインスタンスを結び付けて(EC2は80番で待ち受ける)とやっても、ドメインとALBを結び付ける設定を何もしてないもんな。そこはつなげてあげなければいけないと言われても確かにという感じがする。証明書のACMとRoute53があんまり脳内で区別できなかったのかもしれない。

ひとまず一件落着。

Discussion