Vagrant + Vitualboxで仮想環境を作る[Mac版]



#インストールとBoxの取得
最初に仮想マシンを入れるフォルダを作っておきます。今回はtestCentosという名前で作成しました。

```
$ mkdir testCentos //仮想マシン用のフォルダ作成
$ cd testCentos //作成したフォルダに移動
```
 

Vagrant  　[https://www.vagrantup.com/downloads](https://www.vagrantup.com/downloads)と
Virtualbox 　[https://www.virtualbox.org/](https://www.virtualbox.org/)　をそれぞれ公式サイトから
ダウンロードし、表示されるままインストールを進めます。
```vagrant -v```とターミナルで打ち込んで```Vagrant 2.2.15```等のバージョンが返ってくればインストールできています。

次にboxを取得します。boxは仮想マシンの雛形のようなものです。
boxのurlは [http://www.vagrantbox.es/](http://www.vagrantbox.es/) からコピーできます。

```
$ vagrant box add [boxにつけたい名前] [boxのurl]
```

今回はCentOS 7.0 x64を使ったので


```
$ vagrant box add centos https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
```



となります。

```
==> box: Successfully added box 'centos' (v0) for 'virtualbox'!
```

成功すると上記の表示が出ます。

```
$ vagrant box list
```

でboxが追加できてるか確認します。

最後にboxを初期化します。このときに仮想マシンの設定が記述されているVagrantfileが生成されます。

```
$ vagrant init centos //boxの名前
```

boxの取得をする前に起動させたり、初期化し忘れているとエラーが出るので注意。

#起動と接続

```
$ vagrant up 
```

でvagrantを起動させます。


```
$ vagrant status
```

で状態を確認し、runningであれば起動できています。


```
$ vagrant ssh
```

でssh接続し、（[Vagrant@localhost ~ ]と表示されてればログインは成功しています。

#ApacheとPHPをインストール

ここからwebサーバーにアクセスしてブラウザに表示させる為に、webサーバーであるapacheをインストールします。

```
$ sudo yum -y install httpd
```
を打ちます。

Vagrant@localhost~の@より前の部分がVagrantになっていますが、これだと書き込みができない第三者的なものなので、このままインストールやらフォルダ作成をしようとすると権限がない！と怒られます。
なので先頭にsudoコマンドをつけます。
または```sudo su```でrootユーザーに切り替えても同じようにインストールやら書き込みが出来るようになります。
元のユーザーに切り替えるときは```su [切り替えたいユーザー（今回だとvagrant）]```で元に戻れます。

```
$ sudo service httpd start
$ sudo systemctl enable httpd.service
```
でサーバーを起動させます。ついでに常時起動するようにしておきます。

次に、ファイアウォールの切断


```
$ sudo systemctl stop firewalld
$ sudo systemctl disable firewalld
$ sudo systemctl status firewalld
```

切断できていれば　```Active: inactive (dead)``` と表示されます。

ホストOSとゲストOSとのフォルダ共有の為のプラグインをインストール

```
$ vagrant plugin install vagrant-vbguest
$ vagrant plugin list
```

vagrant-vbguest (0.29.0, global)等が返ってくればインストールできています。


```
$ sudo yum install php
```

PHPをインストール

```
Is this ok [y/d/N]: y
```

途中これでいですか？と聞かれるのでyを選択。
```php -v```と打ってバージョン等の表示が返ってくればインストールできています。

#ブラウザからページが表示されるか確認

今のままだとアクセスできないのでターミナルからVagrantfileの記述を変更します。

```
$ vi Vagrantfile　　//Vagrantfileを編集
```

iキーを押してインサートモードに切り替えたら下記の箇所を変更。

```
# config.vm.network "private_network", ip: "192.168.33.10"    //変更前 
config.vm.network "private_network", ip: "192.168.33.10" 　　　//変更後
```

先頭の＃を消してコメントアウト状態から有効にします。


次にconfig.vm.synced_folderの設定を変えます。これはホストOSとゲストOSのフォルダを同期するものです。先頭の#を消して、config.vm.synced_folderの後ろにホストOSのパスとゲストOSのパスを指定します。
今回はVagrantfileと同じ階層にdataというフォルダをホスト側で作り、その中にファイルを入れていき、仮想環境上の/var/www/htmlと同期させています。


```Vagranfile
# config.vm.synced_folder "../data", "/vagrant_data"　　//変更前

config.vm.synced_folder  "./data", "/var/www/html"　　//変更後
```
編集が終わったらescキー→:wq→enterで上書き保存します。
保存ができたら``` vagrant reload```で再起動させます。



最後にブラウザに表示する用にdataフォルダの中にindex.phpファイルを作成します。

```php:index.php
<?php
 phpinfo();
?>
```

[192.168.33.10](http://192.168.33.10/)のアドレスにアクセスして phpinfoが表示されていれば完了です。

使う必要がなくなったらexitでログアウトし、```vagrant halt```で電源を切って終了です。

#最後に
PHPの勉強をするにあたってVagrantとVirtualboxを使って仮想環境を作ったのですが、なかなか苦戦したので忘れないうちに備忘録としてまとめようと思いました。
修正などあればコメントでご教示いただけると嬉しいです。