Laravel 5.4 Laravel Homestead

イントロダクション

ローカル開発環境を含め、PHP開発全体を愉快なものにしようとLaravelは努力しています。Vagrantは、仮想マシーンの管理と事前設定を行う、簡単でエレガントな手段を提供しています。

Laravel Homestead(入植農地、「ホームステード」)はパッケージを事前に済ませた、Laravel公式の"box"で、PHPやWebサーバー、その他のサーバーソフトウェアをローカルマシンにインストールする必要なく、素晴らしい開発環境を準備できます。オペレーティングシステムでごちゃごちゃになる心配はもうありません! Vagrant boxは完全に使い捨てできます。何かの調子が悪くなれば壊して、数分のうちにそのboxを再生成できます!

Homesteadは、Windows、Mac、Linuxシステムで実行でき、Nginx Webサーバー、PHP7.1、MySQL、Postgres、Redis、Memcached、Nodeやその他、素晴らしいLaravelアプリケーションを開発するために必要な、クールなツールを全部含んでいます。

Note: Windowsを使用している場合は、ハードウェア仮想化(VT-x)を有効にする必要があります。通常、BIOSにより有効にできます。UEFI system上のHyper-Vを使用している場合は、VT-xへアクセスするため、さらにHyper-Vを無効にする必要があります。

含まれるソフトウェア

インストールと設定

最初の段階

Homestead環境を起動する前に、VirtualBox 5.1VMWare、もしくはParallels、それとVagrantをインストールする必要があります。全ソフトウェア共に簡単に使用できるビジュアルインストーラーが、人気のあるオペレーティングシステム全部に用意されています。

VMwareプロバイダを使用するには、VMware Fusion/WorkstationとVMware Vagrantプラグインを購入する必要があります。無料ではありませんが、VMwareが提供する共有フォルダーは最初からよりスピーディーです。

Parallelsプロバイダを使用するには、Parallels Vagrantプラグインをインストールする必要があります。これは無料です。

Homestead Vagrant Boxのインストール

VirtualBox/VMwareとVagrantをインストールし終えたら、laravel/homestead boxをVagrantへ追加するため次のコマンドを端末で実行する必要があります。boxをダウンロードし終えるまで、接続速度にもよりますが数分かかるでしょう。

vagrant box add laravel/homestead

このコマンドが失敗する場合、Vagrantを更新する必要があります。

Homesteadのインストール

リポジトリーをクローンするだけでHomesteadをインストールできます。自分の「ホーム」ディレクトリの中のHomesteadフォルダーへリポジトリーをクローンするのことは、自分のLaravel(とPHP)の全プロジェクトをホストしておくHomestead Boxを用意するのだと考えてください。

cd ~

git clone https://github.com/laravel/homestead.git Homestead

masterブランチは常に安定しているわけではないため、バージョンタグがついたHomesteadをチェックアウトすべきでしょう。最新の安定バージョンは、GitHubのリリースページで見つかります。

cd Homestead

// クローンしたいリリースバージョン
git checkout v5.4.0

Homesteadリポジトリをクローンしたら、Homestead.yaml設定ファイルを生成するために、bash init.shコマンドをHomesteadディレクトリで実行します。

// Mac / Linux...
bash init.sh

// Windows...
init.bat

Homestead設定

プロバイダの設定

Homestead.yamlファイル中のproviderキーは、Vagrantのプロバイダとして、virtualboxvmware_fusionvmware_workstationparallelsのどれを使用するかを指定します。使用するプロバイダの値を指定してください。

provider: virtualbox

共有フォルダーの設定

Homestead.yamlファイルのfoldersプロパティーには、Homestead環境と共有したい全フォルダーがリストされています。これらのフォルダーの中のファイルが変更されると、ローカルマシーンとHomestead環境との間で同期されます。必要なだけ共有フォルダーを設定してください!

folders:
    - map: ~/Code
      to: /home/vagrant/Code

NFSを有効にするには、同期するフォルダーにフラッグを指定するだけです。

folders:
    - map: ~/Code
      to: /home/vagrant/Code
      type: "nfs"

Note: NFSを使用する場合は、vagrant-bindfsプラグインのインストールを考慮してください。このプラグインは、Homestead下のファイルとディレクトリのユーザ/グループパーミッションを正しく維持します。

さらに、Vagrantの同期フォルダでサポートされている任意のオプションを、optionsキーの下に列挙して渡すことができます。

folders:
    - map: ~/Code
      to: /home/vagrant/Code
      type: "rsync"
      options:
          rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
          rsync__exclude: ["node_modules"]

