Mac 上で Vagrant を使って CentOS + Apache をセットアップ

MacBookAir にて仮想環境を構築したく、またプロビジョニングにて常に必要な Apache などを入れられたらなと思いました。

Vagrant の使い方は素敵な方法がありましたので下記を参考にさせていただきました。とてもスムーズな導入ができました。本当にありがとうございます。

# 参考
[Vagrant体験入門ハンズオン手順 - 2014/04/24 DevLove関西](http://qiita.com/shin1x1/items/3288d9de7f04192b6ad8 "Vagrant体験入門ハンズオン手順 - 2014/04/24 DevLove関西")

# 事前準備
* 上記の参考より、VirtualBox と Vagrant をインストールしてください。

# Vagrant 基本セットアップ

自分の環境でのメモ踏まえて記載してまいります。
OS は CentOS6.5を採用します。まずはディレクトリを作成して、対象の box を追加します。

```
$ mkdir CentOS65
$ cd centOS65
$ vagrant box add CentOS65 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
```

ここで box の list を確認します。「CentOS65」あります。

```
$ vagrant box list
CentOS65 (virtualbox, 0)
```
次に初期設定にて Vagrantfile を生成します。

```
$ vagrant init CentOS65
$ ls
Vagrantfile
```

ここで Vagrantfile を編集します。

* config.vm.box
* config.vm.network
* config.vm.provider

network は ssh でアクセスするために設定します。provider は GUI モードを有効にしているだけなので、設定しなくても問題ありません。

```
-*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.box = "CentOS65"

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

  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
  end
end
```

設定後、仮想環境を起動します。

```
$ vagrant up
```

仮想環境にログインします。

```
$ vagrant ssh
```

ログインできればこれで基本設定は終了です。

# Shell を使って Apache をインストール

Vagrantfile を編集して shell で iptables と apache インストールを provision にて設定する

* Shell でプロビジョニング実施
* タイムゾーン設定
* ローカルな VM のため iptables を停止
* httpd を yum でインストール

```
-*- mode: ruby -*-

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.box = "CentOS65"

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

  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
  end

  config.vm.provision "shell", inline: <<-EOT
        # timezone
        cp -p /usr/share/zoneinfo/Japan /etc/localtime
        # iptables off
        /sbin/iptables -F
        /sbin/service iptables stop
        /sbin/chkconfig iptables off
        # Apache
        yum -y install httpd
        /sbin/service httpd restart
        /sbin/chkconfig httpd on
  EOT
end
```

仮想環境を再起動します。

```
$ vagrant reload
```
プロビジョニングを実施します。

```
$ vagrant provision
```
ブラウザで [http://192.168.33.10](http://192.168.33.10)にアクセスし、Apache の Welcome ページが表示されれば成功です。

```
$ open http://192.168.33.10
```
# HTML ファイルを作成し DocumentRoot を変更する
表示する HTML を作成する

```
$ echo "Hello!" >> index.html
$ ls
Vagrantfile index.html
```

httpd.conf を変更します。
DocumentRoot は synced_folder の /vargrant に変更します。

* 仮想マシンにログイン
* httpd.conf をコピー

```
[vagrant]$ cp -a /etc/httpd/conf/httpd.conf /vagrant/
[vagrant]$ exit
$ ls
Vagrantfile httpd.conf index.html

```
httpd.conf に VirtualHost を追記して DocumentRoot を /vagrant にします。

```
$ vim httpd.conf

<VirtualHost *:80>
	DocumentRoot /vagrant
</VirtualHost>
```

次に Vagrantfile を編集し、httpd.conf を /etc/httpd/conf/ へコピーします。

```
-*- mode: ruby -*-

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.box = "CentOS65"

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

  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
  end

  config.vm.provision "shell", inline: <<-EOT
        # timezone
        cp -p /usr/share/zoneinfo/Japan /etc/localtime
        # iptables off
        /sbin/iptatbles -F
        /sbin/service iptables stop
        /sbin/chkconfig iptables off
        # Apache
        yum -y install httpd
        cp -a /vagrant/httpd.conf /etc/httpd/conf/　　# --- ここを追加
        /sbin/service httpd restart
        /sbin/chkconfig httpd on
  EOT
end
```

再度プロビジョニングを実行します。

```
$ vagrant provision
```

ブラウザで [http://192.168.33.10](http://192.168.33.10)にアクセスし、index.html の内容が表示されれば成功です。

```
$ open http://192.168.33.10
```

これで環境設定ができました。自分は不慣れですのでかなり苦労しましたが、少しでも参考になれば幸いです。