Laravel 5.2 Laravel Homestead

イントロダクション

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

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

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

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

含まれるソフトウェア

インストールと設定

最初の段階

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

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

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

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

bash init.sh

Homestead設定

プロバイダの設定

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

provider: virtualbox

共有ホルダーの設定

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

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

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

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

Nginxサイトの設定

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

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

hhvmオプションをtrueに設定すれば、簡単にHomesteadサイトでHHVMが使えるようになります。

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

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/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へグローバルにアクセスする

場合により、Homestead仮想マシンをファイルシステムのどこからでもvagrant upしたい時もあるでしょう。Bashプロファイルへ簡単なBash関数を追加すれば実現できます。以下の関数はシステムのどこからでも、どんなVagrantコマンドでも実行できるようにし、自動的にHomesteadをインストールしてあるディレクトリで実行します。

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

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

SSH接続

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

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

データベースへの接続

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

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

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

サイトの追加

Homestead環境をプロビジョニングし、実働した後に、LaravelアプリケーションをNginxサイトへ追加したいこともあるでしょう。希望するだけのLaravelアプリケーションを一つのHomestead環境上で実行することができます。新しいサイトを追加するには、~/.homestead/Homestead.yamlファイルへ追加し、次にvagrant provisionターミナルコマンドをHomesteadディレクトリで実行します。

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: 93000
      to: 9300
    - send: 7777
      to: 777
      protocol: udp

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

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)"

ドキュメント章別ページ

ヘッダー項目移動

注目:アイコン:ページ内リンク設置(リンクがないヘッダーへの移動では、リンクがある以前のヘッダーのハッシュを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)へ移動

その他

?

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