参考にした。
https://laravel.com/docs/5.1/homestead
事前に用意するもの
- Vagrant
- Virtualbox
- Composer
環境は MacOSX 10.11.4
box をインストール
下記のコマンドで vagrant box をインストールする。
vagrant box add laravel/homestead
失敗する場合は下記を実行するといいらしい。
vagrant box add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead
もし昔に使ったことがあって、バージョンが古ければ下記で box のアップデートができる。
Homestead の VM を起動するたびに box が最新かどうかを表示してくれる。現時点では 0.4.4。
homestead update
ちなみに古い Homestead だと下記のコマンド。
homestead box update
Homestead のコードをインストール
composer 経由でインストールする。
composer global require "laravel/homestead=~2.0"
上記で homestead コマンドがインストールされるが、 which homestead
などでパスが通ってないようであれば、下記を .bashrc
などに書いてパスを通す。
export PATH=~/.composer/vendor/bin:$PATH
homestead をインストールしたら、初期スクリプトを実行する。
homestead init
これを実行すると、 ~/.homestead
ディレクトリが生成される。
そのディレクトリ以下に、Homestead.yaml という Homestead の設定ファイルがあり、それを編集することで環境の追加などができる。
環境の設定
Homestead の設定は ~/.homestead/Homestead.yaml
を編集することで行う。
編集は vim などのエディタを使ってもいいし、homestead edit
というデフォルトのエディタを呼び出すコマンドも用意されている。
vim ~/.homestead/Homestead.yaml
or
homestead edit
そこで、新しく作るプロジェクトのディレクトリのマッピングを行う。例えば hoge というプロジェクトを Laravel で作成する場合は、下記のように Homestead.yaml に追記する。
folders:
(中略)
- map: ~/works/hoge
to: /home/vagrant/works/hoge
sites:
(中略)
- map: hoge.local
to: /home/vagrant/works/hoge/public
hhvm: true
databases:
(中略)
- hoge
構成としては、自分のワークディレクトリの hoge を、VM 内の vagrant ユーザーのホームディレクトリと共有させるようにしている。
そして、その public フォルダに WEB サーバーのルートディレクトリを指定する。hhvm はお好みで。
ドメインを hoge.local
としたので、それを hosts に追記する。あと、DB に hoge を追加する。
192.168.10.10 hoge.local
設定をしたら、プロビジョニングをして VM に反映する。VM が起動していなかったら、homestead up
で起動させる。
また、ホスト側にワークディレクトリがある必要もある。mkdir -p ~/works/hoge
# homestead up で VM 起動しておく
homestead provision
ちなみに、homestead xxx
の xxx
が vagrant コマンドに存在する場合はそれを呼び出すようだ。
なので、Homestead の起動 / 終了 / ログイン なんかはそれぞれ下記のようなコマンドを実行すればよい。
homestead up # 起動
homestead halt # 終了
homestead ssh # ssh ログイン
homestead provision # プロビジョニング
homestead # ヘルプを表示
もう一歩進んだ tips としては、Homestead に ssh ログインしなくても、run コマンドで処理ができる。
具体的に言うと、composer の update とか、マイグレーションを下記のように実行可能。
homestead run "cd /path/to/project && composer update"
homestead run "cd /path/to/project && php artisan migrate"
Laravel をインストールする
Laravel も composer 経由でインストールするが、環境ごとの差異がでると困るので、VM の中でプロジェクトは生成する。下記コマンドで VM に SSH ログインできる。
homestead ssh
上記で作ったディレクトリに移動して、プロジェクト生成コマンドを実行する。
LTS (Long Term Support) である必要がない場合は、5.1 は指定しなくてOK。
cd works/hoge
composer create-project laravel/laravel . 5.1 --prefer-dist
composer の実行が終わったら、.env
ファイルが生成されているので、ここで扱う Laravel の環境を記述しておく。今回は DB を hoge にしたので、そこだけ変更する。
APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString
DB_HOST=localhost
- DB_DATABASE=homestead # <- ここを修正!!
+ DB_DATABASE=hoge
DB_USERNAME=homestead
DB_PASSWORD=secret
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
接続確認
DB 接続の確認をする場合は、デフォルトで users を作成するマイグレーションが入っているので、それをためしに実行するとよいだろう。気に入らなければロールバックを行えば良い。
php artisan migrate
php artisan migrate:rollback
サイト確認はホスト環境のブラウザから下記にアクセスする。自分で別のホスト名をつけた場合はそれでアクセスする。
http://hoge.local
おまけ
Laravel5 からは、Html / Form ファサードが同梱されなくなったので、必要であれば下記で追加しておく。
下記を参考にした。
https://laravel10.wordpress.com/2015/03/08/%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AElaravel-5-16-form%E3%81%AE%E4%BD%9C%E6%88%90/
VM にログインして、プロジェクトルートで下記のコマンドを実行する。
composer require laravelcollective/html
config/app.php を編集して、ファサードが使えるようにする。
<?php
// config/app.php
return [
// サービス・プロバイダーの登録
'providers' => [
// ...
Collective\Html\HtmlServiceProvider::class, // 追加
],
// ファサードの登録
'aliases' => [
// ...
'Form' => Collective\Html\FormFacade::class, // 追加
'Html' => Collective\Html\HtmlFacade::class, // 追加
],
];
以上。