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環境に反映するものを記載する。
日本語環境用に設定する例
# !/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、ファイルの同期など設定ができる。
同期するディレクトリは、複数設定できる。
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を利用する場合には、以下のようにする。
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
% 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
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