Vagrant環境構築(Mac)


開発環境を構築するツール。
とりあえず、コマンドだけでなんとかする。
自分用カキコ。

参考 : [vagrantドキュメント](http://lab.raqda.com/vagrant/index.html)

##必要ツール
+ [HomeBrew](http://brew.sh/) >> ぱっけーじ管理じゃーまねー。

```bash
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
+ [HomeBrew Cask](http://caskroom.io/) >> HomeBrewの拡張ばーじょん。
	
```bash
brew install caskroom/cask/brew-cask #brew cask インストール
brew cask install virtualbox vagrant #virtualbox, vagrant インストール
vagrant plugin install vagrant-hostsupdater #仮想環境起動時に自動でホスト名をIPアドレスに追加。
```

##vagrant基礎コマンド
```bash
vagrant up       #仮想環境立ち上げ
```

```bash
vagrant status   #現在のvagrantの状態
```

```bash
vagrant suspend  #スリープ
```

```bash
vagrant resume   #スリープ復帰
```

```bash
vagrant halt     #停止
```

```bash
vagrant reload   #再起動
```

```bash
vagrant destroy  #仮想マシン削除
```

```bash
vagrant ssh      #仮想マシン接続
```

```bash
vagrant ssh-config >> ~/.ssh/config #ssh_configを保存(出力)
```

##初期設定
+ [boxの種類](http://www.vagrantbox.es/)
+ ↑で選んで[ boxURL ]部分にURL貼ってEnter。
+ [ box名(登録名) ]は任意で名前をつける。あとで分かるように。
+ box インストールは時間掛かる。

```bash
vagrant add box [ box名(登録名) ] [ boxURL ] 
#例 vagrant box add CentOS_6.4_x86_64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20131103.box
```

##vagrantさくっと環境構築一連の手順
```bash
mkdir VagrantTest             #場所はお好きなところで、名前もお好きなもので
cd VagrantTest                #フォルダ作成
vagrant box list              #初期設定でインストールしたboxを確認
vagrant init [ box名(登録名) ] #初期化
vagrant up                    #仮想環境立ち上げ
vagrant ssh                   #仮想マシン接続
```

```bash
# vagrant ssh仮想環境にログイン後

echo "alias ll='ls -la'" >> .bashrc     #alias追加
source .bashrc                          #.bashrc再読み込み
sudo yum -y update                      #yumあっぷでーと
sudo yum -y install php                 #php,httpdインストール
httpd -v                                #httpd バージョン確認
sudo service httpd start                #web鯖起動
sudo chkconfig httpd on                 #httpd有効
sudo service iptables stop              #ファイアーウォール停止
sudo chkconfig iptables off             #iptables 鯖再起動後もoffにしておく
exit                                    #vagrant環境内から出る

# httpd 停止させたい場合
sudo service httpd stop

# httpd 現在のステータス確認
sudo service httpd status
```

```Vagrantfile
# vagrant環境内からexitするとVagrantfileがあるので編集
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network "forwarded_port", guest: 80, host: 4567
```

```bash
#Vagrantfile更新後、一度リロード
vagrant reload
```

上記のコメントアウト部分を(#)を外す
192.168.33.10 をWebブラウザで接続するとApache 2 Test Pageが表示される。

また、/etc/hostsに

```bash
#例えば
192.168.33.10   local-test-page.jp.vm
```
記載後に

```bash
#DNSのキャッシュが残っている場合はこれで対応
sudo /usr/sbin/apachectl restart

#DNSのキャッシュを消す場合
sudo killall -HUP mDNSResponder
```

ブラウザでサイトを再読み込みすると、設定した【local-test-page.jp.vm】で閲覧できるようになる。

❊ ハマったこと ❊
Mac側のApacheが動かしているとVM上のApacheを見に行かないのでMac側のApacheは停止されること。

参考: [macでhosts設定の手順メモ](http://kawatama.net/web/150)

## シンボリックリンク設定

今後ローカルでファイルを編集し、vagrant環境と連動させるためにシンボリックリンクを設定。

```bash
vagrant ssh
cd /vagrant
sudo rm -rf /var/www/html
sudo ln -fs /vagrant /var/www/html
```

テストでページでバージョン確認してみる

```bash
#Vagrantfileの階層
touch index.php
```

```index.php
<?php
	phpinfo();
?>
```
local-test-page.jp.vm でPHP情報が表示される。

##PHP設定
最低限の設定をする。

```bash
vagrant ssh
sudo cp /etc/php.ini /etc/php.ini.org
sudo vi /etc/php.ini
```

```/etc/php.ini
#エラーログの保存場所を変更
;error_log = php_errors.log
#変更後: error_log = /tmp/log/php_errors.log

#日本語の設定を有効に
;mbstring.language = Japanese
#変更後: mbstring.language = Japanese

#内部エンコーディングをUTF-8に変更
;mbstring.internal_encoding = EUC-JP
#変更後: mbstring.internal_encoding = UTF-8

#HTTPでの入力のエンコーディング
;mbstring.http_input = auto
#変更後: mbstring.http_input = auto

#エンコーディングの自動判別
;mbstring.detect_order = auto
#変更後: mbstring.detect_order = auto

#PHP情報をメッセージヘッダに記述しない
expose_php = On
#変更後: expose_php = Off

#タイムゾーンの設定
;date.timezone =
#変更後: date.timezone = Asia/Tokyo
```
```bash
# error_log 設定
sudo touch /var/log/php_errors.log
# 権限変更
sudo chown apache:apache /var/log/php_errors.log

# わざとエラーログ出して確認してみる。
# tailでログを追跡
tail -f /var/log/php_errors.log
```

```bash
sudo service httpd restart
```
最後にhttpd 再起動する

##vagrantにvimをインストール

```bash
vagrant ssh
sudo yum install ncurses ncurses-devel mercurial   (諸々インストール)
cd /usr/local/src
sudo hg clone https://vim.googlecode.com/hg/ vim
cd vim
sudo make && sudo make install
vim —version
echo "alias v='vim'" >> .bashrc
```
+ [ncurses](http://linuxmag.sourceforge.jp/Japanese/March2002/article233.shtml)
+ [ncurses-devel](http://terurou.hateblo.jp/entry/20100415/1271316306)
+ [googlecode hg](http://yuheikagaya.hatenablog.jp/entry/2013/04/23/211530)
+ [make make install](http://www.linux-beginner.com/linux_kihon79.html)

##vagrantにMySQLインストール

```bash
vagrant ssh
sudo yum -y install mysql mysql-server mysql-devel
```

```mysql:/etc/my.cnf
[mysqld]

character-set-server=utf8
default-storage-engine=InnoDB
innodb_file_per_table

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8
```
┗ sudo vi /etc/my.cnf で行わないと編集できなかった。

```bash
sudo service mysqld start   (mysql起動)
/usr/bin/mysql_secure_installation   (このまま叩くと起動。実行後、rootパスワード設定、その他全てyes)
sudo chkconfig mysqld on
mysql -u root -p
ログイン成功
```
+ [ぷちWiki - mysql_secure_installation](http://lightly.wjg.jp/wiki/858)


##vagrant + vccw
+ [github : vccw-team/vccw](https://github.com/vccw-team/vccw)
+ [vccw公式](http://vccw.cc/)
+ [vccwでWordPressのローカル開発環境を作りました](http://qiita.com/pugiemonn/items/043bf3a959cb8be69462)

```bash
# git cloneする
git clone https://github.com/vccw-team/vccw

# site.yml作成
cp provision/default.yml site.yml

# 立ち上げる
vagrant up

# site.yml変更時の反映
vagrant provision
```