MacにVagrantでCentOS+FuelPHPの環境を作成する（その1. Vagrantfile(shell)で頑張る）

## 実施環境

* OS: OS X Yosemite (10.10.5)
* Vagrant: 1.7.4
* Virtualbox: 5.0.8 r103449

## 目標
Vagrantを利用して下記環境を構築する

* OS: CentOS6.6
* Server: Apache
* PHP: PHP5.6
* FuelPHP: FuelPHP1.7.3

## 今回のゴール
`vagrant up`だけでFuelPHPのWelcomeが表示できるようにする

## 今回の成果物
こちらに置いてあります
[negibouze/vagrant-fuelphp_part1](https://github.com/negibouze/vagrant-fuelphp_part1)

## 1. 各ツールの準備（インストール済みの場合不要）
#### step1. Homebrewをインストールする
ターミナルで下記を実行

```
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

#### step2. Homebrew Caskをインストールする

```
$ brew install caskroom/cask/brew-cask
```

#### step3. VirtualBoxをインストールする

```
$ brew cask install virtualbox
```

#### step4. Vagrantをインストールする

```
$ brew cask install vagrant
```

#### step5. Vagrant-vbguest pluginをインストールする

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

## 2. Vagrantfileの作成
#### step1. 対象ディレクトリ配下で下記を実行

```
$ vagrant init
```

## 3. Vagrantfileの編集
#### step1. vm.boxを設定
今回はpuppetlabsのCentOS 6.6(64-bit)を使用
！Puppetは使わないので「nocm」

```
config.vm.box = "puppetlabs/centos-6.6-64-nocm"
# boxがない場合、インストール
config.vm.box_url = "https://vagrantcloud.com/puppetlabs/boxes/centos-6.6-64-nocm/versions/1.0.2/providers/virtualbox.box"
```

#### step2. $scriptを追記

```
$script = <<SCRIPT
  # 詳細は後で追加
SCRIPT
```

#### step3. provisionを追記

```
config.vm.provision "shell", inline: $script
```

ここまででこんな感じ

```
$script = <<SCRIPT
 # 詳細は後で追加
SCRIPT

Vagrant.configure(2) do |config|

  config.vm.box = "puppetlabs/centos-6.6-64-nocm"
  config.vm.box_url = "https://vagrantcloud.com/puppetlabs/boxes/centos-6.6-64-nocm/versions/1.0.2/providers/virtualbox.box"

  config.vm.define :"web1" do |host|
    host.vm.hostname = "web1"
    host.vm.network :private_network, ip: "192.168.100.11", netmask: "255.255.255.0"
  end

  config.vm.provision "shell", inline: $script
end
```

## 4. $scriptに処理を追加
#### step1. Timezoneを変更

```
# timezone
cp -p /usr/share/zoneinfo/Japan /etc/localtime
```

#### step2. iptablesを無効にする

```
# remove all rules
/sbin/iptables -F
# iptables stop
/sbin/service iptables stop
# iptables off
/sbin/chkconfig iptables off
```

#### step3. httpd(apache)をインストールする
httpd.confは事前に用意しておく
！DocumentRoot とか編集しています

```
### apache install ###
# install httpd
yum install -y httpd
# cp local httpd.conf
cp -a /vagrant/httpd.conf /etc/httpd/conf/
# httpd restart
/sbin/service httpd restart
# enable launch settings
/sbin/chkconfig httpd on
```

#### step4. Gitをインストールする（やらなくても良い） 
！FuelPHPをgitで持ってくるのをやめたためこの手順は不要でした（ここは時間がかかるのでやらない方が良いです）
* 多少古くても良い場合

```
yum install -y git
```

* 最新版を入れる場合

```
### git install ###
# install dependency packages (temporariy install old version git)
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker git
cd /usr/local/src/
# download latest version
git clone https://git.kernel.org/pub/scm/git/git.git
# remove old version
sudo yum remove -y git
cd git
# make
make prefix=/usr/local all
make prefix=/usr/local install
```

#### step5. PHP5.6をインストールする

```
### php5.6 install ###
# install epel & remi
sudo rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# install php & packages (& dependencies)
sudo yum install -y --enablerepo=remi --enablerepo=remi-php56 php php-common php-cli
```

#### step6. php.iniをコピーする
php.iniは事前に用意しておく
！date.timezone とか編集しています

```
# cp local php.ini
cp -a /vagrant/php.ini /etc/
```

#### step7. curlを更新する（やらなくても良い）

```
### ref: update curl ###
sudo rpm -Uvh http://www.city-fan.org/ftp/contrib/yum-repo/city-fan.org-release-1-13.rhel6.noarch.rpm
sudo yum install -y libcurl
```

#### step8. FuelPHPをインストールする  
* gitプロトコルが使える場合はこちらでいけるかも

```
$ oil create <project_name>
```

* gitプロトコルが使えない場合  
！GitHubからcloneするとcomposer実行時にtokenが必要になる場合があるため、今回はzipをdownloadする

```
### FuelPHP install ###
# oil install
curl get.fuelphp.com/oil | sh

# create target directory
sudo mkdir -p /srv/fuelphp

# fuelphp1.7.3 download
cd /usr/local/src
sudo wget -O fuelphp-1.7.3.zip http://fuelphp.com/files/download/34
sudo unzip fuelphp-1.7.3.zip -d /srv/fuelphp
cd /srv/mercury
sudo mv fuelphp-1.7.3 fuelphp
cd fuelphp
sudo php oil refine install
```

#### step9. httpd(apache)を再起動する

```
# httpd restart
sudo service httpd restart
```

## 5. 動作確認
#### step1. 仮想マシンを作成する

```
$ vagrant up
```

#### step2. 動作確認
ブラウザで「192.168.100.11」を開いて下記画面が表示されればOK  ![welcome.png](https://qiita-image-store.s3.amazonaws.com/0/37319/0a1ad785-6336-cda6-2d0e-b4665cb423ab.png)