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
今んとこシンプルに
だけです。
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で書けばいいと思う。