LoginSignup
4

More than 1 year has passed since last update.

【Rails AWS Docker】既存Ruby on Rails + MySQLアプリをDockerで構築し、AWSにデプロイする(2)

Last updated at Posted at 2021-01-11

ポートフォリをとして作ったRuby on RailsアプリをDockerコンテナ化し本番環境をAWSで構築するまでの道のりです。
ポートフォリオ自体はこちらとなります。
【ポートフォリオ】転職活動時に作成したポートフォリオの概要(テッ◯キャンプ)

かなり苦しめられたので、どなたかのお役に立てれば。

タイトル
1 ローカル環境のRailsアプリをDockerコンテナ化
2 [AWSにVPCを作成する。パブリックサブネットを作成する]
3 プライベートサブネットを作成する
4 EC2インスタンスを作成する
5 RDSを作成する
6 DockerコンテナをAWSにアップロードする

AWSにVPCを作成する。

VPCとは(ざっくり)

Virtual Private Cloud と呼ばれるものでAWS内に作成する仮想的なネットワーク網のことです。

まずは下記の様な構成のVPCとサブベットを作成します。

サブネットとは、VPC内でさらに区分されたネットワークのことです。
パブリックサブネットにアプリ本体。プライベートサブネットにデーターベースを置きます。
パブリックサブネットは、外部からのアクセスを許可する設定します。
プライベートサブネットは、外部からのアクセスを許可せず、パブリックサブネットからのアクセスのみを許可します。(データーベースは外部からアクセスする必要はないのでセキュリティー向上のため)

なお、「パブリックサブネット」「プライベートサブネット」という設定自体はなく、後ほど設定するセキュリティーグループにおいて、上記のようなネットワークのアクセス制限を設定していきます。

IMG_A66BC051DFB8-1.jpeg

 vpcのプライベートIPアドレスは、サイダー表記が16ビットなので、先頭から16ビット分つまり、10.0が、ネットワーク部となります。

 パブリックサブネット、プライベートサブネット共にプライベートアドレスは10.0.から始まっているので、VPC内のネットワークにあります。

 また、パブリックサブネットのサイダー表記は/24なので24ビット分、つまり10.0.10.までがネットワーク部。
プライベートサブネットのサイダー表記も/24なので24ビット分、つまり10.0.20.までがネットワーク部であり、
パブリックサブネットとプライベートサブネットは異なるネットワーク空間となります。

IMG_BD8661923AD3-1.jpeg

VPCの作成

image.png

AWSにログインして、VPCダッシュボードに入り、VPCを作成する。

名前 : VPCの名前任意

IPv4 CIDR ブロック : VPC用のプライベートIPアドレス(今回は10.0.0.0/16)

「VPCを作成」をクリック

パブリックサブネット作成

AWSコンソールからVPCにVPCに入り、サブネットを選択してサブネットを作成する。

VPC IDに先ほど作成したVPCを選択する。

アベイラビリティーゾーン:今回はap-northease-1a

名前:fitO2_public_subnet_1a

IPv4 CIDR ブロック : 10.0.10.0/24

「サブネットを作成」をクリック

パブリックサブネットのルーティングの作成

インターネットゲートウェイ(IGW)を作成し、VPCにアタッチします。

IMG_174B7A21241B-1.jpeg

IGWとは、ざっくりいうとVPCとインタネットを繋ぐ窓口のようなものです。IGWを通じて、インターネットとVPC通信を行います。アタッチとは、作成したIGWをVPCと紐づける作業となります。

VPCコンソールから、「インタネットゲートウェイ」を選択、「インターネットゲートウェイの作成」をクリック。
名前を決めて、作成。

一覧から作成したIGWを選択して、右上のアクションからVPCに「アタッチをクリック」

image.png

先ほど作成したVPCを選択して、「インターネットゲートウェイのアタッチ」をクリック

image.png

ルートテーブルを作成して、パブリックサブネットに紐付け

パブリックサブネット用のルーティングテーブルを作成します。

IMG_92E66ED01F79-1.jpeg

パブリックサブネットに来たアクセスのうち

10.0.0.0/16 が宛先のものはVPCに送ります。
10.0.10.0/24 が宛先のものはパブリックサブネット(自分自身)に送ります。
0.0.0.0/0 (上記以外全ての宛先)は、IGWに送ります。

VPCコンソールから、「ルートテーブル」を選択し、「ルートテーブルの作成」をクリックして、名前を決めてVPCに先ほど作成したVPCを選択します。

image.png

一覧から作成した、ルーティングを選択し、下部の「ルート」タブを確認すると、
送信先「10.0.0.0/16」のものが宛先(ターゲット)がVPC(local)となっていることが確認できます。
ルートテーブルは、必ず所属するVPCが必須であるためため、先ほど選択したVPCが紐付けられます。

「サブネットの関連付け」タブをクリックし、「サブネットの関連付け編集」をクリックします。

image.png

パブリックサブネットを選択し、保存をクリックします。

image.png

IGWへのルートを作成する。

「ルートタブ」を選択し、「ルートの編集」をクリックする。
image.png

「ルートの追加」を選択して、「0.0.0.0/0」を選択する。
先ほど作成したIGWを選択する。

「ルートの保存」をクリックする。

image.png

これで、パブリックサブネットに紐づくルーティングテーブルが作成されました。

作り方をまとめると、下記の様になります。

IMG_AE0A928B8E61-1.jpeg

それぞれ作り方が異なるのでややこしいですが、やっていることは、宛先IPアドレスに対して、どこに通信を振り分けるかということです。

パブリックサブネット用のセキュリティーグループを作成する。

EC2ダッシュボードのセキュリティーグループをクリックして、「セキュリティーグループの作成」をクリックする。

「ルールの追加」をクリックします。

image.png

セキュリティーグループ名 : fitO2_SG
VPC: 先ほど作成したVPC
インバウンド:
 上記図の様に作成

これで、全てのアクセス元に対して、SSH通信(22番ポート)とhttp通信(80番ポート)を開放するセキュリティーグループが作成できました。後ほど、作るEC2インスタンスに、このセキュリティーグループを適用させる予定です。
(セキュリティーグループは後ほど、もうちょっと詳しく説明します。)

次回(3)へ続く
プライベートサブネットを作成する

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
What you can do with signing up
4