EC2（AWS）で、はじめてのインスタンス立上げ～一般公開まで　～無料枠のみ～

## 前提

この記事は、インフラ初心者が、インフラ初心者の為に、
だれでもEC2で公開できるようにするための手引きです。

### AWSのアカウントを取得

初めてであれば、１年間無料で利用できる枠があるので
これを利用して学習を進めます。


## AWSコンソールにて、EC2を選択

AWSへサインインできたら、
EC2を選択し、インスタンスを選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/711655/b9b9e147-1ea8-473c-92f6-077bff3c6821.png)


続いて、インスタンスを起動させる準備をする為、
「インスタンスの作成」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/711655/a8c0f6d0-bffd-4370-4be2-bdf10fcf17a4.png)

無料枠を利用したいので、
「無料枠のみ」をクリック
一番上の、AMI（Amazonマシーンイメージ）を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/711655/16ea7ae6-55ca-f0ca-cb0c-9e42377c3d0b.png)

インスタンスタイプの選択も、無料枠を利用したいので、tc2.microを選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/711655/e4936957-0753-e3f8-377d-4346b87d65fb.png)

「確認と作成」をクリックして次へ進む

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/711655/4dde563a-a76f-a9a2-7def-60dfe0da0ada.png)

確認画面になるので、セキュリティグループを編集する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/711655/a458556e-46fa-eb18-f3cb-fdbedd096173.png)

現状のままでは、SSHでの接続ができない

パブリックな環境から接続可能とする為、
httpの設定を追加する

ソースの部分は、デフォルト値（0.0.0.0）でよい

※注意
sshは、デフォルト値のままの場合、誰からでも接続できてしまう恐れがある為、
今回のように、お試しで作成して即終了させるのであればよいですが、
運用し続けるのであれば、適切な値に必ず変えてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/711655/df5d7fc9-7419-7505-cf4a-e6aad4fa12e9.png)

ルールの追加

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/711655/b0d4dea4-43b7-3598-a7a3-d962d17bbd2a.png)

ここまで終わったら、起動ボタンをクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/711655/570c55ad-0f35-aec8-a81e-4ad6f05b10cf.png)

### キーペアの設定

AWSは、公開鍵認証なので、その設定します。

> キーペアは、AWS が保存するパブリックキーとユーザーが保存するプライベートキーファイルで構成されます。組み合わせて使用することで、インスタンスに安全に接続できます。Windows AMI の場合、プライベートキーファイルは、インスタンスへのログインに使用されるパスワードを取得するために必要です。Linux AMI の場合、プライベートキーファイルを使用してインスタンスに SSH で安全に接続できます。

今回は初回インスタンスの立上げなので、「新しいキーペア」を作成します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/711655/af3039ab-15a1-3e26-9f52-ede8b1b4c17e.png)

適当なキーペア名を設定して、キーペアのダウンロードをクリック。

```
(キーペア名).pem
```

というファイルがダウンロードできるので、作業フォルダ（どこでもよいです）へダウンロード
※必ず保存すること、文字通り鍵なのでこれがないとSSH接続ができません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/711655/5fb65eb3-8da7-45d5-3484-e275b82b2acc.png)

今回は、test20200915keyという名前でキーペアを選択し、

> 選択したプライベートキーファイル (test20200915key.pem) へのアクセス権があり、このファイルなしではインスタンスにログインできないことを認識しています。

こちらにもチェックをいれると、インスタンスの作成が可能となるので、「インスタンスの作成」をクリック

コンソールに戻ると、下記のような画面になり、インスタンスの立上げ準備が始まる（１分ほどで立ち上がる）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/711655/472364e7-6a70-641c-070c-cdd7a6ae58e2.png)

ステータスが下記のようになったら、立ち上がっている状態となる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/711655/efa09efc-d7e5-8620-30d3-895c11896d98.png)

ここまでで、インスタンスは立ち上がったが、
まだ、何もない状態なので、まだページの表示はできない。

## サーバーを立ち上げる

ここでの目的は、Web公開用のサーバーを立上げ、パブリックなページが表示できるようにする

### CLIでの操作

先ほど、ダウンロードしたtest20200915key.pemファイルがある場所へ移動する

```
$ cd hogehoge
```

現時点では、アクセス権限がないので下記のようなコマンドを入れる

```
$ chmod 400 test20200915key.pem
```

続いて、下記のようなコマンドをいれてSSH接続をする

```
$ ssh -i "test20200915key.pem" ec2-user@ec2-x-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com
```

パスワードを聞かれるので、入力して問題がなければ接続ができる
↓のような、メッセージがでれば成功です

```

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

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

※ちなみに、接続の為のコマンドは、コンソール画面の該当インスタンスで右クリック（接続）で確認、自分用のコマンドが表示されるので、それをコピペして使うと便利です。

### 公開の為の最低限の設定をする

アップデート

```
$ sudo yum update
```

Apacheのインストール

```
$ sudo yum -y install httpd
```

Apacheの起動

```
$ sudo service httpd start
```

### 表示確認

EC2で起動中のインスタンスのコンソール画面上の、
パブリックDNSをコピーして、
適当なブラウザで叩いてテスト画面が表示されていれば成功です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/711655/1591fb12-ed68-59e1-74cc-af2a00195da8.png)


## （おまけ）公開ページを編集してみる

テストページのディレクトリは、

```
/var/www/html/
```

ここに存在しているので、このファイルを編集すれば、テストページが書き換わるハズなので、
試してみる

Vimで編集してみましょう（あまり得意ではないのですが）

```
$ sudo vim /var/www/html/index.html
```

今回は、このように書き換えてみる

```
<html>
<head>hello! ec2 world</head>
<body><h1>hello! ec2 world</h1></body>
</html>
```

テストページが書き換わっていたら、成功です！おつかれさまでした！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/711655/69f60c18-776e-2be3-452c-5eee2c4095d3.png)

### 終了手続き

インスタンスを立ち上げたまま忘れてしまうと、知らない間にコストが発生する可能性があるので、
不要な場合は、インスタンスを終了させましょう。