【Rails+Docker+AWS】開発環境構築から本番公開まで（2/3 AWSコンソール画面編）

（この記事は続きです）
なんだか結構苦労したので、自分の整理のためにも記事におこしました。
初学者でポートフォリオをとりあえず公開したい方は参考になるかもしれません。

## 完成図
Ruby 2.5.1
Rails 5.2.0
MySQL 5.7
![qiita用のインフラ構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513214/64654abc-e78d-1bc9-26b0-cf5a4f0b2281.png)

全部で３記事あります。
(1)開発環境構築編 https://qiita.com/obr-note/items/a923e7acf77652a6994e
(2)AWSコンソール画面編 この記事
(3)デプロイ編 https://qiita.com/obr-note/items/44290f2011ad09240129

## 前置き
本番環境構築はこちらの本を参考にしました
www.amazon.co.jp/dp/4798163430

AWSアカウントは事前に作ってある前提です
https://aws.amazon.com/jp/
リージョンは「アジアパシフィック (東京)ap-northeast-1」にしておきます。
![リージョン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513214/6f9639db-f9c9-e0e2-dadf-5782ec7d069d.png)

## VPC
### VPC
VPC → VPC → VPCを作成

|項目|値|
|---|---|
|名前タグ|webapp-vpc|
|IPv4|10.0.0.0/16|
|IPv6|なし|
|テナンシー|デフォルト|

### サブネット
VPC → サブネット → サブネットを作成 × ３つ

|項目|値|
|---|---|
|VPC ID|webapp-vpc|
|サブネット名|webapp-subnet-public|
|アベイラビリティーゾーン|ap-northeast-1a|
|IPv4|10.0.0.0/20|

|項目|値|
|---|---|
|VPC ID|webapp-vpc|
|サブネット名|webapp-subnet-private01|
|アベイラビリティーゾーン|ap-northeast-1a|
|IPv4|10.0.64.0/20|

|項目|値|
|---|---|
|VPC ID|webapp-vpc|
|サブネット名|webapp-subnet-private02|
|アベイラビリティーゾーン|ap-northeast-1c|
|IPv4|10.0.80.0/20|

### インターネットゲートウェイ
VPC → インターネットゲートウェイ → インターネットゲートウェイの作成
→ 作成 → (選択状態で)アクション → VPCへアタッチ

|項目|値|
|---|---|
|名前タグ|webapp-igw|
|VPC|webapp-vpc|

### ルートテーブル
VPC → ルートテーブル → ルートテーブルを作成
→ 作成 → （選択状態で）ルート → ルートの編集 → ルートの追加
→ (選択状態で)サブネットの関連付け → サブネットの関連付けの編集

|項目|値|
|---|---|
|名前タグ|webapp-rt-public|

#### ルートの編集
ターゲットは「Internet Gateway → igw-0xxxxx（webapp-igwのタグ名）」を選択

|対象|送信先|ターゲット|
|---|---|--|
|local|10.0.0.0/16|Local|
|外部|0.0.0.0|webapp-igw|

#### サブネットの関連付け

|名前|
|---|
|webapp-subnet-public|

### セキュリティグループ
VPC → セキュリティグループ → セキュリティグループを作成
・アウトバウンドルールは設定しなくて良い

|項目|値|
|---|---|
|セキュリティグループ名|webapp-sg-ec2|
|説明|for ec2|
|VPC|webapp-vpc|
|インバウンドルール|タイプ:SSH ソース:0.0.0.0/0|
|インバウンドルール|タイプ:HTTP ソース:0.0.0.0/0|
|インバウンドルール|タイプ:HTTPS ソース:0.0.0.0/0|

## EC2
EC2 → インスタンス → インスタンスを起動
→ （「確認と作成」ではなく「次のステップ」ボタンを押すこと）　→ 起動　→ キーペアダウンロード → インスタンスの作成（数分かかる）
・下記の他はデフォルトの設定にしておく
・セキュリティーグループは「既存のセキュリティグループを選択する」で、defaultとwebapp-sg-ec2にチェック
・キーペアは「新しいキーペアの作成」で「webapp-ec2」を入力し、キーペアを~/Downloadsフォルダにダウンロード

