LoginSignup
7
5

More than 3 years have 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)へ続く
プライベートサブネットを作成する

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