イントロダクション

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

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

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

注意: Windowsを使用している場合は、ハードウェア仮想化(VT-x)を有効にする必要があります。通常、BIOSにより有効にできます。

Homesteadは現在、Vagrant1.7上で構築・テストされています。

パッケージされているソフトウェア

インストールと準備

VirtualBox/VMwareとVagrantのインストール

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

VMware

VirtualBoxに付け加え、VMwareもHomesteadはサポートしています。VMwareプロバイダーを使用するには、VMware Fusion/DesktopとVMware Vagrantプラグインを購入する必要があります。VMwareは最初からより早い共有フォルダーを提供しています。

Vagrant Boxの追加

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

vagrant box add laravel/homestead

このコマンドが失敗する場合、完全なURLを指定する必要のある古いバージョンのVagrantを使用しています。

vagrant box add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead

Homesteadのインストール

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

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

HomesteadリポジトリをCloneできたら、Homestead.yaml設定ファイルを作成するため、Homesteadディレクトリでbash init.shコマンドを実行してください。

bash init.sh

Homestead.yamlファイルは、皆さんの~/.homesteadディレクトリーへ設置されます。

プロバイダーの設定

Homestead.yamlファイルのproviderキーはvirtualboxvmware_fusion(Mac OS X)、vmware_workstation(Windows)のどれかです。使用するプロバイダーの値を指定してください。

   provider: virtualbox

SSHキーの設定

次に、Homestead.yamlファイルを編集します。このファイルで、publicのSSHキーへのパスを設定でき、またメインマシーンと、Homestead仮想マシーンとの間で共有するフォルダーも指定できます。

SSHキーを持っていない? 一般的にMacとLinuxでは、以下のコマンドを使用し、SSHキーペアを生成できます。

ssh-keygen -t rsa -C "you@homestead"

Windowsでは、Gitをインストールし、Gitコマンドを実行するためのGit Bashシェルを使用します。別の方法として、PuTTYPuTTYgenを使うこともできます。

SSHキーを作成したら、Homestead.yamlファイルの、authorizeプロパティーへ、キーのパスを指定してください。

共有フォルダーの設定

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

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

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

Nginxサイトの設定

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

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

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

それぞれのサイトはHTTPならば8000番ポートから、HTTPSなら44300ポートからアクセスできます。

Bashエイリアス

BashエイリアスをHomestead boxに追加するには、~/.homesteadディレクトリーのルートに、aliasesファイルを追加するだけです。

Vagrant boxを起動する

Homestead.yamlのリンクを編集終えたら、Homesteadディレクトリーでvagrant upコマンドを実行してください。

Vagrantは仮想マシーンを起動し、共有フォルダーとNginxサイトを自動的に設定します!仮想マシーンを破壊するには、vagrant destroy --forceコマンドを使用します。

Nginxサイトの「ドメイン」をメインマシーンの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

データベースに接続する方法を学ぶには、続けて読んでください!

使用方法

SSHによる接続

Homesteadマシンへ頻繁に接続するでしょうから、Boxに簡単に接続できるように、ホストマシンで「エイリアス」を作成することを考えましょう。

alias vm="ssh vagrant@127.0.0.1 -p 2222"

このエイリアスを設定すると、システムのどこにいようと、"vm"コマンドを使ってHomesteadマシンへSSH接続できます。

そうでなければ、Homesteadディレクトリでvagrant sshコマンドを使用しましょう。

データベースへの接続

homesteadのデータベースは、最初からMySQLとPostgresのために設定されています。より便利にするために、Laravelのlocalデータベース設定がデフォルトで使用できるように設定されています。

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

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

サイトを追加する

Homestead環境が準備され実働した後に、LaravelアプリケーションをNginxサイトへ追加したいこともあるでしょう。希望するだけの数のNginxサイトをLaravelアプリケーションに追加し、一つのHomestead環境上で実行することができます。これには2つの方法があります。最初の方法は、シンプルにHomestead.yamlファイルへサイトを追加し、それからvagrant provisionをHomesteadディレクトリーで実行してください。

注意: この方法は破壊的です。provisionコマンドを実行すると、存在しているデータベースは破棄され、作成し直されます。

もう一つの方法は、Homestead環境で使用できる、serveスクリプトを使用します。serveスクリプトを使用するには、Homestead環境へSSHで接続し、以下のコマンドを実行してください。

serve domain.app /home/vagrant/Code/path/to/public/directory 80

注目: serveコマンドを実行した後は、新しいサイトをメインマシーンのhostsファイルへ追加するのを忘れずに!

ポート

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

  • SSH: 2222 → フォワード先 22
  • HTTP: 8000 → フォワード先 80
  • HTTPS: 44300 → Forwards To 443
  • MySQL: 33060 → フォワード先 3306
  • Postgres: 54320 → フォワード先 5432

追加のポート

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

   ports:
       - send: 93000
         to: 9300
       - send: 7777
         to: 777
         protocol: udp

Blackfireプロファイラー

SensioLabsのBlackfireプロファイラーはRAM、CPU時間、ディスクI/Oなどのコード実行情報を自動的に集めてくれます。Homesteadでは、皆さんのアプリケーションでとても簡単に使用できます。

必要なパッケージは確実にHomestead Boxへインストールされていますので、Homestead.yamlファイルにBlackfireのサーバーIDとトークンをセットするだけです。

   blackfire:
       - id: your-server-id
         token: your-server-token
         client-id: your-client-id
         client-token: your-client-token

Blackfireの認証情報を設定し終えたら、vagrant provisionをHomesteadディレクトリーで実行し、Boxの設定準備を再実行してください。もちろん、WebブラウザにBlackfireを使いやすくする拡張をインストールするために、Blackfireのドキュメントをしっかり読んでおきましょう。