VirtualBoxとVagrantコマンドを使った仮想環境の構築方法

最近、DAWNというプログラミング学習サイトでPHPを学習しています。その中で、Laravelを学習するための準備として、VirtualBoxやVagrant（ベイグラント）を用いて仮想環境を構築する方法を学んだので、アウトプットしていきたいと思います。
（Macの使用を前提で書いています。Windowsをご使用の方はご注意ください）

# VirtualBoxとは？
まずは、VirtualBoxについて説明していきます。

VirtualBoxとは、複数のOS環境を管理する仮想マシンソフトの一つです。基本無料で利用できます。

以下のリンクからダウンロードページに移動できます。
Macを使っている方は「OS X hosts」から、
Windowsを使っている方は「Windows hosts」からダウンロードしてください。
OKやNextを押していけばインストールできます。

<a href="https://www.virtualbox.org/wiki/Downloads">こちらからVirtualBoxをダウンロードできます</a>

VirtualBoxのインストールが終わったら、VirtualBoxを立ち上げて次のようにネットワーク設定を行います。

```none:ネットワーク設定手順
①まずVirtualBoxを立ち上げる
②環境設定 → ネットワーク → 緑のプラスボタン（作成ボタン） → 「NATNetwork」にチェックを入れてOKボタンクリック
③「ツール」にあるハンバーガーメニューをクリックし、その中の「ネットワーク」をクリック
④作成ボタンをクリックすると、「VirtualBox Host Only Ethemet Adapter」という名前で「ホストオンリーネットワーク」の設定が1個追加される
```

これで、NATとホストオンリーネットワークに関するネットワーク設定を行うことができました。
聞きなれない言葉が出てきましたね。

NATとは？
...仮想OSに、インターネットとつなげられるようにするため、必要となってくるネットワーク設定。このNATを設定することで、仮想OS内で自身が用意したWebサイトを、実際にGoogleChromeなどのブラウザを通して確認できるようになる。

ホストオンリーネットワーク
... 仮想OS側を遠隔操作できるようにするもの。自分たちが使っているMacやWindowsの方を「ホストOS」と呼ぶ。逆に仮想OSの方は「ゲストOS」と呼ぶ。

ざっくりとした説明ですみませんが、
「自分が作ったものをブラウザで確認する環境を用意するために、NATを設定した」
「仮想OS側を遠隔操作できるようにするために、ホストオンリーネットワークを設定した」
という認識でいいと思います。

# Vagrantとは？
Vagrantは、簡単にいうと「仮想環境の場所の用意からOSの起動、SSH接続までをコマンドライン1つで行ってくれるコマンドソフト」のことです。
通常、VirtualBoxを開いた環境の場合はPC上にいくつものソフトを起動し、画面を表示しておかなければならないので、管理が非常に大変になります。しかし、Vagrantを使えば、VirtualBoxを含めた他のソフトを起動せずに、コマンド操作だけで仮想環境を作ることができます。非常に便利！！
それでは、Vagrantの用意から実際に仮想環境を整えるところまで書いていきます。

<a href="https://www.vagrantup.com/downloads.html">ここからVagrantをダウンロードできます</a>

Macの方は「macOS」から、
Windowsの方は「Windowsの64bit」からダウンロードしてください。

こちらもOKやNextをクリックしていけばダウンロードできます。

## Vagrantコマンドを使った仮想環境の構築
### Vagrantで仮想環境を操作する場所の設置

まずは、Vagrantを使えるようにする特別なディレクトリを作る必要があります。

```none:ターミナル
cd  /Users/自分がPCを起動するときのアカウント名/
mkdir Vagrant_practice && cd Vagrant_practice
```


mkdirコマンドでディレクトリを作ることができます。今回は「Vagrant_practice」という名前のディレクトリを作成しました（名前はなんでもOKです）。
次に、cdコマンドで「Vagrant_practiceディレクトリ」まで移動したら、ここからvagrantコマンドを使用していきます。
以下のコマンドを実行して、利用する仮想OSの種類を何にするかを決めていきます。
（今回はLinuxOSの一つであるubuntuにしました）

```none:ターミナル
vagrant box add ubuntu/trusty64
```

Vangratにはboxというエリアがあり、この中にVagrantで管理するための仮想OSをあらかじめ入れておくことができます。
先程のコマンドの処理が終わったら、以下のコマンドを入力しましょう。boxの中を確認することができます。

```none:ターミナル
vagrant box list
（以下のような出力結果が出てきたら、「vagrant box add ubuntu/trusty64」が成功しています）

ubuntu/trusty64
```

boxの中身は確認できましたか？
ここまできたら、同じディレクトリ内で、Vagrantを使ってOSを起動できるようにVagrantの初期設定を行います。
以下のコマンドでVagrantの初期設定を行えます。

```none:ターミナル
vagrant init ubuntu/trusty64
```

これで、Vagrantで仮想環境を操作する場所の設置が完了しました。

### 仮想環境を自動で作成
ここから、仮想環境を自動で作成していきます。
以下のコマンドで、OSの作成と起動を行うことができます。（1回目の場合、OSの作成から行うため、非常に時間がかかる可能性があります）

```none:ターミナル
vagrant up
（このコマンドにより、仮想OSを起動することができる）
```

途中で「fatal」や「error」といった文字が見当たらなければ、ubuntuの仮想OSのPCが構築されることになります。

仮想OSが起動できているかは、VirtualBoxを立ち上げれば確認できます。
ubuntuのOSが作られて、ステータスが「実行中」になっていれば成功です。

また、2回目以降にOSの起動を行いたい場合も、この「vagrant up」を実行すればOKです。次からは1回目よりも短時間で済むと思います。

反対に「仮想OSを停止（シャットダウン）したい」という時には、以下のコマンドを実行します。

```none:ターミナル
vagrant halt
（このコマンドにより、仮想OSを停止することができる）
```

仮想OSが停止できたかも、VirtualBoxを立ち上げれば確認できます。
ubuntuのステータスが「電源オフ」になっていれば成功です。

また、「vagrant status」というコマンドを使用することで、仮想OSが起動しているかどうかを確認することもできます。このコマンドで確認すれば、いちいちVirtualBoxを立ち上げて確認する必要はありません。

```none:ターミナル
vagrant status
（上記のコマンドで、仮想OSが起動しているかを確認することができます。以下は、停止している場合の出力結果）

Current machine status:
default               poweroff (virtualbox)
```

以上で、仮想環境の構築は完了です。

いかがでしたか？
勉強したばかりであるため、誤っている箇所もあるかもしれません。その時はご指摘いただけますと幸いです。

ここまで読んでいただき、ありがとうございました。