40 代おっさん　 EC2 に Apache を起動してみた

## 本記事について

本記事は AWS 初学者の私が学習していく中でわからない単語や概要をなるべくわかりやすい様にまとめたものです。
もし誤りなどありましたらコメントにてお知らせいただけるとありがたいです。

## AWS 最終作成図

![ec2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/d0281a98-3072-5e9c-94fb-ee2555e1f24a.png)

## 構築手順

❶ EC2 インスタンス作成と同時に Apache インストール
❷ EBS を作成してアタッチする
❸ アタッチしたあとマウントして使える状態にする

### 1. EC2 インスタンス作成と同時に Apache インストール

サービスより EC2 を選択
![インスタンス作成.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/3eaa47df-4e56-bc48-0bed-42bb2ec4d03b.png)

インスタンスを起動をクリック（赤枠）
![linux.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/21eedb50-03ab-218a-d72b-126d8062e461.png)

Amazon Linux 2 AMI (HVM), SSD Volume Type を選択（赤枠）

![インスタンスタイプ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/38b17eec-2ab1-4e10-e172-14211acbfc14.png)

インスタンスタイプは t2.micro を選択（赤枠）
選択したら　次のステップ：インスタンスの詳細の設定をクリック

![インスタンス詳細.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/c0a77dfd-4eec-341f-d656-383b6aff42fd.png)

ネットワークは今回はデフォルトのものを使用（赤枠）
サブネットもそれに付随しているもの（青枠）
自動割り当てパブリック IP はネットワークに繋げるため有効（黒枠）

```shell

#!/bin/bash         　　　　　　　　　　　　　#シェバン
echo "===yum -y install httpd==="
yum -y install httpd　　　　　　　　　　　　　#Apacheインストール
echo "===systemctl start httpd.service==="
systemctl start httpd.service　　　　　　　　#Apacheサービスをスタート
echo "===systemctl enable httpd.service==="
systemctl enable httpd.service　　　　　　　 #再起動後もApacheサービスをスタート
echo "echo $(curl http://169.254.169.254/latest/meta-data/instance-id) >> /tmp/test"
echo $(curl http://169.254.169.254/latest/meta-data/instance-id) >> /tmp/test
#インスタンスIDを/tmp/testに書き出す
```

上記をユーザーデータに書き込む
それが ↓ になります
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/e542f63e-0d5d-d3a7-93eb-7519695b1309.png)

終わったら　次のステップ：ストレージの追加

![ストレージの追加.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/3f8a361b-0dd9-9299-d9ca-aba143111b78.png)

実はこちらで EBS の追加できますが、今回は後からアタッチする形で勉強したいと思います
また（赤枠）のところにチェックが入っていないとインスタンス終了時に削除しない形になるため無駄な課金発生しますので注意です
終わったら（青枠）次のステップ：追加をクリック

![タグの追加.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/44ea7e1e-015e-34e0-49e6-1d9d89ad3812.png)

(赤枠）Name を入力
(青枠）好きな名前で（自分は EC2-test-1)
(黒枠）すべて入力後クリック

![セキュリティーグループ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/1e01b723-0f69-394b-6661-ce932bb304ff.png)

（赤枠）ルールの追加をクリック
（青枠）今回は HTTP 通信で Apache アクセスするため必要
（黒枠）最後に確認と作成をクリック

![起動.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/c0c810af-ff22-d8ee-8763-bb7dcf31820e.png)

インスタンスの確認画面に画面遷移しますので確認後、（赤枠）起動をクリック
今回は既存のキーペアを使用します、キーペアを選択し下のチェック欄をチェックしてください（青枠）
終わりましたらインスタンスの作成（黒枠）をクリック

![インスタンス確認.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/ac15913e-efdf-d315-319a-27976f512820.png)

作った EC ２が実行中になっていれば問題はありません
あとはパブリック IPv4 アドレスを確認してコピーしてください
Tera Term で EC2 ログインして正常にシェルスクリプト起動しているか確認します

```shell
systemctl status httpd.service
```

上記のコマンドを打つと
![ステータス確認.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/93179032-63dc-cd1b-0bb3-faba65696f98.png)

このようになって active(running)（赤枠）になっていれば Apache 起動していることになります
次は

```shell
cat /tmp/test
```

上記のコマンドを打つと
![ｃｍｐ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/f74b716f-30d0-2dd7-8cf7-c7b0714e0798.png)

インスタンス ID が tmp/test に書き出されるのがわかります

次に

```shell
cat /var/log/cloud-init-output.log
```

上記を打ち込むと一部抜粋ですが以下になります。

![確認.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/059ce6a4-fb7a-7eff-7645-99a0ee18ea17.png)

（赤枠）echo "===systemctl start httpd.service==="などの確認用 echo 出ています
（青枠）echo でたインスタンス ID を /tmp/test に書き込んでいるのを確認できます
このようにログが残っているということは忘れないように！！

ではパブリック IPv4 アドレスを打ち込んで Apache が映るか確認したいと思います

![アパッチ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/5ba1ee0b-c0b8-12fd-2786-4972591343ef.png)

問題なく映りました

## 最後に

結構色々やりましたね～～
linux コマンドも色々打ちましたね
linux は別途で勉強しないとです
まだ作成図は途中なので次は EBS をアタッチして使える状態にしたいと思います

またこの記事は AWS 初学者を導く体系的な動画学習サービス「AWS CloudTech」の課題カリキュラムで作成しました。
<https://aws-cloud-tech.com/>