Laravel5.1+HomesteadでRails的な開発をPHPでやってみよう！

# PHPフレームワークの最新トレンドLaravel
PHPのフレームワークといえばCakePHPかCodeIgniterがおなじみですが、2013年位から徐々に人気が出てきているLaravelも良さそうです。
http://laravel.jp/
https://techstars.jp/blog/framework2/
良い所という点ではRuby on Rails 知っている人にはあの便利な各種機能がPHPで実装できるというところ。他のフレームワークでも出来ますが、ワリと中途半端で後付なものもある印象です。
簡単にローカル環境作れて、Migrate機能もかなり似ているので言語はPHPの方が好きという方にはいいんじゃないかと。
とはいいつつミーハーな興味だけではじめて、ドキュメントが少なくて大変だったのですが、いろいろ手探りでやってわかった部分があるので皆さんに共有しておきます。
なお、こちらもご参照下さい。わかりにくいところをこのドキュメントで補足しています。
http://readouble.com/laravel/5/1/ja/homestead.html

※2015/12/6 追記
ちなみにURLからわかるようにLaravelは現時点で最新の5.1でやっています。4系とは全く違う構造になっていて、以前のほうがCodeIgniterぽい作りになっている印象です。

## 環境について
- Macbook Air
- OS X El Captain(10.11.1)
- 設定は基本はターミナルで実施（sublime text入れておくとhomestead edit時に設定ファイルが勝手にそちらで開く）

※ 多分Vagrant+VirtualboxはWindows環境でもイケると思いますが、どなたか差異の部分を書いてくれると助かります

## Homesteadインストール手順
### vagrantとvirtualboxのインストール
仮想環境の定番組み合わせVagrantとVirtualboxが必要になります。
vagrantは公式からパッケージをゲットしてきてインストール
http://www.vagrantup.com/
virtualbox
https://www.virtualbox.org/
これらはインストールすると個人のルートディレクトリ(/Users/yourname)にvagrantというディレクトリが作成されます。

### Homestead Vagrant Boxのインストール
HomesteadというLaravel開発のためにパッケージされた環境（Box）をインストールします。
なお、Homesteadのインストールはルートディレクトリでやる必要があります。
私はvagrantディレクトリでやって結構ハマりました。

```
Local:~ $ vagrant box add laravel/homestead
Local:~ $ export PATH=~/.composer/vendor/bin:$PATH
```

### RSAキーを作成
HomesteadにSSHするため用にローカル環境側でRSAキーを作成します。

```
Local:~ $ ssh-keygen -t rsa -C "you@homestead"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/yourenv/.ssh/id_rsa):/Users/yourenv/.ssh/id_rsa_youroriginal
```
homestead環境設定で指定するファイル名にするのが大事です。

### Homestead環境を設定
homestead initコマンドで初期化を行い、
homestead editコマンドで設定ファイルを開きます。

```
Local:~ $ homestead init
Local:~ $ homestead edit
```

ちなみにhomesteadの設定ファイルでトラブルが起きるようなら思い切って削除するのが手です(homestead removeとかrm -rf ~/.homestead/とか）。
以下の様な設定が開くのでコメント書いているような内容にします。

```
ip: "192.168.15.10" # 他とバッティングしないIP
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa_youroriginal.pub # 先ほど作成したRSAキーのファイル名

keys:
    - ~/.ssh/id_rsa_youroriginal # 同上

folders:
    - map: ~/Code # ローカル側のディレクトリでhomesteadと共有されるもの（自分でmkdir必要だったかも）
      to: /home/vagrant/Code # homesteadログイン後にローカルと共有されるディレクトリ

sites: 
    - map: homestead.app # テストするときのURL（デフォルト）
      to: /home/vagrant/Code # いわゆるドキュメントルート
      hhvm: true
    - map: firstapp.local # 自分で作成したアプリをテストするURL
      to: /home/vagrant/firstapp/public #上記のドキュメントルート
      hhvm: true
```

**共有ディレクトリは何に使うのか？**
設定ファイル上にある共有ディレクトリですが、
- ファイルのやりとり（SCP、FTP的な使い方）
- Gitに上げる際のソースの置き場所
みたいな使い方をするのが吉かと思います。
ということで、ローカルマシン側にディレクトリを作成します。
```
Local:~ $ mkdir Code
```
### Homestead環境へGO！
設定できたらhomestead環境を立ち上げます。

```
Local:~ $ homestead up
```

いろいろずらずら出て立ち上がるので、そのあとSSHでログインします。

```
Local:~ $ homestead ssh
```

ちなみにhomestead環境設定修正したりした場合は一度halt（終了）させてからまたupします。

```
Local:~ $ homestead halt
```

### MySQLを使ってみる
必須ではありませんがhomesteadに入っているMySQLを接続確認。
ここに出ている通り、ユーザ名/パスワードはhomestead/secretです。

```
vagrant@homestead:~$ mysql -uhomestead -p secret
Your MySQL connection id is 4
Server version: 5.7.9 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| homestead          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

mysql> 
```


### LaravelをHomestead環境にインストール
LaravelはPHPのフレームワークなのでこちらは開発環境、本番環境ともに個別にインストールする必要があります。ということで早速homestead上でインストール。

```
vagrant@homestead:~$ composer global require "laravel/installer=~1.1"
```
ベーシックな環境に関する設定は以上です。

### Laravelプロジェクトを作成
ここからは個別にプロジェクト（要はそれぞれアプリの話）の作成に移ります。
いつものcomposerコマンドで作成します。

```
vagrant@homestead:~$ composer create-project laravel/laravel firstapp --prefer-dist
```
その後、本家マニュアルにないコツになる部分ですが、nginxの設定をいじります。

```
vagrant@homestead:~$ sudo vi /etc/nginx/sites-available/homestead.app 
```

中身を修正して保存。viの使い方は検索してくだい。

```
server {
    listen 80;
    listen 443 ssl;
    server_name homestead.app; # ここも直す必要あるかも
    root "/home/vagrant/firstapp/public"; # ここの修正が必要。作ったアプリのドキュメントルート

    index index.html index.htm index.php;
・・・
```
ここまでやったらhomesteadから抜けます。

```
vagrant@homestead:~$ exit 
```

### ローカル側からアクセスするための最後の設定
ということでhomestead側で施した設定を有効にするため一度環境を落とします。

```
Local:~ $ homestead halt
Local:~ $ sudo vi /etc/hosts 
```


/etc/hosts の中身

```
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost
192.168.15.10 homestead.app
192.168.15.10 firstapp.local
```
ここまでやったら再度upします。

```
Local:~ $ homestead up
```

### さて接続！
ブラウザから「 http://firstapp.local 」と入力して起動確認です。
![スクリーンショット 2015-12-05 2.41.49.png](https://qiita-image-store.s3.amazonaws.com/0/1593/059cd95d-0d36-5cea-b6d2-9cd37cf4dc4d.png)

いい感じ！ここからやっとRails的開発へ・・・。