Amazon Web Services基礎からのネットワーク＆サーバー構築 Webサーバーソフトインストール

:::note
<a href="https://amzn.asia/d/3qYbC8Z">Amazon Web Services基礎からのネットワーク＆サーバー構築</a> を実施した際の備忘録です。
:::


※前回はこちら

https://qiita.com/hoge889/items/42674fc7beee50e30db6

## 今回の目標

Apache HTTP Server をインストールし、EC2インスタンスにHTTP通信で接続できるようにします。

## Session Manager でEC2に接続する 

前回は SSH 接続を試みましたが、AWS Systems Manager のセッションマネージャーを使ってます。

設定手順は以下記事に記載してます。

https://qiita.com/hoge889/items/c89dd7ee9d1136bd0dba

## Apache HTTP Server のインストール

セッションマネージャーで接続し、以下コマンドで Apache HTTP Server をインストールします。

    $ sudo dnf -y install httpd

コマンドを実行すると httpd とそれに依存するパッケージがまとめてインストールされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764512/71bb8146-a2f5-d31e-f7b9-b9fbba493ee9.png)

次に以下コマンドで Apache HTTP Server を起動します。

    $ sudo systemctl start httpd.service

サーバー再起動時に Apache HTTP Server を自動で起動させる場合は以下コマンドを実行します。

    $ sudo systemctl enable httpd.service

ちなみに Apache HTTP Server の自動起動を停止する場合は以下コマンドになります。

    $ sudo systemctl disable httpd.service

また、Apache HTTP Server の設定内容を確認する場合は以下コマンドを実行します。

    $ sudo systemctl list-unit-files httpd.service

自動起動するように設定されていれば、画像のように表示されるはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764512/321be18a-5cf4-73a5-d569-fd986e20dfb3.png)

## Apache HTTP Server のプロセスを確認する

psコマンドを使って実際に動作しているか確認します。

    $ ps -ax | grep httpd

画像のように /usr/sbin/httpd -DFOREGROUND と記載されている行があれば、httpdプロセスが動いてます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764512/be2825a0-ab2d-02fe-b241-22ecacaa1eda.png)

またポートの状況も下記コマンドで確認してみます。

    $ sudo lsof -i -n -P

画像のようにHTTP（80番）で待ち受けていることが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764512/239c7c4f-5191-86fa-cb60-001c264d8fe1.png)

最後にセキュリティグループでHTTP接続を許可するように設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764512/198641c0-43c7-edeb-ad78-84dacf6f7f2d.png)

::: note warn
必要に応じて、IPアドレスによる制限をかけてください。
:::

## Webブラウザでサーバーにアクセスする

Webブラウザでサーバーにアクセスする場合は http://EC2インスタンスのパブリックIP/ でアクセスします。

『It works!』と表示されれば成功です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764512/493d4ab6-2a74-3590-0ff7-8f7f2bd05b31.png)

## DNSサーバを構成しサーバーにアクセスする

次にIPアドレスではなくドメイン名を用いてアクセスできるように、DNSサーバを構成します。

作成したVPCを編集し、『DNSホスト名を有効化』にチェックを入れて保存します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764512/67d71a8a-45e1-d9c3-1bca-eab145fd4622.png)

その後作成したEC2に戻ると、『パブリックDNS』『プライベートDNS』にDNS名が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764512/4bb973fe-35a2-a7c6-76de-954c4f6bf77f.png)

Webブラウザ上でパブリックDNS名を入力してみると、アクセスに成功します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764512/b3e97b9d-3fe5-e4ac-f5ab-5f2e0908413f.png)

nslookupコマンドを利用することで、パブリックドメイン名がどのように名前解決されているか確認できます。
※「正引き」と言います。

    $ nslookup 【パブリックドメイン名】

画像のように、パブリックIPが返ってくることが分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764512/f06753a7-d775-4f58-d084-a144851b0eb1.png)

またnslookupコマンドでパブリックIPを指定することも可能です。
※「逆引き」と言います。
    
    $ nslookup 【パブリックIP】

実行すると、画像のようにパブリックドメイン名が返ってきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3764512/a11bd00b-32dd-a25e-e245-a04bda1ca3d9.png)

お疲れさまでした。
次回はプライベートサブネット・DBサーバを構築し、疎通確認まで行います。

## 参考文献

<a href="https://amzn.asia/d/3qYbC8Z">Amazon Web Services基礎からのネットワーク＆サーバー構築</a> 

https://qiita.com/kamiyama_kkkkk/items/1024b01ea50baefa11bd