Edited at

Laravel Homesteadを利用してLaravelを利用するための準備をする

More than 1 year has passed since last update.

Laravelの勉強をするために環境を構築した。

Laravelの公式パッケージでLaravel Homesteadというものが提供されているらしいので、それを利用することにした。

本記事をまとめている途中に情報収集していて気付いたのだが、公式サイトに詳しく載っていた…。

基本的にそっちをみた方がよい気がするので、このページに来た人用にリンクを貼っておきます。

公式:https://readouble.com/laravel/5.1/ja/homestead.html

※上記ページでは、Ubuntuのバージョンは14.04となっているが、最新のhomesteadではUbuntu16.04になっていた(2016/10 時点)。


Homestead利用準備


既にHomesteadを利用している場合。

% git clone https://github.com/laravel/homestead.git LaravelHomestead

% cd LaravelHomestead


ホストのマシンで初めてHomesteadを利用する場合。

% vagrant box add laravel/homestead

% git clone https://github.com/laravel/homestead.git LaravelHomestead
% cd LaravelHomestead
% bash ./init.sh

「~/.homestead」というディレクトリが出来ている。

その中に、Homestead.yml、after.sh、aliasesなどの共通の設定ファイルが存在している。

プロジェクト固有の設定ファイルは、プロジェクトルート直下の「src/stubs/」以下に入っている。

Homestead.yamlに、IPやメモリ、sshの設定などを記載する。

after.shには、vagrant実行時にHomestead環境に反映するものを記載する。

日本語環境用に設定する例


after.sh

#!/bin/sh

sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime
sudo locale-gen ja_JP.UTF-8
sudo /usr/sbin/update-locale LANG=ja_JP.UTF-8



Vagrantの実行

後は、通常通りVagrantを実行する。

% vagrant up


webサイトにアクセス

Nginxが自動起動しているので、Homestead.yamlの「sites」に設定した項目に従ってWebサイトにアクセス可能である。


Homestead.yamlについて

IP、メモリ、CPU、Vagrantのprovider(VirtualBox、他)、データベース、ssh、ファイルの同期など設定ができる。

同期するディレクトリは、複数設定できる。


Homestead.yaml

folders:

- map: ~/work/laravel
to: /home/vagrant/project

- map: ~/work/settings
to: /home/vagrant/settings

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


nfsを利用して同期する場合、HHVMを利用する場合には、以下のようにする。


Homestead.yaml

folders:

- map: ~/work/laravel
to: /home/vagrant/project
type: "nfs"

sites:
- map: homestead.app
to: /home/vagrant/project/Laravel/public
hhvm: true



Laravelのインストール


専用インストーラでインストール

% composer global require "laravel/installer"

プロジェクトを作成

% laravel new プロジェクト名


composerでインストール

% composer create-project laravel/laravel:5.1 プロジェクト名


Laravelを日本語化

設定ファイルなどのコメントを日本語へ翻訳するには、comja5をインストールする。


プロジェクトにインストール

% composer require laravel-ja/comja5:~1

% ./vendor/bin/comja5


globalにインストール

% composer global require laravel-ja/comja5:~1

% comja5


インストール後の設定


パーミッションの設定

開発環境の場合

※本番の場合には、適切なパーミッションを設定すること。

% sudo chmod -R a+w storage/*

% sudo chmod -R a+w bootstrap/cache


コンパイル済みコアファイルの削除

クラスファイル読み込みの速度向上のために、ファイルを連結する仕組みを提供している。

スタックトレースは、この連結されたファイルを示すため、開発時には、削除した方がよい。


常に削除する場合

% php artisan clear-compiled



デバッグモードのときにのみ削除

% php artisan optimize



Whoops

% composer require filp/whoops:~1.0


app/Exceptions/Handler.php

public function render($request, Exception $exception)

{
if (config('app.debug')) {
$whoops = new \Whoops\Run;
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler());
return new \Illuminate\Http\Response(
$whoops-handleException($exception),
$exception->getStatusCode(),
$exception->getHeaders()
);
}
return parent::render($request, $exception);
}


サーバを立ち上げる


サーバを立ち上げる

% php artisan serve [--host=ホスト名] [--port=ポート番号]



ドキュメントルート

ホストOSからLaravelアプリにアクセスするためには、Laravelアプリがnginxのドキュメントルートとなるように設定する必要がある。

~/project以下に「sample」というlaravelのプロジェクトを作った場合は、Homestead.yamlで「to: /home/vagrant/project/Laravel/public」と設定しているので、以下のコマンドを実行することで「http://[IP]:80」にアクセスするとLaravelアプリケーションにアクセスできる。

% cd ~/project/Laravel

% ln -s ~/project/sample/public public