Homestead で Laravel 5.1 (LTS) の環境を構築する

  • 3
    Like
  • 0
    Comment
More than 1 year has passed since last update.

参考にした。
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 を追加する。

/etc/hosts
192.168.10.10 hoge.local

設定をしたら、プロビジョニングをして VM に反映する。VM が起動していなかったら、homestead up で起動させる。
また、ホスト側にワークディレクトリがある必要もある。mkdir -p ~/works/hoge

# homestead up で VM 起動しておく
homestead provision

ちなみに、homestead xxxxxx が 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 にしたので、そこだけ変更する。

diff
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,  // 追加
    ],
];

以上。