Nginxサイトの設定

Nginxには詳しくない? 問題ありません。sitesプロパティーでHomestead環境上のフォルダーと「ドメイン」を簡単にマップできます。サイト設定のサンプルは、Homestead.yamlファイルに含まれています。これも必要に応じ、Homestead環境へサイトを好きなだけ追加してください。便利に使えるように、Homesteadは皆さんが作業する全てのLaravelプロジェクトの仮想環境を提供します。

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

sitesプロパティをHomestead boxのプロビジョニング後に変更した場合、仮想マシンのNginx設定を更新するため、vagrant reload --provisionを再実行する必要があります。

hostsファイル

Nginxサイトの"domains"に追加したサイトをあなたのコンピューターのhostsファイルにも追加してください。hostsファイルはローカルドメインへのリクエストをHomestead環境へ転送してくれます。MacとLinuxでは、/etc/hostsにこのファイルがあります。Windows環境では、C:\Windows\System32\drivers\etc\hostsです。次の行のように追加してください。

192.168.10.10  homestead.app

設定するIPアドレスにはHomestead.yamlファイルの中の値を確実に指定してください。ドメインをhostsファイルへ追加したら、Webブラウザーでサイトにアクセスできます。

http://homestead.app

Vagrant Boxの実行

Homestead.yamlのリンクを編集終えたら、Homesteadディレクトリでvagrant upコマンドを実行してください。Vagrantは仮想マシーンを起動し、共有フォルダーとNginxサイトを自動的に設定します。

仮想マシーンを破壊するには、vagrant destroy --forceコマンドを使用します。

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

Homesteadをグローバルにインストールし、全プロジェクトで同じHomestead Boxを共有する代わりに、Homesteadインスタンスを管理下のプロジェクトごとに設定することもできます。プロジェクトごとにHomesteadをインストールする利点は、Vagrantfileをプロジェクトに用意すれば、プロジェクトに参加している他の人達も、vagrant upだけで仕事にとりかかれることです。

Homesteadをプロジェクトに直接インストールするには、Composerを使います。

composer require laravel/homestead --dev

Homesteadがインストールできたら、VagrantfileHomestead.yamlファイルをプロジェクトルートへ生成するためにmakeコマンドを使ってください。makeコマンドはHomestead.yamlファイルのsitesfoldersディレクティブを自動的に設定します。

Mac / Linux:

php vendor/bin/homestead make

Windows:

vendor\bin\homestead make

次にvagrant upコマンドを端末で実行し、ブラウザでhttp://homestead.appのプロジェクトへアクセスしてください。/etc/hostsファイルにhomestead.appか選んだドメインのエントリーを追加する必要はあることを覚えておきましょう。

MariaDBのインストール

MySQLの代わりにMariaDBを使用したい場合は、mariadbオプションをHomestead.yamlファイルへ追加してください。このオプションはMySQLを削除し、MariaDBをインストールします。MariaDBはMySQLとそのまま置き換えられる代用ソフトウェアですので、mysqlデータベースドライバをそのままアプリケーションで使用できます。

box: laravel/homestead
ip: "192.168.20.20"
memory: 2048
cpus: 4
provider: virtualbox
mariadb: true

使用方法

Homesteadへグローバルにアクセスする

MacとLinuxシステムでは、Bashプロファイルへ簡単なBash関数を追加すれば実現できます。Windowsでは、PATHに「バッチ」ファイルを追加すれば、行えます。以下のスクリプトはシステムのどこからでも、どんなVagrantコマンドでも実行できるようにし、自動的にHomesteadをインストール済みのディレクトリで実行します。

Mac / Linux

function homestead() {
    ( cd ~/Homestead && vagrant $* )
}

エイリアス中の~/Homesteadパスを実際にHomesteadをインストール場所を示すように調整してください。関数がインストールできたら、システムのどこからでもhomestead uphomestead sshのように実行できます。

Windows

以下の内容のhomestead.batバッチファイルを、マシン上に作成してください。

@echo off

set cwd=%cd%
set homesteadVagrant=C:\Homestead

cd /d %homesteadVagrant% && vagrant %*
cd /d %cwd%

set cwd=
set homesteadVagrant=

スクリプト例中のC:\Homesteadパスは、実際にHomesteadをインストールした場所を指すように調整してください。ファイルを作成したら、PATHへファイルの場所を追加します。これでhomestead uphomestead sshのようなコマンドをシステムのどこからでも実行できます。