|項目|値|
|---|---|
|Amazonマシンイメージ|Amazon Linux2 AMI|
|インスタンスタイプ|t2.micro|
|ネットワーク|webapp-vpc|
|サブネット|webapp-subnet-public|
|自動割り当てパブリックIP|有効|
|EBSサイズ(GiB)|20|
|タグ|Name:webapp-ec2|
|セキュリティグループ|default + webapp-sg-ec2|
|キーペア名|webapp-ec2|
![ec2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513214/74a46b9c-bbf6-da97-156f-17e490ccb166.png)


### 動作確認
※キーペアはwebapp-ec2.pemとして、~/Downloadsフォルダにダウンロードしたと仮定する
EC2 → インスタンス → (選択状態で）詳細 → パブリックIPv4アドレス をコピー
![ec209.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513214/7cfe343b-5f2d-9aeb-10cb-a84b9d08e934.png)


```
$ ls ~/Downloads # webapp-ec2.pemがあるか確認
$ mv ~/Downloads/webapp-ec2.pem ~/.ssh/
$ chmod 700 ~/.ssh/webapp-ec2.pem
$ ssh -i ~/.ssh/webapp-ec2.pem ec2-user@xxx.xxx.xxx.xxx # パブリックIPv4アドレス
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
[ec2]$ exit
```

ec2にログイン出来たらOK

## RDS
### パラメータグループ
RDS → パラメータグループ → パラメータグループの作成

|項目|値|
|---|---|
|パラメータグループファミリー|mysql5.7|
|グループ名|webapp-db-pg|
|説明|webapp parameter group|

### オプショングループ
RDS → オプショングループ → オプショングループの作成

|項目|値|
|---|---|
|グループ名|webapp-db-og|
|説明|webapp option group|
|エンジン|mysql|
|メジャーエンジンバージョン|5.7|

### サブネットグループ
RDS → サブネットグループ → サブネットグループの作成
・webapp-subnet-private01 ・・・　10.0.64.0/20
・webapp-subnet-private02 ・・・　10.0.80.0/20

|項目|値|
|---|---|
|グループ名|webapp-db-subnet|
|説明|webapp db subnet|
|VPC|webapp-vpc|
|アベイラビリティゾーン|ap-northeast-1a + ap-northeast-1c|
|サブネット|webapp-subnet-private01 + webapp-subnet-private02|

### データベース
RDS → データベース → データベースの作成（作成から起動まで約10分かかる）
・下表の他はデフォルトの設定にしておく
・DBパラメータグループとオプショングループは「追加設定」を開くと選択できる

|項目|値|
|---|---|
|作成方法|標準作成|
|エンジンのタイプ|MySQL|
|バージョン|5.7.xx|
|テンプレート|無料利用枠|
|DBインスタンス識別子|webapp-db|
|マスターユーザー名|admin|
|マスターパスワード|admin_password|
|DBインスタンスクラス|db.t2.micro|
|Virtual Private Cloud|webapp-vpc|
|サブネットグループ|webapp-db-subnet|
|パブリックアクセス可能|なし|
|既存のVPCセキュリティグループ|default|
|データベース認識オプション|パスワード認証|
|最初のデータベース名|(空欄)|
|DBパラメータグループ|webapp-db-pg|
|オプショングループ|webapp-db-og|

### 動作確認
RDS → データベース → webapp-dbを選択 → 接続とセキュリティ → エンドポイントをコピー
![rds.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513214/38b64d76-435d-7624-f6c9-39e15cb62a97.png)


```
$ ssh -i ~/.ssh/webapp-ec2.pem ec2-user@xxx.xxx.xxx.xxx # EC2のパブリックIPv4アドレス
[ec2]$ sudo yum -y install mysql
[ec2]$ mysqladmin ping -u admin -p -h webapp-db.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -p # RDSのエンドポイント
Enter password: admin_password
[ec2]$ exit
```
mysqld is alive が返ってくればOK

デプロイ編へ続く
https://qiita.com/obr-note/items/44290f2011ad09240129