Vagrant+ubuntu14.04にLaravel環境を構築する

# Vagrant + VirtualBox(ubuntu14.04)にLaravel環境を構築した時のメモ

## Host環境
Mac OS X 10.9.5
Vagrant 1.6.3
VirtualBox 4.3.12

## Guest環境
ubuntu14.04(trusty64)
php 5.5
mysql 5.6
nginx 1.4.6
laravel 4.2.0

## 仮想マシン構築

仮想マシン初期化

```bash
host $ vagrant box add ubuntu/trusty64
host $ cd /path/to/example
host $ vagrant init
```

VagrantFileを編集する

```rb:VagrantFile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  ...
  config.vm.box = "ubuntu/trusty64"
  ...
  config.vm.network "private_network", ip: "192.168.33.10"
  ...
  # Laravel4でapp/storageにアクセス権限を与えるために777にする
  config.vm.synced_folder "./", "/vagrant", {:mount_options => ['dmode=777','fmode=777']}
  ...
  # mysql5.6のインストールでメモリが必要なのでメモリを確保
  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--memory", 1024]
  end
  ...
end
```

仮想マシン起動

```bash
host $ vagrant up
```

sshするとWarningが出力される

```bash
_____________________________________________________________________
WARNING! Your environment specifies an invalid locale.
 This can affect your user experience significantly, including the
 ability to manage packages. You may install the locales by running:

   sudo apt-get install language-pack-ja
     or
   sudo locale-gen ja_JP.UTF-8

To see all available language packs, run:
   apt-cache search "^language-pack-[a-z][a-z]$"
To disable this message for all users, run:
   sudo touch /var/lib/cloud/instance/locale-check.skip
_____________________________________________________________________
```

言われるままにインストールする

```bash
guest $ sudo apt-get install language-pack-ja
```

## php5.5のインストール

php5.5のリポジトリを取得

* Nginxでphpを動かすためにphp5-fpm
* Mysqlと接続するのでphp5-mysql
* Laravelで必要なphp5-mcrypt

をそれぞれインストール

```bash
guest $ sudo add-apt-repository ppa:ondrej/php5
guest $ sudo apt-get update
guest $ sudo apt-get install php5-fpm php5-mysql php5-mcrypt
```

バージョン確認

```bash
guest $ php -v
PHP 5.5.17-1+deb.sury.org~trusty+1 (cli) (built: Sep 19 2014 11:27:38) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
```

## mysql5.6のインストール

```bash
guest $ sudo apt-get install mysql-server-5.6
```

途中パスワードを聞かれるので適当に。
ここではパスワードを空で進める。

バージョン確認

```bash
guest $ mysql -uroot -p
Enter password: #空
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 44
Server version: 5.6.19-0ubuntu0.14.04.1 (Ubuntu)
...
```

## nginxのインストール

```bash
guest $ sudo apt-get install nginx
```

バージョン確認

```bash
guest $ nginx -v
nginx version: nginx/1.4.6 (Ubuntu)
```

## Laravelのインストール

Laravel4をComposerでインストールする

Composerのインストール

```bash
guest $ curl -sS https://getcomposer.org/installer | php
guest $ sudo mv composer.phar /usr/local/bin/composer
```

Laravelをインストール

```bash
guest $ cd /vagrant
guest $ composer create-project laravel/laravel --prefer-dist
```

## nginxにドキュメントルートを設定

[Laravel4をNginxで動かす](http://kore1server.com/279/)より引用

```bash
guest $ sudo vim /etc/nginx/sites-enabled/default
```

```vim:default
server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /vagrant/laravel/public;

        # Make site accessible from http://localhost/
        server_name localhost;

        # 末尾のスラッシュの削除
        rewrite ^(.+)/$ $1;

        location / {
                try_files $uri /index.php?$query_string;
        }

        location ~ ^/index.php$ {
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_split_path_info ^(.+\.php)(.+)$;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
        }

        location ~ /\.ht {
                deny all;
        }
}
```

nginxを再起動

```bash
guest $ sudo service nginx restart
```

## 画面確認をする

以下のURLにアクセス
http://192.168.33.10/

Done!!
簡単ですね。