SSH接続

Homesteadディレクトリでvagrant ssh端末コマンドを実行すれば、仮想マシンにSSHで接続できます。

しかし、Homesteadマシンには頻繁にSSHでアクセスする必要があると思いますから、ホストマシンから素早くHomestead boxへSSH接続できるように、上記の「関数」を追加することを検討してください。

データベースへの接続

homesteadのデータベースは、最初からMySQLとPostgresのために設定されています。より便利に使えるように、初めからフレームワークはこれらのデータベースを使用するように、Laravelの.envファイルで設定してあります。

MySQLかPostgresデータベースへ、ホストマシンからデータベースクライアントで接続するには、127.0.0.133060(MySQL)番ポートか、54320(Postgres)番ポートへ接続してください。ユーザ名とパスワードは、両方共にhomestead/secretです。

Note: ホストマシーンからデータベースへ接続するには、標準的ではないポートだけを使用してください。Laravelのデータベース設定ファイル中では、デフォルトの3306と5432ポートを使用することができます。Laravelは仮想マシーンの内部で動作しているからです。

サイトの追加

Homestead環境をプロビジョニングし、実働した後に、LaravelアプリケーションをNginxサイトへ追加したいこともあるでしょう。希望するだけのLaravelアプリケーションを一つのHomestead環境上で実行することができます。新しいサイトを追加するには、Homestead.yamlファイルへ追加するだけです。

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

Vagrantが"hosts"ファイルを自動的に管理しない場合は、新しいサイトを追加する必要があります。

192.168.10.10  homestead.app
192.168.10.10  another.app

サイトを追加したら、vagrant reload --provisionコマンドをHomesteadディレクトリで実行します。

サイトタイプ

Laravelベースではないプロジェクトも簡単に実行できるようにするため、Homesteadは様々なタイプのサイトをサポートしています。たとえば、symfony2サイトタイプを使えば、HomesteadにSymfonyアプリケーションを簡単に追加できます。

sites:
    - map: symfony2.app
      to: /home/vagrant/Code/Symfony/public
      type: symfony2

指定できるサイトタイプはapachelaravel(デフォルト)、proxysilverstripestatamicsymfony2symfony4です。

サイトパラメータ

paramsサイトディレクティブを使用し、Nginxのfastcgi_param値を追加できます。例として、値にBARを持つFOOパラメータを追加してみましょう。

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public
      params:
          - key: FOO
            value: BAR

Cronスケジュール設定

schedule:run Artisanコマンドだけを毎分実行することにより、Cronジョブのスケジュールを簡単に行う方法をLaravelは提供しています。schedule:runコマンドはApp\Console\Kernelクラスの定義を調べ、どのジョブを実行すべきかを決定します。

Homesteadサイトでschedule:runコマンドを実行したい場合は、サイトを定義するときにscheduleオプションをtrueに設定してください。

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public
      schedule: true

こうしたサイト用のCronジョブは、仮想マシーンの/etc/cron.dフォルダーの中に定義されます。

ポート

以下のポートが、Homestead環境へポートフォワードされています。

追加のフォワードポート

ご希望ならば追加のポートをVagrant Boxへフォワードすることもできます。プロトコルを指定することもできます。

ports:
    - send: 50000
      to: 5000
    - send: 7777
      to: 777
      protocol: udp

環境の共有

共同作業者やクライアントと、現在作業中の内容を共有したい場合もあるでしょう。Vagrantには、vagrant shareにより、これをサポートする方法が組み込み済みです。しかし、この方法はHomestead.yamlファイルに複数サイトを設定している場合には動作しません。

この問題を解決するため、Homesteadは独自のshareコマンドを持っています。使用を開始するには、vagrant sshによりHomesteadマシンとSSH接続し、share homestead.appを実行してください。これにより、Homestead.yaml設定ファイルのhomestead.appサイトが共有されます。もちろん、homestead.appの代わりに他の設定済みサイトを指定できます。

share homestead.app

コマンド実行後、ログと共有サイトへアクセスするURLを含んだ、Ngrokスクリーンが現れます。カスタムリージョン、サブドメイン、その他のNgrok実行オプションをカスタマイズしたい場合は、shareコマンドへ追加してください。

share homestead.app -region=eu -subdomain=laravel

Note: Vagrantは本質的に安全なものではなく、shareコマンドによりインターネット上に自分の仮想マシンを晒すことになることを覚えておいてください。

複数のPHPバージョン

Note: この機能は、Nginx使用時のみ利用できます。

