Laravelちょっとチュートリアル的なことをやってみましたが、良い感じです。

開発環境の設定で若干試行錯誤があったので、メモしときます。

Homestead

まずはBoxの用意。(vagrantはインストール済み)

1
Mac ~/vagrant$ vagrant box add laravel/homestead

vm用のフォルダを用意して、その中でプロジェクト毎用のhomesteadを作ります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
Mac ~/vagrant$ mkdir homestead
Mac ~/vagrant$ cd homestead/
Mac ~/vagrant/homestead$ composer require laravel/homestead --dev
Mac ~/vagrant/homestead$ php vendor/bin/homestead make
 #windowsでは > vendor\bin\homestead make
Mac ~/vagrant/homestead$ vagrant up
#起動確認
Mac ~/vagrant/homestead$ vagrant ssh
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-25-generic x86_64)

 * Documentation:  https://help.ubuntu.com/
vagrant@homestead:~$ uname -a
Linux homestead 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
vagrant@homestead:~$ ls ~/homestead/
composer.json  composer.lock  Homestead.yaml  Vagrantfile  vendor

hosts編集

hostsを編集しときます。後にプロジェクトを追加する際にもレコードを追加するので、動作確認しときます。

/etc/hostsか%SYSTEMROOT%\System32\drivers\etc\hosts に

1
192.168.10.10  homestead.app

を追加。sshなりputtyなりで、接続してみます。

1
Mac ~/vagrant/homestead$ ssh vagrant@homestead.app

hostsの編集って障害時の最終手段的な感じがして後ろめたい感じします。

複数プロジェクトのホスティング

1つのHomesteadで複数のプロジェクトをホストします。

プロジェクト作成

デモ用に2つのプロジェクト(app1,app2)を作ってhomesteadに登録してみます。

1
2
3
Mac ~$ cd ~/src/            #作業はhomesteadとは別のフォルダで
Mac ~/src$ composer create-project laravel/laravel app1 --prefer-dist
Mac ~/src$ composer create-project laravel/laravel app2 --prefer-dist

各プロジェクトの .env ファイルの DB_DATABASE をそれぞれapp1,app2に書き換えときます。(←忘れがち)

Homestead.yaml

ここが今回の肝です。

Homestead.yamlのfolders,sites,databasesに各プロジェクト用の設定を追加します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
folders:
    - map: "/Users/cozy/vagrant/homestead"
      to: "/home/vagrant/homestead"

    - map: "/Users/cozy/src/app1"
      to: "/home/vagrant/projects/app1"

    - map: "/Users/cozy/src/app2"
      to: "/home/vagrant/projects/app2"

sites:
    - map: homestead.app
      to: "/home/vagrant/homestead/public"

    - map: app1.homestead.app
      to: "/home/vagrant/projects/app1/public"

    - map: app2.homestead.app
      to: "/home/vagrant/projects/app2/public"

databases:
    - homestead
    - app1
    - app2

hosts

hostsにプロジェクトごとのサイトを登録します。

1
2
192.168.10.10  app1.homestead.app
192.168.10.10  app2.homestead.app

provision

そしたらhomesteadのフォルダでprovisionして動作確認

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
Mac ~/vagrant/homestead$ vagrant reload --provision
Mac ~/vagrant/homestead$ vagrant ssh
vagrant@homestead:~$ ls ~/projects
app1  app2
vagrant@homestead:~$ mysql -uhomestead -psecret -e "show databases;"
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database           |
+--------------------+
| information_schema |
| app1               |
| app2               |
| homestead          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
vagrant@homestead:~$

ブラウザでhttp://app1.homestead.app/http://app2.homestead.app/にアクセスするとなんか表示されるはずです。

.gitignore

今んとこシンプルに

1
2
/vendor
/.vagrant

だけです。

Homestead.yamlがべったり環境依存になるので無視するかどうか悩むところですが、

まぁ共有したりしないですし、バージョン管理しといた方が無難でかと。

Eclipse

当初Sublimeで書いてたんですが、どうもSublimeのXDebugClientがうまく動いてくれません。

てことでEclipseで環境を作ってみます。

Eclipse for PHP Developersを使用します。

バージョンはMARS1でした。しばらく見ないうちにだいぶバージョンが進んだようですな。

既存のプロジェクトを追加

eclipseにlaravelプロジェクトを追加しときます。

Laravel 5 IDE Helper Generator

補完とかできるようになるヘルパーらしいです。

プロジェクトフォルダ(.envがあるところ)で

1
$ composer require barryvdh/laravel-ide-helper

config/app.phpのproviders配列に

1
Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,

を追加。

1
$ php artisan ide-helper:generate

Please configure your database connection correctly, or use the sqlite memory driver (-M). みたいなエラーがでたらMオプションをつけて実行。

1
$ php artisan ide-helper:generate -M

XDebug

eclipseの設定

メニューから

Run->Debug Configurations…->PHP Web Application->右クリック->New

PHP Server->New

Server Name:好きな名前

base url: http://app1.homestead.app (hostsに追加したアドレス)

Debugger: XDebug

Port:9000

Path Mappingは空で

File->Browseでプロジェクトのpublic/index.phpを選択

URLはAuto Generateは無しにして、パス部分はブランクにします。

これでデバッグするとブレークや変数Watchができてくれるはずです。

windowsでxdebug動かないんですけど…

Macでは上記の設定でうまくいったんですが、WindowsではHomestead側の設定をいじってやる必要がありました。

homesteadにログインして20-xdebug.iniを編集して、php5-fpmを再起動します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
vagrant@homestead:~$ sudo vim /etc/php5/cli/conf.d/20-xdebug.ini
vagrant@homestead:~$ cat /etc/php5/cli/conf.d/20-xdebug.ini
zend_extension=xdebug.so
xdebug.remote_enable = 1
;xdebug.remote_connect_back = 1  ;0に変更
xdebug.remote_connect_back = 0
xdebug.remote_port = 9000
xdebug.max_nesting_level = 512
;追加
xdebug.remote_host=10.0.2.2
xdebug.remote_log="/tmp/xdebug.log"

vagrant@homestead:~$ sudo service php5-fpm restart   #要php5-fpm再起動

どうもremote_connect_backがうまく働かないみたいです。

xdebug.remote_log=”/tmp/xdebug.log”はMacでも付けといたほうがいいかと思われますー。

後はひたすらeclipseで書けばいいと思う。