OJT AWSでWEBサイトを表示できるようにする

## はじめに
AWSを利用し、実際の構築を行ってみる

### 最終目標
EC2のグローバルIPにアクセスすると、apacheのデフォルトページが表示されるようにする

:::note info
作成していく過程でわかない部分があるとおもいます
その場合はnarekomu-ai等を活用し調べてください
:::

### 利用するツール
- putty
## VPCを作成する
構成情報
|VPC名|IPv4 CIDR|リージョン|
|---|---|---|
|OJT-VPC-[自分の苗字(ローマ字)]|10.0.0.0/16|東京|

|サブネット名|IPv4 CIDR|アベイラビリティゾーン(AZ)|
|---|---|---|
|OJT-subnet-public-ec2-ap-northeast-1a  |10.0.1.0/24  |ap-northeast-1a|
|OJT-subnet-public-ec2-ap-northeast-1d  |10.0.2.0/24 |ap-northeast-1d|
|OJT-subnet-public-alb-ap-northeast-1a  |10.0.3.0/24 |ap-northeast-1a|
|OJT-subnet-public-alb-ap-northeast-1d  |10.0.4.0/24 |ap-northeast-1d|

|ルートテーブル名|VPC|ルートの編集|サブネットの関連付け|
|---|---|---|---|
|OJT-rtb-public-ec2|OJT-VPC-[自分の苗字(ローマ字)]|10.0.0.0/16<br>0.0.0.0/0 IGW|OJT-subnet-public-ec2-ap-northeast-1a<br>OJT-subnet-public-ec2-ap-northeast-1d
|OJT-rtb-public-alb|OJT-VPC-[自分の苗字(ローマ字)]|10.0.0.0/16<br>0.0.0.0/0 IGW|OJT-subnet-public-alb-ap-northeast-1a<br>OJT-subnet-public-alb-ap-northeast-1d|

|インターネットゲートウェイ|アタッチするVPC|
|---|---|
|OJT-igw|OJT-VPC-[自分の苗字(ローマ字)]|

## EC2を作成する
|EC2|設定値|
|---|---|
|EC2名|OJT-[自分の苗字(ローマ字)]|
|利用するAMI|Amazon Linux 2023 AMI|
|アーキテクチャ|64ビット(86)|
|インスタンスタイプ|t2.micro|

### キーぺアについて
EC2を作成する途中で、キーペア名を選択する項目があります
ここは後ほどサーバーに対しSSHする際利用しますので新規作成します
そのため、新しいキーペアの作成をクリックしてください
<font color="red">**※作成後ダウンロードされるファイルはなくさないでください**</front>

|キーペア||
|---|---|
|キーペア名|OJT-[自分の苗字(ローマ字)]|
|キーペアのタイプ|RSA|
|プライベートキーファイル形式|ppk|

### ネットワーク設定
ネットワーク設定の右側にある編集ボタンをクリックしてください。
設定情報は以下の内容に変更してください
|設定情報||
|---|---|
|VPC|OJT-VPC-[自分の苗字(ローマ字)]|
|サブネット|OJT-subnet-public-ec2-ap-northeast-1a
|パブリックIPの自動割り当て|有効化|
|ファイヤーウォール|セキュリティグループを作成|
|セキュリティグループ名|OJT-ec2-sg|
|説明|ojt-ec2|
|インバウンドセキュリティグループ||
|タイプ|SSH|
|ソース|接続しているネットのグローバルIP|

### ストレージを設定
- gp3の容量8GiBを入力してください

### インスタンスを起動
- 設定を再確認し問題なければ、右側にあるインスタンスを起動をクリックする

## 作成したサーバー(EC2)にSSHする
- EC2が起動すると、パブリックIPが付与されますのでメモしておきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882356/843d7e6a-1b8c-faf9-864a-3bff49f54248.png)

### puttyを起動する
- puttyを起動し、ホスト名に先ほどのパブリックIPの入力とクレデンシャルにキー作成時にダウンロードされたファイルを選択する

パブリックIPを入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882356/391bb6c6-971c-3a5a-0ad1-b74a5a241e6f.png)

認証のための秘密鍵ファイルで先ほどダウンロードしたものを選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882356/23750784-60de-17ab-56dc-558fb34a0b4d.png)

- 接続に成功すると下記のようになります
ec2-userと入力してください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882356/a43cdf92-5b99-2fce-8341-85299fd052a8.png)

### セキュリティアップデートをする
- 作成された直後ですと、セキュリティアップデートが存在している場合がありますので、アップデートしていきます

下記コマンドを順番に入力してください
```
sudo dnf upgrade
```
- アップデートがある場合ですと、y/nという表示がでてきますのでyを入力してアップデートしてください
- アップデートがない場合はy/nの確認が表示されないです

### apacheをインストールする
- apacheというミドルウェアをインストールします
ざっくりと説明しますが、apacheはWEBサーバーソフトウェアというもので
インストール後サーバー(EC2)にアクセスすると、ウェブページが表示されるようになります
興味がある方は別途調べてみてください
- 以下コマンドを入力してください
y/nの確認がありますので、yを入力してください
```
sudo dnf install httpd
```
apacheがインストールされているか確認する
```
systemctl status httpd
```
- deadになっている場合は下記コマンドで起動してください
```
sudo systemctl start httpd
```

## サーバー(EC2)にHTTPで接続してみる
- ブラウザにEC2のグローバルIPを入力すると、apacheのデフォルトページが開くのですが今の設定ですと接続拒否されてしまいます
- 調べて接続できるようにしてください

条件
- 会社のIPから接続した場合のみ、WEBページが開くように設定してください

### 最後に
これでとりあえずのWEBサーバーができました
ただ、今の構成ですとEC2がダウンした場合サイトもダウンしてしまいます
次のOJTではサーバーを複数作成し冗長化することで、障害に強いサイトを作成していきます