AWSのEC2でWebサーバ（Apache）を構築する方法

# はじめに
仕事でAWSのEC2にApacheのWebサーバを構築してテスト環境を作る機会があり、自分の備忘録を兼ねて手順を記載します。
※この記事は2024年4月頃の情報を基に作成しています
# 前提
・AWSアカウントがあること（VPC、EC2の操作権限があること)
・TeraTarmをインストール済みであること※TeraTarmを使って作成したEC2にアクセスします
・使用するIPｖ4のCIDRを決めておく※使用するプライベートアドレスの範囲を決めておく
　今回は10.1.1.0/24を使用します
# アーキテクチャ図![イメージ図4.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3677761/0ce0968c-63db-d6e9-8851-06a244d635f7.png)

# やること
①VPCの作成
②セキュリティグループの作成
③EC2の作成
④EC2にApacheをインストール
# 手順
### ①VPCの作成
AWSにログインし検索ウィンドウで「VPC」と検索します。
「VPCの作成」を押下します。
下記の画面に遷移しますので、ここでは以下のように設定します。
![イメージ図4.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3677761/c1f18951-4107-d862-b590-89a054dba0bb.png)
・「VPCなど」を選択※サブネットやルートテーブルなど必要な設定が一緒に作成されます。
・タグ名はここでは「TEST」としています。
・IPｖ4のCIDRブロックは事前に決めておいた「10.1.1.0/24」とします。
・今回IPv6は使用しないため、CIDRブロックなしを選択
・テナンシーはデフォルトを選択(ハードウェアを専用するか共用するかを選択します。デフォルトは共用)
・今回はテスト環境のためAZ(アベイラリティゾーン)は1としています

続いて以下を設定します。
![イメージ図4.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3677761/066e39b4-2266-fc61-f377-1d36fcb64269.png)
・パブリックサブネットは今回1つ使用します。
・プライベートサブネットは今回使用しないため「0」とします
・NATゲートウェイも使用しないため「なし」を選択します
・VPCエンドポイントも使用しないため「なし」を選択します
設定が終わったら「VPCを作成」を押下します。
するとVPCワークフローの作成が実行され、数十秒でVPCが作成されます。
作成が終わると「TEST-vpc」という名前のVPCができていると思います。

### ②セキュリティグループの作成
メニューからセキュリティグループを選択します。
セキュリティグループは通信をフィルタリングする機能です。
![イメージ図4.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3677761/7b05adb7-54d6-9d0d-41fa-695a5071d3b1.png)
・セキュリティグルー名を作成します。ここでは「TEST-SG01」としています。
・説明を記載します。ここでは「test」としています。
・VPCは先ほど作成したVPCを選択してください。ここでは「TEST-vpc」を選択。
続いてイインバウンドルールとアウトバウンドルールを作成します。
![スクリーンショット 2024-04-24 145246.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3677761/1b679f0c-298c-49b7-92d5-3447a63e8a92.png)
・インバウンドルールは、このあとsshで接続するため「SSH」のみ許可します。
・インバウンドルールの「ソース」は「Anywhere-IPv4」を選択
・アウトバウンドルールはすべてのトラフィックを許可しています。
・アウトバウンドルールの「送信先」は「Anywhere-IPv4」を選択
※アウトバウンドルールを特定の通信のみに限定すると、この後で実施するApacheのインストール作業時にエラーが出る可能性があります。
ルール作成時に送信元を全て(0.0.0.0/0)にすると警告が出ますが、今回は気にせずこのまま作業を進めます。
右下にある「セキュリティグループを作成」を押下すると新たなセキュリティグループが作成されます。
### ③EC2の作成
EC2を作成します。検索窓で「EC2」と検索し「インスタンスを起動」を押下します。
![スクリーンショット 2024-04-24 145246.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3677761/0bf0811b-a786-124e-ac9c-386d47ae3f2e.png)
・EC2の名前を記載します。ここでは「TEST-ec2」とします。
    ・AWSマシンイメージ（AMI）を選択。ここではAmazon Linux2 AMI(HVM)を選択しています。
