【初心者向け】Vagrantを利用して仮想マシンでApacheを起動する

Vagrantを利用して仮想マシンでApacheを起動する方法を記載します。

## 対象読者

- Webプログラミング初心者
- 仮想マシンを動かしたい人
- 仮想サーバーを立ち上げたい人

## この記事を読んでわかること

- Vagrantを利用して仮想マシンを構築する方法
- 仮想マシンからApache(Webサーバー)を起動し、ホストマシンからアクセスする方法

## 必要なもの

- パソコン
- ネット環境

## VirtualBox のインストール

`VirtualBox`とは...

> 既存のオペレーティング・システム（ホストOS）上にアプリケーションの一つとしてインストールされ、
> この中で追加のオペレーティング・システム（ゲスト OS）を実行することができる。
> 例えば、Microsoft Windowsが「ホストOS」として動作しているマシン上で、Linuxをゲストとすることができる。
> あるいは、Solarisが実行されているマシン上で、Microsoft Windowsを「ゲストOS」として実行することができる。

引用元: [VirtualBox - Wikipedia](https://ja.wikipedia.org/wiki/VirtualBox)

VirtualBoxの利用により、ホストPC上で任意の仮想OSを実行することができます。
インストーラーは[https://www.virtualbox.org/](https://www.virtualbox.org/)からダウンロードできます。

## Vagrant のインストール

`Vagrant`とは...

> Vagrant（ベイグラント）は、FLOSSの仮想機械を構築するためのソフトウェアである。
> 構成情報を記述した設定ファイル (Vagrantfile) を元に、仮想環境の構築から設定までを自動的に行うことができる。

引用元: [Vagrant(ソフトウェア) - Wikipedia](<https://ja.wikipedia.org/wiki/Vagrant_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)>)

Vagrant を利用することで、仮想マシンの構築や設定を簡単に行うことができます。
インストーラーは[https://www.vagrantup.com/](https://www.vagrantup.com/)からダウンロードできます。
インストール後は PC の再起動が促されますので、再起動します。

## Vagrant の設定

Vagrant は、`Box`と呼ばれるファイルを利用することで仮想マシンの制御を行います。
Box ファイルとは、仮想マシンについての情報が入っているファイルのことです。

まずは Box ファイルをインストールしましょう。
Box ファイルは、[https://app.vagrantup.com/boxes/search](https://app.vagrantup.com/boxes/search)などから入手することができます。

今回は[bento/centos-7.5](https://app.vagrantup.com/bento/boxes/centos-7.5)を利用したいと思います。
名前から分かる通り、CentOSの構成が記載されたBoxファイルです。
ホスト PC でターミナルソフトを起動し、任意のディレクトリに移動します。
![cd.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211475/3b06c3a5-e3e6-d797-7e6e-e622eb40edd4.png)

移動したら、次のコマンドを実行してください。

```:Vagrantを初期化する
$ vagrant init bento/centos-7.5
```

実行後、ディレクトリの中に`Vagrantfile`というファイルが作成されます。
Vagrantfileとは、Vagrantの設定ファイルです。仮想マシンについての構成情報が書かれています。
テキストエディタでVagrantfileを開いてください。
下図のように、`config.vm.network "private_network", ip: "192.168.33.10"`と書かれた行のコメント解除してください。
これにより、このアドレスを使用してホストOSからゲストOSに
アクセスが可能となります。
![vagrantfile.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211475/0daa3b66-7b67-2c7a-4948-230465ca1d1f.png)

## Vagrantの起動

ターミナルに戻り、次のコマンドを入力してください。  

```:Vagrantを起動する
$ vagrant up
```

Vagrantfileに記載された内容で、Vagrantが起動します。
初回起動時は、Boxファイルをインストールするために時間がかかることがあります。

## 仮想マシンへログイン

無事Vagrantの起動が完了したら、仮想マシンのCentOSへアクセスします。
ターミナルで次のコマンドを実行してください。

```:仮想マシンにログイン
$ vagrant ssh
```

ホストマシンのディレクトリからゲストOSのディレクトリに移動したことがわかります。
![login.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211475/e039193f-8232-ecd1-639c-b67f54180d13.png)

## Apacheのインストール

`Apache`とは...

> Apache HTTP Server（アパッチ エイチティーティーピー サーバ）は、世界中でもっとも多く使われているWebサーバソフトウェアであり、大規模な商用サイトから自宅サーバまで幅広く利用されている。
> 単にApacheとも称されている。

引用元: [Apache HTTP Server - Wikipedia](https://ja.wikipedia.org/wiki/Apache_HTTP_Server)

次のコマンドを実行して、Apacheをインストールします。  

```:Apacheのインストール
$ sudo yum install -y httpd
```

## Apacheの起動

次のコマンドを実行して、サーバーを起動します。

```:Apacheの起動
$ sudo systemctl start httpd.service
```

起動しているかどうか確認するには、次のコマンドを実行してください。

```:状態の確認
$ sudo systemctl status httpd.service
```

図のように、activeと表示されていればOKです。
![status.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211475/fffb1d97-35cb-ef42-cee5-908daf079ef8.png)

## ホストマシンから仮想マシンのWebページにアクセス

仮想マシンでサーバーを立ち上げられたので、ホストマシンからアクセスしてみましょう。  
先程Vagrantfileで編集したアドレスをブラウザに入力します。  
![address.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211475/ff9550b3-91e8-3916-ba8e-3dd28abe6152.png)


Apacheのテストページが表示されればOKです。  
![test_page.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211475/38649bb4-0262-eaa3-e120-f1f98d83f8eb.png)


無事ホストマシンから仮想マシンのWebページにアクセスすることができました！