VagrantとVirtualBoxでローカル開発環境を構築しよう。

誰でも気軽にWebサイトやWebアプリケーションを開発できるようになり、インターネット上に自分のサービスを公開してみたいという方も増えてきているのではないでしょうか。
今回は**Vagrant**と**VirtualBox**というソフトウェアを使って、サービスを開発するための環境の作り方について説明します。


###開発環境
Windows10
Virtualbox 5.2.22
vagrant 2.2.2
CentOS

#そもそもローカル開発環境とは
開発したWebアプリケーション等をインターネット上で公開するためにはサーバーが必要となります。サーバーにはレンタルサーバー、VPS、クラウドサーバーなどがありますが、それらのサーバーで使われているOSの大部分は**Linux**です。
しかし、皆さんが使用しているパソコンのOSはおそらく**Windows**か**MacOS**だと思います。そのため、たとえWindowsやMacOS上で正常にアプリケーションが動作したとしてもLinux上でも正しく動作するとは限りません。
そこで、**公開するサーバーの環境に合わせた環境**を自分のパソコンに用意する必要が出てきます。その環境のことを**ローカル開発環境**といいます。

#VirtualBox
ローカル開発環境を構築するためにまず必要となるのが、**仮想化ソフトウェア**です。今回使用する**VirtualBox**というソフトウェアも仮想化ソフトウェアの１種であり、これを使用することで１つのOS内で複数のOSを動かすことのできる**仮想マシン**を作成、管理することができます。つまり、WindowsやMacOSを搭載したパソコン上でLinuxを動かす、なんてことができます。
では早速インストールしていきましょう。

**1.下のURL先のWindows用のリンクからインストーラーをダウンロードしてください。**

>https://www.virtualbox.org/wiki/Download_Old_Builds_5_2

>######※Vagrantが対応していないバージョンをインストールすると後にエラーが発生するため、VirtualBox 5.2.22を選択してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581663/7b406807-b0ec-62fc-53e9-b1fe50e0a5e4.png)


**2.インストーラーを起動したらセットアップを進めていき、VirtualBoxをインストールする。(チェックボックスは一番下だけで大丈夫です)**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581663/06aee38e-f939-6aea-2dce-eb37d85e18b6.png)

#Vagrant
VirtualBoxだけでも仮想マシン上での開発は可能ですが、その操作を簡単に行うために使うのが**Vagrant(ベイグラント)**というソフトウェアです。Vagrantを使うことでVirtualBoxでの仮想マシンの作成や起動、アクセス等を**簡単なコマンド**で行えるようになります。
では、こちらもインストールしてみましょう。

**１.下のリンク先のWindows用のリンクからインストーラーをダウンロードする。**
>https://www.vagrantup.com/downloads.html

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581663/d8952bc6-f232-1239-518d-482ac1dd793c.png)

**2.インストーラーを起動したらセットアップを進めていき、Vagrantをインストールする。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581663/b79f59bc-f931-59c9-6898-36dbb1d60a19.png)

#仮想マシンを作成する
VirtualBoxとVagrantのインストールが完了したら実際に仮想マシンを作っていきましょう。仮想マシンを作成するにあたって必要になるものが**コマンドプロンプト**です。※PowerShellでも可
コマンドプロンプトではコマンドと呼ばれる命令文を使って、フォルダを作成したり、移動したりと色んな操作を行うことができます。Windowsシステムツールの中にあるので、さっそく起動してみましょう。([Windows]+[R]でcmdと検索し、実行するのが早いかもしれません)


コマンドプロンプトが起動できたらVagrantが正常にインストールされているかを確認するために以下のコマンドを入力し、Enterを押してください。

```terminal:cmd
vagrant -v
```
画像のようにバージョンが表示されていれば問題ありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581663/ef0e8b6b-3e88-f058-3b4f-9b5e4bd6e839.png)

##フォルダの作成
まず、操作しやすいように仮想マシンをまとめるVagrant専用のフォルダを**mkdirコマンド**を使って作成します。

```terminal:cmd
mkdir Vagrant
```

次にVagrantフォルダのなかに仮想マシン用のフォルダも作成します。**cdコマンド**を使ってVagrantフォルダに移動し、先ほどと同じように**mkdirコマンド**で仮想マシン用のフォルダを作成し、そのフォルダまで移動します。

```terminal:cmd
cd Vagrand
mkdir CentOS
cd CentOS
```

##Vagrantfileの編集
ここまで出来たら、以下のコマンドで仮想マシンを設定するための**Vagrantfile**を作成します。

```terminal:cmd
vagrant init bento/centos-6.8
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581663/b7607f55-7917-7d02-527d-754b38ef97a8.png)

Vagrantfileが無事に作成できたら、エディターを使ってその中身を編集し、**IPアドレスの設定を有効**にしていきます。※私はVScodeを使っていますが編集できるならエディターはVimでもなんでもいいです。
Vagrantfileを開くと中身は以下のようになっていると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581663/3c81524d-67d9-3df2-da7b-a320e0343318.png)

35行目の#を消し、コメントアウトを解除し、保存してください。(35行目ではないこともあります)

```text:Vagrantfile
config.vm.network "private_network", ip: "192.168.33.10"
```

#仮想マシンの起動
IPアドレスを有効にできたら、以下のコマンドで仮想マシンを起動します。

```terminal:cmd
vagrant up
```

途中いろいろ聞かれると思いますが、OKを選択して続行していけば大丈夫です。


無事に起動が終わったら、確認のために以下のコマンドを入力します。

```terminal:cmd
vagrant status
```

runningと表示されていればきちんと起動できています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581663/c13b2b48-d9f9-b035-173c-3e9f4f9df308.png)

#仮想マシンにアクセス
仮想マシンが立ち上がったら仮想マシンにアクセスするために**PuTTY(パティ)**というソフトウェアをインストールしましょう。**SSHログイン**を行うためにPuTTYなどの**SSHクライアント**を使ってログインします。(他にはTera Termなどがあります)

**１.下のリンク先のWindows用のリンクからインストーラーをダウンロードする。**

>https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581663/ae4d0fe9-d71a-3a77-2190-590203159597.png)

**2.インストーラーを起動したらセットアップを進めていき、puttyをインストールする。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581663/789771d2-7547-25bb-0a74-42d8c9b2eb1d.png)

インストールできたらPuTTYを起動します。VagrantfileでIPアドレスを有効にしたのでそのときの**IPアドレス(192.168.33.10)**を入力し、connection typeをSSHにしてopenをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/581663/a7f15fda-bdb1-45ce-be6b-03e1e7289de3.png)

ユーザー名とパスワードを聞かれるのでともに**vagrant**と入力する。

これで通常のサーバーと同じように操作ができるようになり、ローカル開発環境を使うことができるようになります。
実際にどう開発に使っていくのかについてはまた別記事でお話しします。