続いてSSHでログインするためのキーペアを作成します。
![スクリーンショット 2024-04-24 110252.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3677761/57f75312-1e34-478d-92dc-8f5136571344.png)
今回は新しいキーペアを作成するため「新しいキーペアの作成」を押下します。
![スクリーンショット 2024-04-24 110308.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3677761/e6ecced9-5115-d99d-feab-7fda1b04d8dd.png)
・キーペア名を記載します。ここでは「TEST」とします。
・キーペアのタイプを選択します。ここでは「RSA]を選択しています。
・プライベートキーファイル形式を選択します。ここでは「.pem」を選択します。
「キーペアの作成」を押下すると作成されたキーペアがダウンロードされますので
適当なところに保存してください。※後ほどSSHでログインする際に必要になります。
![スクリーンショット 2024-04-24 110322.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3677761/2e20eff0-4717-b76e-1e72-31f4d72e957b.png)

続いてネットワーク設定を行います。

作成したPVCがデフォルトのネットワークになっていない場合は、ネットワーク設定の横にある「編集」を押下し
設定を行ってください。
![スクリーンショット 2024-04-24 110833.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3677761/441bf9eb-125d-4bcf-4e80-a84054eb89ea.png)
先ほど作成したVPCを選択します。
すると関連したサブネットなどが自動で選択されます。
![スクリーンショット 2024-04-24 110859.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3677761/4399584d-0165-d752-6d45-caab5a5a1e85.png)
・パブリックIPの自動割り当てを「有効」にします。有効にすることで、インターネットで接続する際のパブリック IPv4 アドレス（GIP）が自動で付与されます。
・「既存のセキュリティグループ」を選択します。ここでは先ほど作成した「TEST-SG01」を選択します。
「インスタンスを起動」を押下します。数分待つと、以下のように作成したEC2が実行中となり、2/2チェックにも合格したメッセージが出ます。
![スクリーンショット 2024-04-24 111208.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3677761/bf8acee3-0d0d-7623-d3bc-3f546e07cfef.png)
作成したEC2の詳細画面にパブリック IPv4 アドレスがありますのでそのアドレスをコピーします。
TeraTarmを起動します。TCP/IPを選択し、ホストに先ほどコピーしたパブリックIPｖ4アドレスを記載します。サービスの「ssh」を選択し「OK」を押下します。
アクセスできる状態であればサーバー側のホスト鍵指紋のハッシュアルゴリズムなどを聞かれますので「SHA256」を選択し「続行」を押下します。
続いてユーザー名を入力します。デフォルトでは「ec2-user」となっています。
※インスタンスを選択→アクション→接続でユーザー名の確認ができます。
![スクリーンショット 2024-04-24 111336.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3677761/8439c794-0bd5-c99d-0f61-ccdd9c2076f5.png)
認証方式でRSA/DSA/ECDSA/ED25519鍵を使うを選択し、先ほど作成したキーペアのキー(.pem)を選択し「OK」を押します。
無事ログインができるとTeraTarmが以下のような画面になります。
![スクリーンショット 2024-04-24 111359.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3677761/2930395f-7aea-e936-4922-9b41854f6234.png)

### ④EC2にApacheをインストール
TeraTarmでEC2にログインしている状態で以下のコマンドを入力します。
1、ルートユーザに切り替えます
```
sudo su root
```
2、システムにインストールされているすべてのパッケージを確認し、それらを最新のバージョンに更新します
※-yは確認プロンプトを表示させず、自動的にすべての変更を受け入れるオプションです。
```
yum -y update
```
3、yumを使用して、HTTPサーバー（httpd）をインストールします
```
yum -y install httpd
```
4、Apacheを起動します
```
systemctl start httpd
```
※起動時は何も表示が出ません
5、Apacheが正常に起動したか確認します
```
systemctl status httpd
```
Active: active (running)となっていれば正常に起動しています。
※yumのupdateやinstall時にエラーになる場合は、セキュリティグループのアウトバウンド設定を確認してみてください。

# まとめ
Webサーバ構築は初めての経験だったので、初回の構築には時間が掛かりましたが色々と勉強になりました。
本記事が他の方のお役に立てれば幸いです。