AWS EC2インスタンスを作成し、WSLから接続する

## 目標
- EC2 インスタンスを作成する（あわせて VPC も作成する）
- EC2 に WSL(Windows subsystem for linux) から ssh で接続する

## 前提条件
- AWSアカウントを持っていて、AWSコンソールにアクセスできること
- 事前に WSL が利用できる環境であること

## VPC を作成
メニューから「VPC」を選択。
※すでに作成済みの場合は不要。
![00.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/5a7ca3fb-772c-9757-9e64-f361140bd7b0.png)

「VPC ウィザードの起動」をクリック。
![0000.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/6e60f7b9-0fe7-de04-6cb1-377595c4b57e.png)

「1 個のパブリックサブネットを持つ VPC」を選択した状態で「選択」をクリック。
![0020.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/293dad7d-624e-6ad6-9e99-04d7825e559f.png)

「VPC 名」（任意）を入力して「VPC の作成」をクリック。
![0030.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/afd81835-061f-28ad-859b-74c500a2f2a2.png)

作成完了。
![0040.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/4b226f7b-079f-3e50-b28b-2fa09b7168f0.png)


## EC2 インスタンスを作成する
「EC2」をクリック。
![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/f6bcef2f-77f7-3499-b299-66d8275e3f18.png)

「インスタンスの作成」をクリック。
![002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/322eeee3-a2c2-2743-0e42-ba81ed75f8d0.png)

## OS を選択
「Amazon Linux 2」を選択。
![003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/1f19516c-b622-0c8e-2c1a-3234006c9088.png)

## インスタンスタイプを選択
無料枠の「t2.micro」を選択し、「次の手順: インスタンスの詳細の設定」をクリック。
![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/2b5b2498-2272-cfbc-3e7d-2fb5e481cbbb.png)

## インスタンスの詳細の設定
先ほど作成した VPC、サブネットが選択される。
「自動割り当てパブリックIP」（有効）にして、「次の手順: ストレージの追加」をクリック。
![0050.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/045ae98e-a4b0-2691-1184-82e76c8900f9.png)

## ストレージの追加
何も変更せず、「次の手順: タグの追加」をクリック。
![0060.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/1ca48a4d-d7be-9a02-06a0-ee1a77f8253f.png)

## タグの追加
こちらも何も変更せず、「次の手順: セキュリティグループの設定」をクリック。
![0070.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/8245a033-4da5-adc2-e3f8-2b4b8d94e856.png)

## セキュリティグループの設定
ソースを「マイ IP」に変更。（ssh 接続を特定 IP から以外は認めないように変更。）
「確認と作成」をクリック。
![0080.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/ff9edc7b-558c-89af-8a9c-c06eb365d32e.png)

## キーペアを作成、インスタンスの起動
「起動」をクリック。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/98c7e1d7-ed62-ecc4-7f4e-01af79e4a79b.png)

「新しいキーペアの作成」を選択し、キーペア名には任意の文字列を入力、「キーペアのダウンロード」をクリック。
ダウンロードしたファイル（.pem）は大切に保管しておく。あとで ssh で接続するときに必要。
![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/21221935-760b-6f85-4c56-9a897556a81f.png)

ダウンロードが完了すると「インスタンスの作成」ボタンが活性化するので、クリック。
![2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/11d78701-b29d-9966-a15f-9c4d99d7a7c1.png)

## インスタンスのステータスを確認
先ほど作成したインスタンスのステータスを確認する。インスタンス ID のリンクをクリック。
![3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/f76ae60e-4772-ff6a-cf50-de53eeca4206.png)

「インスタンスの状態」が「running」になっていれば成功。
![4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/74de51df-d068-05b2-b9bd-5ae9f7d9a971.png)

## WSL から ssh 接続を行う
インスタンスのステータスの画面からパブリック IP を確認。
![0100.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/1a425881-957d-1fe3-4d04-6157f5886f74.png)


```bash
$ ssh -i (pem キーのパス) ec2-user@(パブリック IP)
```

以下のように EC 2 と表示されれば成功。
![0110.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39684/44c73bc5-740d-b34f-a103-5e3ed9a7d5ec.png)


### ssh 接続に失敗する場合
pem ファイルのパーミッションが 600 以外の場合、ssh 接続時に以下のエラーが発生します。

```
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0755 for 'test.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "test.pem": bad permissions
ec2-user@xxx.xxx.xxx.xxx: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
```

この場合は、pem ファイルのパーミッションを 600 に変更してください。

```bash
$ chmod 600 test.pem
```

また、WSL の場合、Windows にマウントしているディレクトリ配下のファイルのパーミッションを変更することは出来ません。
（Windows の D ドライブに pem ファイルを置いて、そのままパーミッションを変更して、ssh というようなことは出来ない。）
この場合、pem ファイルを移動してください。

## 初期設定
### yum update

```bash
sudo yum update
```

### timezone の指定

```bash
sudo timedatectl set-timezone Asia/Tokyo
```
※`timedatectl status`より現在のタイムゾーンの設定が確認できる。

### ngxin インストール

```bash
sudo amazon-linux-extras install nginx1.12

# サービスの起動
sudo systemctl start nginx.service
# 自動開始登録
sudo systemctl enable nginx.service
```

`systemctl is-enabled nginx.service`の結果が enable であることを確認。


### php、php-fpm のインストール

```bash
sudo amazon-linux-extras install php7.3

# サービスの起動
sudo systemctl start php-fpm.service
# 自動開始登録
sudo systemctl enable php-fpm.service
```

`systemctl is-enabled php-fpm.service`の結果が enable であることを確認。