イントロダクション
Laravelはローカル開発環境を含め、PHP開発体験全体を楽しいものにするよう努めています。Laravel Homesteadは、PHP、Webサーバ、その他のサーバソフトウェアをローカルマシンにインストールしなくても、すばらしい開発環境を提供する公式のパッケージ済みVagrantボックスです。
Vagrantは、仮想マシンを管理およびプロビジョニングするためのシンプルでエレガントな方法を提供しています。Vagrantボックスは完全に使い捨てです。何か問題が発生した場合は、数分でボックスを破棄して再作成できます。
Homesteadは、Windows、macOS、Linuxシステムで実行でき、Nginx、PHP、MySQL、PostgreSQL、Redis、Memcached、Node、その他すばらしいLaravelアプリケーションの開発に必要なすべてのソフトウェアを含んでいます。
Warning!! Windowsを使用している場合は、ハードウェア仮想化(VT-x)を有効にする必要があります。通常、BIOSにより有効にできます。UEFI system上のHyper-Vを使用している場合は、VT-xへアクセスするため、さらにHyper-Vを無効にする必要があります。
含んでいるソフトウェア
- Ubuntu 20.04
- Git
- PHP 8.2
- PHP 8.1
- PHP 8.0
- PHP 7.4
- PHP 7.3
- PHP 7.2
- PHP 7.1
- PHP 7.0
- PHP 5.6
- Nginx
- MySQL 8.0
- lmm
- Sqlite3
- PostgreSQL 15
- Composer
- Docker
- Node (Yarn、Bower、Bower、Grunt、Gulpを含む)
- Redis
- Memcached
- Beanstalkd
- Mailhog
- avahi
- ngrok
- Xdebug
- XHProf / Tideways / XHGui
- wp-cli
オプションのソフトウェア
- Apache
- Blackfire
- Cassandra
- Chronograf
- CouchDB
- CrystalとLuckyフレームワーク
- Elasticsearch
- EventStoreDB
- Gearman
- Go
- Grafana
- InfluxDB
- Logstash
- Mailpit (Mailhogから置き換え)
- MariaDB
- Meilisearch
- MinIO
- MongoDB
- Neo4j
- Oh My Zsh
- Open Resty
- PM2
- Python
- R
- RabbitMQ
- RVM(Rubyバージョンマネージャ)
- Solr
- TimescaleDB
- Trader(PHP拡張)
- WebdriverとLaravel Duskユーティリティ
インストールと設定
最初の段階
Homestead環境を起動する前に、Vagrantと、サポートいている以下のプロバイダのいずれかをインストールする必要があります。
これらすべてのソフトウェアパッケージは、人気のあるすべてのオペレーティングシステムへ使いやすいビジュアルインストーラを提供します。
Parallelsプロバイダを使用するには、Parallels Vagrantプラグインをインストールする必要があります。これは無料です。
Homesteadのインストール
ホストマシンへリポジトリをクローンし、Homesteadをインストールできます。自分の「ホーム」ディレクトリの中のHomestead
フォルダへリポジトリをクローンするのことは、自分の全LaravelアプリケーションをホストしておくHomestead仮想マシンを用意するのだと考えてください。当ドキュメントでは、このディレクトリを「Homesteadディレクトリ」と呼びます。
git clone https://github.com/laravel/homestead.git ~/Homestead
Laravel
Homesteadリポジトリのクローンを作成したら、release
ブランチをチェックアウトする必要があります。このブランチには、Homesteadの最新の安定版リリースが常に含まれます。
cd ~/Homestead
git checkout release
次に、Homesteadディレクトリでbash init.sh
コマンドを実行し、Homestead.yaml
設定ファイルを作成します。Homestead.yaml
ファイルは、Homesteadインストールのすべてを設定する場所です。このファイルは、Homesteadディレクトリに配置されます。
# macOS/Linux
bash init.sh
# Windows
init.bat
Homestead設定
プロバイダの設定
Homestead.yaml
ファイル中のprovider
キーは、Vagrantのプロバイダとして、virtualbox
、parallels
のどちらを使用するかを指定します。
provider: virtualbox
Warning!! Apple Siliconを使用している場合は、
Homestead.yaml
ファイルにbox: laravel/homestead-arm
を追加する必要があります。Apple SiliconにはParallelsプロバイダが必要です。
共有フォルダの設定
Homestead.yaml
ファイルのfolders
プロパティには、Homestead環境と共有したい全フォルダがリストされています。これらのフォルダの中のファイルが変更されると、ローカルマシンとHomestead仮想環境との間で同期されます。必要なだけ共有フォルダを設定してください!
folders:
- map: ~/code/project1
to: /home/vagrant/project1
Warning!! Windowsユーザーはパスを
~/
記法を使わず、代わりにたとえばC:\Users\user\Code\project1
のように、プロジェクトのフルパスを使ってください。
すべてのアプリケーションを含む単一の大きなディレクトリをマッピングするのではなく、常に個々のアプリケーションを独自のフォルダマッピングにマッピングする必要があります。フォルダをマップするとき、仮想マシンはフォルダ内のすべてのファイルのすべてのディスクIOを追跡する必要があります。フォルダ内に多数のファイルがある場合、パフォーマンスの下する可能性があります。
folders:
- map: ~/code/project1
to: /home/vagrant/project1
- map: ~/code/project2
to: /home/vagrant/project2
Warning!! Homesteadを使用する場合、
.
(カレントディレクトリ)をマウントしないでください。そうすると、Vagrantはカレントフォルダを/vagrant
へマップしない状況が起き、オプションの機能が壊れ、プロビジョン中に予期せぬ結果が起きます。
NFSを有効にするには、フォルダのマッピングでtype
オプションを付けます。
folders:
- map: ~/code/project1
to: /home/vagrant/project1
type: "nfs"
Warning!! Windows上でNFSを使用する場合は、vagrant-winnfsdプラグインのインストールを考慮すべきでしょう。このプラグインは、Homestead仮想マシン下のファイルとディレクトリのユーザー/グループパーミッションを正しく維持します。
さらに、Vagrantの同期フォルダでサポートされている任意のオプションを、options
キーの下に列挙して渡すことができます。
folders:
- map: ~/code/project1
to: /home/vagrant/project1
type: "rsync"
options:
rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
rsync__exclude: ["node_modules"]
Nginxサイトの設定
Nginxには詳しくない? 問題ありません。Homestead.yaml
ファイルのsites
プロパティでHomestead環境上のフォルダと「ドメイン」を簡単にマップできます。サイト設定のサンプルは、Homestead.yaml
ファイルに含まれています。これも必要に応じ、Homestead環境へサイトを好きなだけ追加してください。便利に使えるよう、Homesteadは皆さんが作業するすべてのLaravelアプリケーションの仮想環境を提供します。
sites:
- map: homestead.test
to: /home/vagrant/project1/public
sites
プロパティをHomestead仮想環境のプロビジョニング後に変更した場合、仮想マシンのNginx設定を更新するため、vagrant reload --provision
をターミナルで実行する必要があります。
Warning!! Homesteadのスクリプトは可能な限り冪等性を保つように組まれています。しかしながら、プロビジョニング中に問題が起きたら、
vagrant destroy && vagrant up
コマンドを実行し、マシンを壊してから、再構築してください。
ホスト名の解決
Homesteadは、自動ホスト解決のためにmDNS
を使用してホスト名を公開します。Homestead.yaml
ファイルでhostname: homestead
を設定すると、ホストはhomestead.local
で利用できるようになります。macOS、iOS、およびLinuxデスクトップディストリビューションには、デフォルトで「mDNS」サポートが含まれています。Windowsを使用している場合は、Bonjour
Print Services for Windowsをインストールする必要があります。
自動ホスト名の使用は、Homesteadのプロジェクトごとのインストールに最適です。1つのHomesteadインスタンスで複数のサイトをホストしている場合は、Webサイトの「ドメイン」をマシンのhosts
ファイルに追加できます。hosts
ファイルは、HomesteadサイトへのリクエストをHomestead仮想マシンにリダイレクトします。macOSおよびLinuxでは、このファイルは/etc/hosts
にあります。Windowsでは、C:\Windows\System32\drivers\etc\hosts
にあります。このファイルに追加する行は次のようになります。
192.168.56.56 homestead.test
設定するIPアドレスにはHomestead.yaml
ファイルの中の値を確実に指定してください。ドメインをhosts
ファイルへ追加したら、Webブラウザでサイトにアクセスできます。
http://homestead.test
サービスの設定
Homesteadはデフォルトでいくつかのサービスを開始します。ただし、プロビジョニング中に有効/無効にするサービスをカスタマイズできます。たとえば、Homestead.yaml
ファイル内のservices
オプションを変更することで、PostgreSQLを有効にし、MySQLを無効にできます。
services:
- enabled:
- "postgresql"
- disabled:
- "mysql"
指定したサービスは、enabled
およびdisabled
ディレクティブの順序に基づいて開始または停止されます。
Vagrant Boxの実行
Homestead.yaml
のリンクを編集終えたら、Homesteadディレクトリでvagrant up
コマンドを実行してください。Vagrantは仮想マシンを起動し、共有フォルダとNginxサイトを自動的に設定します。
仮想マシンを破壊するには、vagrant destroy
コマンドを使用します。
プロジェクトごとにインストール
Homesteadをグローバルにインストールし、全プロジェクトで同じHomestead仮想環境を共有する代わりに、Homesteadインスタンスを管理下のプロジェクトごとに設定することもできます。プロジェクトごとにHomesteadをインストールする利点は、Vagrantfile
をプロジェクトに用意すれば、プロジェクトに参加している他の人達も、プロジェクトのリポジトリをクローンしたあとにvagrant up
ですぐに仕事にとりかかれることです。
Composerパッケージマネージャを使用して、Homesteadをプロジェクトにインストールできます。
composer require laravel/homestead --dev
Homesteadをインストールしたら、Homesteadのmake
コマンドを呼び出して、プロジェクトのVagrantfile
ファイルとHomestead.yaml
ファイルを生成します。これらのファイルは、プロジェクトのルートに配置されます。make
コマンドは、Homestead.yaml
ファイルのsites
およびfolders
ディレクティブを自動的に構成します。
# macOS/Linux
php vendor/bin/homestead make
# Windows
vendor\\bin\\homestead make
次にvagrant up
コマンドを端末で実行し、ブラウザでhttp://homestead.test
のプロジェクトへアクセスしてください。自動ホスト名解決を使わない場合は、/etc/hosts
ファイルにhomestead.test
か、自分で選んだドメインのエントリーを追加する必要があることを忘れないでください。
オプション機能のインストール
オプションのソフトウェアは、Homestead.yaml
ファイル内のfeatures
オプションを使用してインストールします。ほとんどの機能は論理値で有効/無効にしますが、一部の機能は複数の構成オプションを使用できます。
features:
- blackfire:
server_id: "server_id"
server_token: "server_value"
client_id: "client_id"
client_token: "client_value"
- cassandra: true
- chronograf: true
- couchdb: true
- crystal: true
- elasticsearch:
version: 7.9.0
- eventstore: true
version: 21.2.0
- gearman: true
- golang: true
- grafana: true
- influxdb: true
- mariadb: true
- meilisearch: true
- minio: true
- mongodb: true
- mysql: true
- neo4j: true
- ohmyzsh: true
- openresty: true
- pm2: true
- python: true
- r-base: true
- rabbitmq: true
- rvm: true
- solr: true
- timescaledb: true
- trader: true
- webdriver: true
Elasticsearch
サポートしているElasticsearchのバージョンを指定できます。これは、正確なバージョン番号(major.minor.patch)である必要があります。デフォルトのインストールでは、homestead
という名前のクラスターを作成します。Elasticsearchにオペレーティングシステムのメモリの半分以上を割り当てないでください。そのため、Homestead仮想マシンでElasticsearchの割り当てが最低2倍あることを確認してください。
Note: Elasticsearchドキュメントをチェックして、設定をカスタマイズする方法を確認してください。
MariaDB
MariaDBを有効にすると、MySQLを削除してMariaDBをインストールします。MariaDBはMySQLのそのまま置き換え可能な代替機能として通常動作します。そのため、アプリケーションのデータベース設定では、mysql
データベースドライバをそのまま使ってください。
MongoDB
デフォルト状態のMongoDBでは、データベースのユーザー名をhomestead
、パスワードをsecret
に設定します。
Neo4j
デフォルト状態のNeo4jでは、データベースのユーザー名をhomestead
、パスワードをsecret
として設定します。Neo4jブラウザにアクセスするには、Webブラウザでhttp://homestead.test:7474
にアクセスしてください。Neo4jクライアントのために、7687
(Bolt)、7474
(HTTP)、7473
(HTTPS)ポートが用意されています。
エイリアス
Homestead仮想マシンでBashのエイリアスを指定するには、Homesteadディレクトリにある
aliases
ファイルを編集します。
alias c='clear'
alias ..='cd ..'
aliases
ファイルを更新した後、vagrant reload --provision
コマンドを使用してHomestead仮想マシンを再プロビジョニングする必要があります。これにより、新しいエイリアスがマシンで使用できるようになります。
Homesteadのアップデート
Homesteadのアップデートを開始する前に、Homesteadディレクトリで以下のコマンドを実行して、現在の仮想マシンを確実に削除してください。
vagrant destroy
次に、Homesteadソースコードを更新する必要があります。リポジトリのクローンを作成した場合は、最初にリポジトリのクローンを作成した場所で次のコマンドを実行できます。
git fetch
git pull origin release
これらのコマンドは、GitHubリポジトリから最新のHomesteadコードをプルし、最新のタグをフェッチしてから、最新のタグ付きリリースをチェックアウトします。最新の安定版リリースバージョンは、HomesteadのGitHubリリースページにあります。
プロジェクトのcomposer.json
ファイルを介してHomesteadをインストールした場合は、composer.json
ファイルに"laravel/homestead" : "^12"
が含まれていることを確認し、依存関係を更新する必要があります。
composer update
次に、vagrant box update
コマンドを使用してVagrantボックスを更新する必要があります。
vagrant box update
Vagrantボックスを更新した後、Homesteadの追加の設定ファイルを更新するために、Homesteadディレクトリからbashinit.sh
コマンドを実行する必要があります。既存のHomestead.yaml
、after.sh
、aliases
ファイルを上書きするかどうか尋ねられます。
# macOS/Linux
bash init.sh
# Windows
init.bat
最後に、最新のVagrantインストールを利用するため、Homestead仮想マシンを再生成します。
vagrant up
日常の使用方法
SSH接続
Homesteadディレクトリからvagrant ssh
ターミナルコマンドを実行することにより、仮想マシンにSSH接続できます。
サイトの追加
Homestead環境をプロビジョニングし、実働した後に、LaravelプロジェクトをNginxサイトへ追加したいこともあるでしょう。希望するだけのLaravelプロジェクトを一つのHomestead環境上で実行できます。新しいサイトを追加するには、Homestead.yaml
ファイルへ追加します。
sites:
- map: homestead.test
to: /home/vagrant/project1/public
- map: another.test
to: /home/vagrant/project2/public
Warning!! サイトを追加する前に、プロジェクトのディレクトリにフォルダマッピングを確実に設定してください。
Vagrantが"hosts"ファイルを自動的に管理しない場合は、新しいサイトを追加する必要があります。このファイルはmacOSとLinuxでは、/etc/hosts
にあります。Windowsでは、C:\Windows\System32\drivers\etc\hosts
に位置します。
192.168.56.56 homestead.test
192.168.56.56 another.test
サイトを追加したら、vagrant reload --provision
ターミナルコマンドをHomesteadディレクトリで実行します。
サイトタイプ
Laravelベースではないプロジェクトも簡単に実行できるようにするため、Homesteadはさまざまなタイプのサイトをサポートしています。たとえば、statamic
サイトタイプを使えば、HomesteadにStatamicアプリケーションを簡単に追加できます。
sites:
- map: statamic.test
to: /home/vagrant/my-symfony-project/web
type: "statamic"
指定できるサイトタイプはapache
、apigility
、expressive
、laravel
(デフォルト)、proxy
、silverstripe
、statamic
、symfony2
、symfony4
、zf
です。
サイトパラメータ
params
サイトディレクティブを使用し、Nginxのfastcgi_param
値を追加できます。
sites:
- map: homestead.test
to: /home/vagrant/project1/public
params:
- key: FOO
value: BAR
環境変数
グローバルな環境変数は、Homestead.yaml
ファイルで追加定義できます。
variables:
- key: APP_ENV
value: local
- key: FOO
value: bar
Homestead.yaml
ファイルを更新した後、必ずvagrant reload --provision
コマンドを実行してマシンを再プロビジョニングしてください。これにより、インストールしているすべてのPHPバージョンのPHP-FPM構成が更新され、vagrant
ユーザーの環境も更新されます。
ポート
以下のポートが、Homestead環境へポートフォワードされています。
- HTTP: 8000 → フォワード先 80
- HTTPS: 44300 → フォワード先 443
追加のフォワードポート
必要に応じて、Homestead.yaml
ファイル内でports
設定エントリを定義することにより、追加のポートをVagrantボックスに転送できます。Homestead.yaml
ファイルを更新した後は、必ずvagrant reload --provision
コマンドを実行してマシンを再プロビジョニングしてください。
ports:
- send: 50000
to: 5000
- send: 7777
to: 777
protocol: udp
以下は、ホストマシンからVagrantボックスへマップする、Homesteadサービス追加ポートのリストです。
- SSH: 2222 → フォワード先 22
- ngrok UI: 4040 → フォワード先 4040
- MySQL: 33060 → フォワード先 3306
- PostgreSQL: 54320 → フォワード先 5432
- MongoDB: 27017 → フォワード先 27017
- Mailhog: 8025 → フォワード先 8025
- Minio: 9600 → フォワード先 9600
PHPバージョン
Homesteadは、同じ仮想マシンで複数のバージョンのPHPを実行するためサポートしています。Homestead.yaml
ファイル内の特定のサイトに使用するPHPのバージョンを指定できます。使用可能なPHPバージョンは、"5.6",
"7.0", "7.1", "7.2", "7.3",
"7.4"、"8.0"、"8.1","8.2"(デフォルト)です。
sites:
- map: homestead.test
to: /home/vagrant/project1/public
php: "7.1"
Homestead仮想マシン内では、以下のようにCLIでサポートしているPHPバージョンのどれでも使用できます。
php5.6 artisan list
php7.0 artisan list
php7.1 artisan list
php7.2 artisan list
php7.3 artisan list
php7.4 artisan list
php8.0 artisan list
php8.1 artisan list
php8.2 artisan list
Homestead仮想マシン内から以下のコマンドを実行すれば、CLIで使用するPHPのデフォルトバージョンを変更できます。
php56
php70
php71
php72
php73
php74
php80
php81
php82
データベースへの接続
homestead
データベースは、MySQLとPostgreSQLの両方へすぐに設定できます。ホストマシンのデータベースクライアントからMySQLまたはPostgreSQLデータベースに接続するには、ポート33060
(MySQL)または54320
(PostgreSQL)で127.0.0.1
へ接続してください。両方のデータベースのユーザー名とパスワードはhomestead
/secret
です。
Warning!! ホストマシンからデータベースに接続する場合にのみ、これらの非標準ポートを使用する必要があります。Laravelは仮想マシン内で実行するため、Laravelアプリケーションの
database
設定ファイルではデフォルトの3306ポートと5432ポートを使用しています。
データベースのバックアップ
Homesteadは、Homestead仮想マシンが破壊されたときに、データベースを自動的にバックアップできます。この機能を利用するには、Vagrant2.1.0以降を使用している必要があります。古いバージョンのVagrantを使用している場合は、vagrant-triggers
プラグインをインストールする必要があります。データベースの自動バックアップを有効にするには、Homestead.yaml
ファイルに次の行を追加します。
backup: true
設定が完了すると、Homesteadは、vagrant destroy
コマンドの実行時に、データベースを.backup/mysql_backup
もしくは.backup/postgres_backup
ディレクトリにエクスポートします。これらのディレクトリは、Homesteadをインストールしたフォルダ、またはプロジェクトごとのインストールメソッドを使用している場合はプロジェクトのルートにできます。
cronスケジュールの設定
Laravelは、1分ごとに実行する単一のschedule:run
Artisanコマンドをスケジュールすることにより、cronジョブのスケジュールに便利な方法を提供しています。schedule:run
コマンドは、App\Console\Kernel
クラスで定義したジョブスケジュールを調べて、どのスケジュール済みタスクを実行するかを決定します。
Homesteadサイトに対してschedule:run
コマンドを実行する場合は、サイトを定義するときにschedule
オプションをtrue
に設定します。
sites:
- map: homestead.test
to: /home/vagrant/project1/public
schedule: true
サイトのcronジョブは、Homestead仮想マシンの/etc/cron.d
ディレクトリで定義します。
MailHogの設定
MailHogを使用すると、実際に受信者にメールを送信しなくても、送信メールを傍受して調査できます。使用するには、以下のメール設定を使用するためアプリケーションの.env
ファイルを更新します。
MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MailHogを設定したら、http://localhost:8025
にあるMailHogダッシュボードにアクセスできます。
Minioの設定
Minioは、Amazon
S3互換のAPIを備えたオープンソースのオブジェクトストレージサーバです。Minioをインストールするには、Homestead.yaml
ファイルのオプション機能セクションで以下の設定オプションへ変更してください。
minio: true
デフォルトでは、Minioはポート9600で使用できます。http://localhost:9600
にアクセスし、Minioコントロールパネルを表示できます。デフォルトのアクセスキーはhomestead
、秘密キーはsecretkey
です。Minioにアクセスするときは、常にリージョンus-east-1
を使用する必要があります。
Minioを使用するには、アプリケーションのconfig/filesystems.php
設定ファイルで、S3ディスク設定を調整する必要があります。ディスク設定にuse_path_style_endpoint
オプションを追加し、url
キーをendpoint
へ変更する必要があります。
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'endpoint' => env('AWS_URL'),
'use_path_style_endpoint' => true,
]
最後に、.env
ファイルに次のオプションがあることを確認してください。
AWS_ACCESS_KEY_ID=homestead
AWS_SECRET_ACCESS_KEY=secretkey
AWS_DEFAULT_REGION=us-east-1
AWS_URL=http://localhost:9600
Minioを利用した「S3」バケットをプロビジョニングするには、Homestead.yaml
ファイルにbuckets
ディレクティブを追加します。バケットを定義したら、ターミナルでvagrant reload --provision
コマンドを実行する必要があります。
buckets:
- name: your-bucket
policy: public
- name: your-private-bucket
policy: none
サポートしているpolicy
値は、none
、download
、upload
、public
です。
Laravel Dusk
Homestead内でLaravelDuskテストを実行するには、Homestead設定でwebdriver
機能を有効にする必要があります。
features:
- webdriver: true
webdriver
機能を有効にした後は、ターミナルでvagrant reload --provision
コマンドを実行する必要があります。
環境の共有
現在取り組んでいるものを同僚やクライアントと共有したい場合があります。Vagrantには、vagrant share
コマンドを介したこれに対する組み込みのサポートがあります。ただし、Homestead.yaml
ファイルで複数のサイトを構成している場合には機能しません。
この問題を解決するため、Homesteadは独自のshare
コマンドを用意しています。使い始めるには、vagrant ssh
によりHomestead仮想マシンへSSH接続し、share homestead.test
コマンドを実行します。このコマンドは、Homestead.yaml
構成ファイルのhomestead.test
サイトを共有します。homestead.test
の代わりに他の設定済みサイトを使用できます。
share homestead.test
コマンドを実行すると、アクティビティログと共有サイトの一般公開されているURLを含むNgrok画面が表示されます。カスタムリージョン、サブドメイン、またはその他のNgrokランタイムオプションを指定する場合は、それらをshare
コマンドへ追加できます。
share homestead.test -region=eu -subdomain=laravel
Warning!! Vagrantは本質的に安全ではなく、
share
コマンドを実行するときに仮想マシンをインターネットに公開していることを忘れないでください。
デバッグとプロファイリング
Xdebugを使用したWebリクエストのデバッグ
Homesteadは、Xdebugを使用したステップデバッグのサポートを用意しています。たとえば、ブラウザでページにアクセスすると、PHPがIDEに接続し、実行中のコードを検査および変更できるようになります。
Xdebugはデフォルトではじめから実行しており、接続を受け付ける準備ができています。CLIでXdebugを有効にする必要がある場合は、Homestead仮想マシン内でsudo php enmod xdebug
コマンドを実行します。次に、IDEの指示に従ってデバッグを有効にします。最後に、拡張機能またはブックマークレットを使用してXdebugをトリガーするようにブラウザを構成します。
Warning!! Xdebugを使用すると、PHPの実行速度が大幅に低下します。Xdebugを無効にするには、Homestead仮想マシン内で
sudo phpdismod xdebug
を実行し、それからFPMサービスを再起動します。
Xdebugの自動起動
Webサーバにリクエストを送る機能テストをデバッグする場合、カスタムヘッダまたはCookieを用いデバッグをトリガーするようテストを変更するよりも、デバッグを自動開始する方が簡単です。Xdebugを強制的に自動で開始するには、Homestead仮想マシン内の/etc/php/7.x/fpm/conf.d/20-xdebug.ini
ファイルを変更し、次の構成を追加します。
; Homestead.yamlでIPアドレスの異なるサブネットを指定している場合、このアドレスは異なるでしょう
xdebug.client_host = 192.168.10.1
xdebug.mode = debug
xdebug.start_with_request = yes
CLIアプリケーションのデバッグ
PHP
CLIアプリケーションをデバッグするには、Homestead仮想マシン内でxphp
シェルエイリアスを使用します。
xphp /path/to/script
Blackfireを使用したアプリケーションのプロファイリング
Blackfireは、WebリクエストとCLIアプリケーションをプロファイリングするサービスです。コールグラフとタイムラインでプロファイルデータを表示するインタラクティブなユーザーインターフェイスを提供しています。開発、ステージング、および本番環境で使用するために構築されており、エンドユーザーのオーバーヘッドはありません。加えてBlackfireは、コードとphp.ini
設定のパフォーマンス、品質、およびセキュリティチェックも提供してくれます。
Blackfire Playerは、プロファイリングシナリオをスクリプト化するために、Blackfireと連携して動作できるオープンソースのWebクロール、Webテスト、およびWebスクレイピングアプリケーションです。
Blackfireを有効にするには、Homestead設定ファイルの「機能(features)」設定を使用します。
features:
- blackfire:
server_id: "server_id"
server_token: "server_value"
client_id: "client_id"
client_token: "client_value"
Blackfireサーバの接続情報とクライアントの接続情報がBlackfireアカウントで要求されます。Blackfireには、CLIツールやブラウザ拡張機能など、アプリケーションをプロファイリングするためのさまざまなオプションが用意されています。詳細については、Blackfireのドキュメントを確認してください。
ネットワークインターフェイス
Homestead.yaml
ファイルのnetworks
プロパティは、Homestead仮想マシンのネットワークインターフェイスを設定します。必要な数のインターフェイスを構成できます。
networks:
- type: "private_network"
ip: "192.168.10.20"
bridgedインターフェイスを有効にするには、ネットワークの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の拡張
Homesteadディレクトリのルートにあるafter.sh
スクリプトを使用して、Homesteadを拡張できます。このファイル内に、仮想マシンを適切に構成およびカスタマイズするために必要なシェルコマンドを追加します。
Homesteadをカスタマイズするときに、Ubuntuは、パッケージの元の構成を保持するか、新しい構成ファイルで上書きするかを尋ねる場合があります。これを回避するには、パッケージをインストールするときに以下のコマンドを使用して、Homesteadによって以前に作成された構成が上書きされないようにする必要があります。
sudo apt-get -y \
-o Dpkg::Options::="--force-confdef" \
-o Dpkg::Options::="--force-confold" \
install package-name
ユーザーのカスタマイズ
チームでHomesteadを使用するときは、Homesteadを微調整して、個人の開発スタイルに合わせて調整するのを推奨します。このためには、Homesteadディレクトリ(Homestead.yaml
ファイルを含む同じディレクトリ)のルートにuser-customizations.sh
ファイルを作成します。このファイル内で、必要なカスタマイズを行うことができます。ただし、user-customizations.sh
をバージョン管理してはいけません。
プロパイダ固有の設定
VirtualBox
natdnshostresolver
Homesteadはnatdnshostresolver
設定をデフォルトでon
に設定します。これにより、HomesteadはホストオペレーティングシステムのDNS設定を使用できるようになります。この動作をオーバーライドする場合は、次の構成オプションをHomestead.yaml
ファイルに追加します。
provider: virtualbox
natdnshostresolver: 'off'