イントロダクション
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上で構築・テストされています。
パッケージされているソフトウェア
- Ubuntu 14.04
- PHP 5.6
- HHVM
- Nginx
- MySQL
- Postgres
- Node(BowerとGrunt、Gulpも含む)
- Redis
- Memcached
- Beanstalkd
- Laravel Envoy
- Blackfireプロファイラー
インストールと準備
VirtualBox/VMwareとVagrantのインストール
Homestead環境を起動する前に、VirtualBoxとVagrantをインストールする必要があります。両ソフトウェア共に、簡単に使用できるビジュアルなインストーラーが、人気のあるオペレーティングシステム全部に用意されています。
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
キーはvirtualbox
、vmware_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
シェルを使用します。別の方法として、PuTTYとPuTTYgenを使うこともできます。
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のドキュメントをしっかり読んでおきましょう。