クラウド初心者のAWS入門(第6回)

## 第6回　Apacheのインストール

前回構築したインスタンスに、Apacheをインストールしていきます。
Apacheをインストールすることで、インスタンスにWEBサーバの機能を持たせます。

|![システム構成図_第6回目.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/f0755591-f1f9-1c8b-7a69-b77f4fac15af.png)
|:-:|

以下の順で進めていきますのでよろしくお願いします。

+ TeraTermでインスタンスへログイン
+ Apacheインストール
+ httpd自動起動設定
+ httpd起動
+ セキュリティグループの設定
  - httpd待機ポート確認
  - セキュリティグループのポート開け
+ 動作確認

***
### TeraTermでインスタンスへログイン
***

インスタンス作成後の確認も踏まえて、自端末からインスタンスへSSH接続を行います。
前回のインスタンス構築後に実施すれば良かったのですが・・・

今回使用させていただくターミナルソフトは、TeraTermです。
[TeraTerm v4.105(窓の杜様に飛びます)](https://forest.watch.impress.co.jp/library/software/utf8teraterm/)

早速TeraTermを起動します。

|![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/35d4471c-883f-5b09-2c2b-b543ee252271.png)
|:-:|

TeraTermでの入力項目です。

+ ホスト名　：「パブリックIP」を入力します。
<details>
<summary>パブリックIPの確認方法</summary>
<div>

|<img width="1648" alt="補足1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/935913df-8bd7-9786-c42e-657d55977a4f.png">
|:-:|

</div>
</details>

+ サービス　：「SSH」を選択します。(デフォルト)
+ TCPポート：　「22」(デフォルト)

「OK」を選択するとセキュリティ警告が表示されます。
これは当該インスタンスへ初めて接続する場合に表示されるものです。
問題はないので、続けて「OK」ボタンを選択してしまいます。

その後、認証情報を問われますので入力していきます。

+ ユーザ名：「ec2-user」 **最初から登録されているユーザ**
+ RSA/DSA/ECDSA/ED25519鍵を使う：「チェック」
  - 秘密鍵：インスタンス起動時に生成したキーファイルを選択(hogehoge **.pem** ってファイル)

|![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/f026a969-b232-b43d-b33b-0301be95e5e5.png)
|:-:|

認証に成功すると以下の初期画面が表示されます。
さすがAWS、ログインバーナーもお洒落です。(なんのマーク？)

|![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/ea879a9f-e6c3-9bda-804f-3cffe4d2449b.png)
|:-:|

***
### Apacheインストール
***

ログイン後、以下のコマンドを実行しApacheをインストールします。
完了するとcomplete!!と表示されプロンプトが戻ります。

```
[ec2-user@ip-10-0-1-30 ~]$ sudo yum -y install httpd
```

本当にインストールされたのか確認をします。

```
$ yum list installed | grep httpd
generic-logos-httpd.noarch            18.0.0-4.amzn2                 @amzn2-core
httpd.x86_64                          2.4.41-1.amzn2.0.1             @amzn2-core
httpd-filesystem.noarch               2.4.41-1.amzn2.0.1             @amzn2-core
httpd-tools.x86_64                    2.4.41-1.amzn2.0.1             @amzn2-core 

# httpdがインストールされた!!
```

***
### httpd自動起動設定
***

インストールが終わったらhttpdデーモンの設定を行なっていきます。
Apacheのデーモンがhttpdなので登場するのは、登場するのはほとんどhttpdです。

はじめに、httpdサービスの自動起動を設定します。
この設定で、インスタンス起動時にhttpdも起動します。

```
# 現状の確認

$ sudo systemctl list-unit-files | grep httpd
httpd.service                                 disabled
httpd.socket                                  disabled

## 「httpd.service」が「disabled」のため自動起動ではありません!!

# 自動起動設定

$ sudo systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

# 自動起動設定確認

$ sudo systemctl list-unit-files | grep httpd
httpd.service                                 enabled
httpd.socket                                  disabled

## 「httpd.service」が「enable」になったので、自動起動が有効になりました。
```

***
### httpd起動
***

インストールした状態だとhttpdは起動していないので起動してあげます。

```
# httpd起動

$ sudo systemctl start httpd.service

## httpd起動確認

$ sudo systemctl status httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2020-05-19 06:18:46 UTC; 35s ago

   ### ステータスが「runnning」となっているのでOK

     Docs: man:httpd.service(8)
 Main PID: 3913 (httpd)
  ==============以下略==========================
```

***
### セキュリティグループの設定
***

ここまででApacheのインストールと起動が完了しました。
しかし、これだけはクライアントからアクセスすることはできません。

Apacheが通信で使用するポートを確認して、インスタンス側でそれを許可する必要があります。

***
#### httpd待機ポートの確認
***

まずはhttpdが使用するポートを確認していきます。

```
# 以下コマンドで確認
$ sudo lsof -i -n -P | grep apache
httpd    3914   apache    4u  IPv6  26636      0t0  TCP *:80 (LISTEN)
httpd    3915   apache    4u  IPv6  26636      0t0  TCP *:80 (LISTEN)
httpd    3916   apache    4u  IPv6  26636      0t0  TCP *:80 (LISTEN)
httpd    3917   apache    4u  IPv6  26636      0t0  TCP *:80 (LISTEN)
httpd    3918   apache    4u  IPv6  26636      0t0  TCP *:80 (LISTEN)

## Apacheは「TCP」の「80」で待機していることがわかりました。
```

***
#### セキュリティグループのポート開け
***

httpdが使用するポートが分かったので、セキュリティグループの設定を確認して、必要な設定を行なっていきます。
「EC2 マネジメントコンソール」から、「インバウンドルール」タブの「インバウンドルールの編集」を選択します。

<details>
<summary>**EC2マネジメントコンソールの表示はこちら**</summary>
<div>

|![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/55942a13-1326-b704-f148-281efcd6ebe7.png)
|:-:|

</div>
</details>

|![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/4ac7ec62-f594-41c4-2987-3b1158413d10.png)
|:-:|

初期状態のためTCP22番ポートに対する許可設定しかされていません。
前項で確認したApache用の「TCP」「80」を追加してあげます。

|![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/66316b77-9121-fb4f-a0dc-88f87eb69488.png)
|:-:|

無事に追加できました。

|![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/8240245d-3eff-9d7c-4192-213f85c2951c.png)
|:-:|

必要な設定が完了したので、Webブラウザからインスタンスに接続してみます。
Webブラウザのアドレスバーに`http://"パブリックIP"`を入力します。すると・・・

|![4_apache起動.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/626270/3dd5bdaa-e661-c9d2-d09d-f8c43b26ff1f.png)
:-:|

インスタンスがApacheのWebサーバとして稼働していることがわかりました。
今回はここまでです、次回はDNS周りの設定をする予定です。

### 参考文献
完コピにならないよう頑張ります。
[Amazon Web Services 基礎からのネットワーク&サーバー構築](https://shop.nikkeibp.co.jp/front/commodity/0000/231260/)