[PHP]Homestead＋Laravel5.1環境を構築する

#はじめに
先日、[意気揚々と構築した環境](http://qiita.com/tosite0345/items/74982ec5414178bf6ef0)を使って開発をしようと思ったら...。
[こんなステキな環境](https://readouble.com/laravel/5.1/ja/homestead.html)がありました。すでに。泣きたい。~~リファレンス読まないで許されるのは小学生までだよね！~~
というわけでゴリゴリ。ゴリゴリ環境を再構築していきます。泣きたい。
vagrantとかVirtual Boxとかはすでに入っている前提となってます。詳しくは昔の記事や他の方の素晴らしい文献をご参照ください。

#環境(再)構築
##構成図
こんな感じです。
![004.png](https://qiita-image-store.s3.amazonaws.com/0/165355/1ece5a18-793e-5c68-d6a0-f71c03fd10c2.png)

##vagrantの再インストール
現在の環境、vagrant 1.9.3はアレらしい。一言で言うと**vagrant upできない**。謎のエラーで引っかかる。
というわけで先にアンインストールして1.9.0をインストール。

Mac/Linuxの場合は色々記述があったのですが、Windowsの場合の記述がなかったので。
つーても**プログラムのアンインストール**から削除すればいいだけ。
![ICOPY034.JPG](https://qiita-image-store.s3.amazonaws.com/0/165355/98d27438-b622-7999-76c0-a8a0ca57c329.jpeg)

[ここ](https://releases.hashicorp.com/vagrant/?_ga=1.143700156.827654408.1493107181) から最新版...ではなく**バージョン1.9.0**をダウンロード＆インストール。手順は省略。

```text:bash
$ vagrant -v
Vagrant 1.9.0
```

##Homestead Vagrant Boxのインストール
boxファイルをダウンロードしていきます。時間的に15～20分。

```bash:bash
vagrant box add laravel/homestead
```

どれをダウンロードするか聞かれたら、**3.VirtualBox**を選択。

##Laravelプロジェクトの生成
色々ありますけど先にLaravelのプロジェクト生成していきます。

```bash:bash
# ディレクトリを作成する
$ cd C:/xampp/htdocs/
$ composer create-project laravel/laravel sample "5.1.*"
```

こちらの事情により今回は明示的に5.1をインストールしました。
特別な意図がない限りバージョンは指定しなくてもいいです。多分。

##Homesteadのインストール
これには色々やり方があるみたいです。

+ リポジトリをクローンしたあとゴニョゴニョしたり...
+ composerからインストールしたり...

今回はComposerからインストールしてみました。

```bash:bash
# ディレクトリに移動する
$ cd C:/xampp/htdocs/sample/

# HomesteadをComposerからインストールする
$ composer require laravel/homestead --dev

# VagrantfileとHomestead.yamlファイルを作成する(win用)
$ vendor\\bin\\homestead make
```

``Homestead.yaml``と``Vagrantfile``が``C:\xampp\htdocs\sample``直下に生成されていたらオッケーです。~~もうXAMPP使わないんだから別のディレクトリでもいいんじゃないの...~~

##Homestead.yamlの設定
基本的には[リファレンス](https://readouble.com/laravel/5.1/ja/homestead.html)通りにやってればおっけーおっけーなんですけど。個人的に詰まったところを。

```yaml:Homestead.yaml
id:        192.168.10.10
authorize: ~/.ssh/id_rsa.pub             # ない場合次の手順で作成する
keys:
    -   ~/.ssh/id_rsa                    # こちらも次の手順で作成する
folders:
    -
        map: 'C:\xampp\htdocs\sample'    # ローカル側のプロジェクトを置いているディレクトリ
        to:  /home/vagrant/sample/       # VM側のディレクトリ
sites:
    -
        map: sample.app                  # hostname的なやつ
        to:  /home/vagrant/sample/public # ドキュメントルートを記述
```

要するに上の例で行けば、ローカル側の``C:\xampp\htdocs\sample``をシンボリックリンク的な扱いにして、VM上のルートディレクトリにしちゃおうぜってことみたいです。
そしてそれそのものをドキュメントルートに割り当てることで、``http://sample.app``もしくは``http://192.168.10.10``にアクセスしたら``C:\xampp\htdocs\sample\public``を見に行くように設定してる...っぽい。
この辺でかなり詰まりました。

##sshキー作成
``vagrant ssh``で接続時にキーがないよー (``No such file or directory - /Users/me/.ssh/id_rsa.pub (Errno::ENOENT)``) って言われたとき用に。
なんかなくてもssh接続できそうな感じなんですけど...まぁ念のためってことで。

```bash:bash(\C\xampp\htdocs\sample)
$ mkdir .ssh
$ cd .ssh
$ ssh-keygen
$ Enter file in which to save the key (/C/xampp/htdocs/sample/.ssh/id_rsa):
$ Enter passphrase (empty for no passphrase):
$ Enter same passphrase again:
```

##hostsファイル書き換え
hostnameで接続できるように**hostsファイル**を書き換えます。
Windowsの場合、場所は``C:\Windows\System32\drivers\etc\hosts``です。
hostsの一番下に``192.168.10.10 sample.app``を追記。

##vagrant up！
ここまで来たらいよいよお待ちかね、``vagrant up``を。
これで仮想マシンが立ち上がります。

##ssh接続
その後、``vagrant ssh``コマンドを実行して仮想マシンにssh接続をかまします。
ここまでの設定が正常にできていれば問題なくつなげるはず...。
接続後、念のため以下のディレクトリが開けるか確認。

```bash:bash
$ cd /home/vagrant/sample/
$ cd /home/vagrant/sample/public/
```

##サンプルページ接続
ローカル側からブラウザを立ち上げて、``http://sample.app``もしくは``http://192.168.10.10``にアクセス。
おなじみの画面が表示されていればひとまず環境構築終了。
**No input file specified.**って言われちゃった場合は、次のコマンドを試してみるといいかもしれない。

```bash:bash
$ vagrant provision
$ vagrant reload --provision
```

多分上か下か、どっちかでいいと思うんですけどね。

##リモートデバッグ
ではNetBeansからリモートデバッグできるか確認してみましょう。
正直、Xdebug入れ直さなきゃいけないんだろうなーとか面倒な設定たくさんあるんだろうなーとか思ってました。すみませんでした。
何の設定もなしにいけちゃいました。ステキすぎる。

**仮想マシンが立ち上がっている**状態でローカルディレクトリをプロジェクトとして登録。
あとは**プロジェクトURL**あたりを現在のやつ (``192.168.10.10``)に書き換えればおっけーです。
![005.png](https://qiita-image-store.s3.amazonaws.com/0/165355/b0c3d0d6-f29b-2d91-0bb1-f9f4c2c46e03.png)


#参考文献
[Laravel 5.1 Laravel Homestead](https://readouble.com/laravel/5.1/ja/homestead.html)
[Homesteadを使ってLaravel5開発環境を構築する](https://www.willstyle.co.jp/blog/179/)