仮想マシンにApacheをインストールしてWebサーバを構築したお話

# はじめに
先日受けました仮想マシン上でApacheをインストールしてWebサーバ構築を行うハンズオンを受けまして、そこからさらにホストOS側からゲストOSにアクセスし、Webページを返してもらうところまでやってみましたので、こちらにまとめます。

# 環境
- ホストOS：Windows10
- ゲストOS：CentOS7
- VirtualBox：6.1.0
- Apache：2.4.6


# 手順
## Apacheインストール
### 仮想マシン起動
[前回の記事](https://qiita.com/kito_engineer/items/e94c834c546db0185dbb)でCentOSをインストールした仮想マシンを構築しましたので、その仮想マシンを起動します。
仮想マシンを起動したらターミナル（端末）を開きます。
### Apacheをインストール
ターミナル上で

```
yum -y install httpd
```
と入力して実行することでApacheをインストールすることができます。
### Apacheのインストール確認
Apacheをインストールしたあとにターミナル上で

```
htttpd -version
```
と入力すると、インストールしたApacheのバージョンを確認することができます。
![2020-01-19_13h26_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133573/caadcebc-8fd0-1ebd-bcb1-e7e83398f77b.png)


## Apache起動
### Apacheの起動
続いて、インストールしたApacheを起動します。
起動するときは

```
systemctl start httpd.service
```
と入力します。
### Apacheの自動起動設定
今後、Apacheをインストールしたマシン（今回の場合は仮想マシン）を起動するときに自動でApacheを起動したい場合は、

```
systemctl enable httpd.service
```
と入力します。

## HTMLを返すか確認（ゲストOS → ゲストOS）
ブラウザから自分自身のパソコンにアクセスすることでWebサーバが構築できているか確認します。
Apacheを起動した状態で仮想マシン上でブラウザを開き、

```
http://127.0.0.1
```
にアクセスします。（127.0.0.1は自分自身を指すIPアドレス）
この画面が表示されれば成功です。
![2020-01-19_12h38_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133573/683c05cd-11f1-04d9-20e6-2cabb8ce051a.png)


## HTMLを返すか確認（ホストOS → ゲストOS）
最後にホストOSから仮想マシンに接続して先ほどと同じ画面が表示されるか確認します。
### 仮想マシンのIPアドレスを確認
先ほどはゲストOSがゲストOS自身に接続するため、IPアドレスは「127.0.0.1」で接続できました。
しかし、今回はホストOSからゲストOSに接続します。
もしホストOSで127.0.0.1を入力した場合、そのIPアドレスはホストOS自身を指し、ゲストOSにはアクセスできません。
人間から見たら同じパソコン（同じハードウェア）であってもホストOSとゲストOSの127.0.0.1は異なるIPアドレスを指します。
そのため今回はゲストOS側のIPアドレスを確認し、そのIPアドレスを使ってホストOSからアクセスします。

IPアドレスを確認するためにまずは設定を開きます。
![2020-01-19_12h48_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133573/fbd84e96-a0c4-2860-6ae1-19d89206c597.png)
歯車マークを開きます。
![2020-01-19_12h50_40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133573/2637b1c3-834d-f96b-e2c3-96b17363437c.png)
IPv4でゲストOSのIPアドレスを確認できます。
![2020-01-19_12h52_52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133573/2b3ebeec-b45f-fb47-f656-bdf78be38d59.png)

### ホストOSから接続
ホストOS側でブラウザを開き、「http://（ゲストOSのIPアドレス）」にアクセスします。
先ほどゲストOS側で確認したのと同じ画面が表示されれば成功です。
![2020-01-19_12h38_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133573/d622cef5-92c6-f3f0-4b3b-81cb6e99565d.png)


# つまづいた点
## Apacheインストールできない
```
yum -y install httpd
```
と、入力したところエラーが発生しました。
そのときのエラーを取っておき忘れてしまったのですが、たしかNot Found的な内容だったと思います。
そこで仮想マシン上のネットワークを確認したところ、そもそもネットワークの接続がすべてオフになっていました。
![2020-01-19_13h05_28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133573/a92503d7-8823-beb7-e4bf-77a41c66854a.png)
この単純なミスにもかかわらず、かなりの時間を割いてしまったので念のため記載しておきます。

## ホストOSから接続してもHTMLが返ってこない
Apacheを起動した状態でホストOSからアクセスしても、
![2020-01-19_13h12_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133573/9ec7e6c1-9132-7563-7d05-8a517a880d37.png)
このエラー画面が表示されてしまいました。
調べると、ゲストOS側のHTTPで接続するための80番ポートをあけないといけないようです。
ターミナル上で、

```
firewall-cmd --zone=public --add-service=http --permanent
```
と入力することで、80番ポートを開けることができます。
80番ポート開けたあとはファイアウォールに設定を反映させます。

```
firewall-cmd --reload
```
この手順で80番ポートを開けたあとに再度ホストOS側からゲストOS側へアクセスすると、今度はちゃんと画面が表示されるようになりました。

# 参考記事
Apacheのインストール手順については[こちら](https://weblabo.oscasierra.net/apache-installing-apache24-yum-centos7-1/)の記事を参考にしました。
80番ポートを開ける手順については[こちら](https://eng-entrance.com/linux-centos-port)の記事を参考にしました。

# おわりに
今回はApacheのインストールから、ホストOSからゲストOSへアクセスしてWebページが返ってくることの確認までを行いました。
もし間違い等ありましたらご指摘いただけますと幸いです。
今回のお話はここまでです。