7
0

More than 3 years have passed since last update.

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

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にアップロードする

EC2インスタンスを作成する

EC2とは

Elastic Compute Cloudと呼ばれるもので、ざっくりというと仮想的なパソコンです。
それを、AWS上に置くことによって、クラウド上にシステムを構築します。

IMG_718A6999530D-1.jpeg

作成したEC2インスタンスは、パブリックサブネットに配置して、アプリ本体を置きます。

EC2インスタンスの作成

検索ウィンドウからEC2を検索し、コンソールに入ります。
image.png

インスタンスを起動をクリックします。
image.png

今回はインスタンスタイプにクイックスタートの「AMAZON Linux2」を利用します。
(ざっくり)どのタイプのコンピューターにするかということです。今回はOSがlinuxのものを選択します。

image.png

タイプは無料利用枠のt2.microを選択します。
(ざっくり)どの程度のスペックにするかとうことです。

image.png

→「次のステッップ:インスタンスの詳細設定」をクリックします。

項目 内容 説明(ざっくり)
インスタンス数 1 起動するインスタンスの数
購入のオプション チェックなし スポットインスタンスを選択すると安価に利用できる(常時起動しない場合)
ネットワーク fitO2_vpc 先ほど作成したVPCに配置する。
サブネット fitO2_public_subnet_1a 先ほど作成したパブリックサブネットに配置する。
自動割り当てパブリック IP サブネット設定を使用(無効) 後ほど固定IPを割り振るため
配置グループ チェックなし 複数のインスタンス間の通信を高速化する設定
キャパシティーの予約 なし リソースの上限を超えた時にインスタンスが起動できなくなることを回避(有料)
IAM ロール なし AWSのリソースに紐付けることができる権限設定を行うサービス
CPU オプション なし CPUの性能に対するオプション
シャットダウン動作 停止 シャットダウン時の動作
停止 - 休止動作 なし 停止動作に休止動作を追加する
終了保護の有効化 なし 誤った終了を防止します
モニタリング なし 5分間隔の監視を1分感覚にする。
テナンシー 共有 ハードディスクを占有するか否か
Elastic Inference なし 機械学習に効率化
クレジット仕様 なし 規定量の通信量が来た際に制限がなくなる

ネットワークインターフェイス

プライマリIP 10.0.10.10 サブネットにプライベートIPアドレスを設定する。

「次のステップ:ストレージの追加」をクリック

項目 内容 説明(ざっくり)
サイズ 8
ボリュームタイプ 汎用SSD
合わせて削除 チェック
暗号化 暗号化なし

「タグの追加」をクリック

項目 内容 説明(ざっくり)
name fitO2_web
ボリュームタイプ 汎用SSD
インスタンス チェック
ボリューム チェック

「セキュリティーグループの設定」をクリック

既存のセキュリティーグループを選択する。
先ほど作成した(fitO2_SG)を適用する。

「確認と作成」をクリック

「起動」をクリック

キーペアの作成

新しいキーペアの作成(すでにキーペアを作っている場合は既存のものを作っても良い)

キーペア名を設定し、ダウンロード。

(ざっくり)キーペアとは、ssh接続する際に、使用する鍵。ssh接続する際にダウンロードしたキーペアを用いて接続し、AWS側にで生成した鍵と合致した場合接続が許可される。

「インスタンスの作成」

image.png

作成されたら、分かりやすいようにインスタンスに名前を設定しておきます。
nameのところをクリックしたら名前が編集できます。

image.png

ダウンロードしたキーペアを適当な位置に移動させます。(今回は ~/.ssh)

Elastic IP(固定)アドレスを作成する。

現状インスタンスを停止したら、IPアドレスが変わってしまうので、固定IPを割り割り振ります。

EC2ダッシュボードから、Elastic IPを選択します。

「新しいアドレスの割り当て」をクリックします。

ネットワークボーダーグループ : ap-northease-1
パブリック IPv4 アドレスプール : Amazon の IPv4 アドレスプール

「割り当て」をクリック。

作成したElastic IPアドレスに分かりやすい様に名前を付けておく。

Elastic IP(固定)アドレスをインスタンスに紐づける。

作成したIPアドレスにチェックを入れてアクションから「アドレスの関連付け」を選択する。

リソース : インスタンス
インスタンス : 作成したインスタンスを選択
プライベートIPアドレス : 10.0.10.10

「関連付け」をクリック

ssh接続を試みて確認する。

インスタンスの状態が、runningになっていることを確認後

 sudo ssh -i ~/.ssh/fitO2_key.pem ec2-user@固定IPアドレス

~/.ssh/fitO2_key.pemは秘密鍵の保管している場所/秘密鍵の名前
固定IPは、インスタンス一覧から選択して、説明タグをクリックし、Elastic IPと表示されているものです。

Are you sure you want to continue connecting (yes/no/[fingerprint])?

yesと打ってenter

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/

上記のように表示されれば接続成功。

図にすると下記の様なイメージで接続しました。

IMG_D7961C5FA634-1.jpeg

EC2には先ほど作成したセキュリティーグループ(fitO2_SG)が適用されています。

image.png

インバウンド(入ってくる方の通信)に対し、ssh接続の場合、22番ポートを使用し、全てのアクセス元(0.0.0.0/0)を許可しているので、ssh接続することが可能だったわけです。

EC2インスタンスを作成し、ssh接続を行うことができました。

80番ポートもhttp通信に対し、開放されているので、今作成したインスタンスは下記のような通信を許可する状態となっています。

IMG_378691F05F41-1.jpeg

これでパブリックサブネットEC2インスタンスに対し、上記のようなセキュリティーグループが設定されました。

次回(5)へ続く
RDSを作成する

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