Homestead6から、同一仮想マシーン上での複数PHPバージョンをサポートを開始しました。Homestead.yamlファイルで、特定のサイトでどのバージョンのPHPを使用するのかを指定できます。利用できるPHPバージョンは、"5.6"、"7.0"、"7.1"です。

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public
      php: "5.6"

さらに、コマンドラインではサポート済みPHPバージョンをすべて利用できます。

php5.6 artisan list
php7.0 artisan list
php7.1 artisan list

ネットワークインターフェイス

Homestead.yamlファイルのnetworkプロパティは、Homestead環境のネットワークインターフェイスを設定します。多くのインターフェイスを必要に応じ設定可能です。

networks:
    - type: "private_network"
      ip: "192.168.10.20"

ブリッジインターフェイスを有効にするには、bridge項目を設定し、ネットワークタイプをpublic_networkへ変更します。

networks:
    - type: "public_network"
      ip: "192.168.10.20"
      bridge: "en1: Wi-Fi (AirPort)"

DHCPを有効にするには、設定からipオプションを取り除いてください。

networks:
    - type: "public_network"
      bridge: "en1: Wi-Fi (AirPort)"

Homesteadの更新

2つの簡単な手順で、Homesteadをアップデートできます。最初にvagrant box updateコマンドを使い、Vagrant boxを更新してください。

vagrant box update

次に、Homesteadのソースコードを更新する必要があります。リポジトリをクローンしている場合は、リポジトリをクローンしたもともとの場所で、git pull origin masterを単に実行するするだけです。

composer.jsonファイルにより、Homesteadをインストールしている場合は、composer.jsonファイルに"laravel/homestead": "^4"が含まれていることを確認し、依存パッケージを更新してください。

composer update

旧バージョン

Tip!! 古いバージョンのPHPを使用したい場合は、Homesteadの古いバージョンを試して見る前に、複数PHPバージョンのドキュメントを確認してください。

Homestead.yamlファイルに以下の行を付け加えることで、Homesteadが使用するboxのバージョンを簡単にオーバーライドできます。

version: 0.6.0

一例:

box: laravel/homestead
version: 0.6.0
ip: "192.168.20.20"
memory: 2048
cpus: 4
provider: virtualbox

古いバージョンのHomestead boxを使用する場合は、互換性のあるバージョンのHomesteadソースコードへ合わせる必要があります。下図はサポートされているboxのバージョンを表し、使用すべきHomesteadソースコードのバージョンとPHPバージョンです。

Homesteadバージョン Boxバージョン
PHP 7.0 3.1.0 0.6.0
PHP 7.1 4.0.0 1.0.0

プロパイダ固有の設定

VirtualBox

デフォルトのHomestead設定は、natdnshostresolver設定をonにしています。これにより、HomesteadはホストのオペレーティングシステムのDNS設定を利用します。この動作をオーバーライドしたい場合は、Homestead.yamlへ以下の行を追加してください。

provider: virtualbox
natdnshostresolver: off

ドキュメント章別ページ

公式パッケージ

ヘッダー項目移動

注目:アイコン:ページ内リンク設置(リンクがないヘッダーへの移動では、リンクがある以前のヘッダーのハッシュをURLへ付加します。

移動

クリックで即時移動します。

バージョン

設定

適用ボタンクリック後に、全項目まとめて適用されます。

カラーテーマ
和文指定 Pagination
和文指定 Scaffold
Largeスクリーン表示幅
インデント
本文フォント
コードフォント
フォント適用確認

フォントの指定フィールドから、フォーカスが外れると、当ブロックの内容に反映されます。EnglishのDisplayもPreviewしてください。

フォント設定時、表示に不具合が出た場合、当サイトのクッキーを削除してください。

バックスラッシュを含むインライン\Code\Blockの例です。

以下はコードブロックの例です。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * ユーザに関連する電話レコードを取得
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

設定を保存する前に、表示が乱れないか必ず確認してください。CSSによるフォントファミリー指定の知識がない場合は、フォントを変更しないほうが良いでしょう。

キーボード・ショートカット

オープン操作

PDC

ページ(章)移動の左オフキャンバスオープン

HA

ヘッダー移動モーダルオープン

MS

移動/設定の右オフキャンバスオープン

ヘッダー移動

T

最初のヘッダーへ移動

E

最後のヘッダーへ移動

NJ

次ヘッダー(H2〜H4)へ移動

BK

前ヘッダー(H2〜H4)へ移動

その他

?

このヘルプページ表示
閉じる