MacでVirtualBox+CentOS6の開発環境を構築する(Vagrant利用)


概要
====

MacでVagrantを利用して、VirtualBox+CentOS6の開発環境を構築する。

環境
====

OSX 10.11.4
VirtualBox 5.0.18
CentOS 6.7

VirtualBoxをインストール
======================

https://www.virtualbox.org

Vagrantをインストール
===================

https://www.vagrantup.com

CentOSを使えるようにする
=====================

参考 
https://www.vagrantup.com/docs/getting-started/


まずは、以下のページでCentOS 6.7のboxを探す。（boxとはVagrantで利用できるOSイメージ）
https://atlas.hashicorp.com/boxes/search

```
bento/centos-6.7
```
が見つかった。

Vagrantにboxを追加する。（virtualboxを選択）

```mac
$ vagrant box add bento/centos-6.7


1) parallels
2) virtualbox
3) vmware_desktop

Enter your choice: 2
```

boxを追加できたかどうか確認する。

```mac
$ vagrant box list
bento/centos-6.7 (virtualbox, 2.2.6)
```

作業ディレクトリを任意の場所に作成する。

```mac
$ mkdir -p ~/vagrant/centos6
$ cd ~/vagrant/centos6
```

初期化コマンドを実行する。

```mac
$ vagrant init bento/centos-6.7
```

`Vagrantfile`という設定ファイルが作成される。

VMを起動する。

```mac
$ vagrant up
```

sshで接続する。

```mac
$ vagrant ssh
```

VMから抜けるときは`$ exit`でOK。

VMを終了する。

```mac
$ vagrant halt
```

おまけ
=====

boxについて
----------

boxはこちらからでも探せる。
http://www.vagrantbox.es

vagrant up時にエラーが発生
-----------

vagrant upの際、

```
Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant

The error output from the last command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device
```

のようなエラーが発生する場合、プラグインをいれると解決する。
https://github.com/dotless-de/vagrant-vbguest

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


MacのブラウザからCentOS上のWebサーバにアクセス
----------------------------------------

`Vagrantfile`を修正する。（コメントアウトをはずす）

```mac
config.vm.network "private_network", ip: "192.168.33.10"
```

VMを再起動する。

```mac
$ vagrant reload
```

sshで接続する。

```mac
$ vagrant ssh
```

こちらを参考に、PHP、httpdでやってみる。
http://qiita.com/okmn/items/cbd1f97f02c6d9943111#おまけ

上記ページ内の手順を実施後、Macのブラウザでアクセスできるかを確認する。
http://192.168.33.10/info.php


コマンド
-------

```
$vagrant -h
Usage: vagrant [options] <command> [<args>]

    -v, --version                    Print the version and exit.
    -h, --help                       Print this help.

Common commands:
     box             manages boxes: installation, removal, etc.
     connect         connect to a remotely shared Vagrant environment
     destroy         stops and deletes all traces of the vagrant machine
     global-status   outputs status Vagrant environments for this user
     halt            stops the vagrant machine
     help            shows the help for a subcommand
     init            initializes a new Vagrant environment by creating a Vagrantfile
     login           log in to HashiCorp's Atlas
     package         packages a running vagrant environment into a box
     plugin          manages plugins: install, uninstall, update, etc.
     port            displays information about guest port mappings
     powershell      connects to machine via powershell remoting
     provision       provisions the vagrant machine
     push            deploys code in this environment to a configured destination
     rdp             connects to machine via RDP
     reload          restarts vagrant machine, loads new Vagrantfile configuration
     resume          resume a suspended vagrant machine
     share           share your Vagrant environment with anyone in the world
     snapshot        manages snapshots: saving, restoring, etc.
     ssh             connects to machine via SSH
     ssh-config      outputs OpenSSH valid configuration to connect to the machine
     status          outputs status of the vagrant machine
     suspend         suspends the machine
     up              starts and provisions the vagrant environment
     version         prints current and latest Vagrant version

For help on any individual command run `vagrant COMMAND -h`

Additional subcommands are available, but are either more advanced
or not commonly used. To see all subcommands, run the command
`vagrant list-commands`.
```
よく使いそうなコマンドは、
init（初期化）
box（box操作）
up（起動）、halt（終了）、reload（再起動）、status（VMのステータスを確認）
destroy（VMの削除）
ssh（sshで接続）
あたり。

各コマンドのさらに詳細な説明は、

```
$ vagrant コマンド -h
```

で確認できる。