Laravelは、フロントエンドのビルドツールLaravel ElixrがGulpタスクであるためPHPの他にNode環境が必要になったりと、ひととおり開発環境を揃えるのが若干面倒だったりします。
そこで、Laravelには、ローカル開発用のVagrant box Laravel Homestead が用意されています。
この記事では、Homesteadを利用したLaravel5の開発環境の構築手順を試してみたのでまとめてみました。
前提条件としてVirtualboxとVagrantはインストール済みとして解説します。
boxはVirtualboxとVMWare プロバイダ用がありますが、ここではVirtualboxを利用します。
HomesteadのVagrant boxを追加
vagrant box
コマンドでhomestead boxを追加します。
$ vagrant box add laravel/homestead
==> box: Loading metadata for box 'laravel/homestead'
box: URL: https://atlas.hashicorp.com/laravel/homestead
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.
1) virtualbox
2) vmware_desktop
Enter your choice: 1
==> box: Adding box 'laravel/homestead' (v0.4.1) for provider: virtualbox
box: Downloading: https://atlas.hashicorp.com/laravel/boxes/homestead/versions/0.4.1/providers/virtualbox.box
==> box: Successfully added box 'laravel/homestead' (v0.4.1) for 'virtualbox'!
virtualboxを選択します。
Homesteadのインストール
ユーザのホームディレクトリにHomesteadをインストールします。
Homesteadには、Vagrantfileと初期設定のためのシェルのみが含まれます。
以下のコマンドを実行してHomesteadをセットアップします。
$ ~
$ git clone https://github.com/laravel/homestead.git Homestead
$ cd Homestead/
$ bash init.sh
Homestead initialized!
クローンして、init.shを実行すると設定を含む~/.homesteadディレクトリが作成されます。
Homesteadの設定
設定は、init.shを実行して生成された~/.homestead/Homestead.yaml
を編集します。
Laravelプロジェクトのディレクトリを指定するfolders.map
のみを設定、他はデフォルトのままにしておきます。
以下の設定で、Vagrant upするとVagrantの/home/vagrant/Code/Laravel
ディレクトリから~/workspace/laravel
にあるLaravelのプロジェクトが参照されます。
# ~/.homestead/Homestead.yaml
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: ~/workspace/laravel
to: /home/vagrant/Code/Laravel
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
databases:
- homestead
variables:
- key: APP_ENV
value: local
# blackfire:
# - id: foo
# token: bar
# client-id: foo
# client-token: bar
# ports:
# - send: 93000
# to: 9300
Vagrantアクセス用 SSHキーの生成
Vagrantで起動したVMへはSSHログインしますが、ログイン用のSSHキーが無い場合は生成する必要があります。
Homestead.yamlのauthorize
とkeys
には、ssh-keygen
で生成されるキーのデフォルトのパスが指定されているので、設定のままプロンプトは全てそのままEnterします。
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/hrendoh/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/hrendoh/.ssh/id_rsa.
Your public key has been saved in /Users/hrendoh/.ssh/id_rsa.pub.
The key fingerprint is:
ec:90:d1:80:6f:8a:7b:aa:e4:87:66:90:90:61:72:d1 hrendoh@localhost.local
The key's randomart image is:
+--[ RSA 2048]----+
| .o .. |
|o.. E o |
|o+ .. . |
|o o+ |
|.. . oo S |
|o . . o |
|.... . |
|o+... |
|+ooo |
+-----------------+
ホストを追加
/etc/hosts
に、ip
に指定されているIPアドレスをsites.map
に指定されているホスト名に割り当てる行を追加します。
# /etc/hosts
192.168.10.10 homestead.app
以上でHomesteadの準備は完了
Laravel プロジェクトを生成
vagrantを起動して、プロジェクトを生成します。
$ vagrant up
$ vagrant ssh
$ cd ~/workspace
$ composer create-project laravel/laravel --prefer-dist laravel
動作確認
http://homestead.app/
にアクセスすると、以下のようにLaravelの動作を確認できます。
補足: プロジェクトごとにHomesteadをインストールするには
ここまでの内容は、Homestead環境をグローバルに利用する例になり、複数のプロジェクトで利用するには、共通のHomestead.yamlに設定を追加していくことになり、メンテナンス性があまり良くありません。
そこで、ホストPCにもPHPとComposerの環境が必要になりますが、プロジェクトごとにHomestead環境を用意することもできます。
Composerでプロジェクトにhomesteadコマンドをインストールします。
$ composer require laravel/homestead --dev
homestead make
コマンドで、プロジェクトの設定が含まれたHomestead.yamlとVagrantfileを生成することができます。
$ php vendor/bin/homestead make
あとは、SSHキーとHostsの設定ができていれば、vagrant up
するだけ