メインコンテンツまでスキップ

Laravel Homestead

はじめに

Laravelは、PHP開発全体のエクスペリエンスを楽しいものにすることを目指しており、ローカル開発環境も含まれます。Laravel Homestead は、PHPやWebサーバー、その他のサーバーソフトウェアをローカルマシンにインストールする必要がなく、素晴らしい開発環境を提供する公式の事前パッケージ化されたVagrantボックスです。

Vagrantは、仮想マシンを管理およびプロビジョニングするためのシンプルでエレガントな方法を提供します。Vagrantボックスは完全に使い捨て可能です。何か問題が発生した場合、ボックスを破棄して数分で再作成できます!

Homesteadは、Windows、macOS、またはLinuxシステムで実行され、Nginx、PHP、MySQL、PostgreSQL、Redis、Memcached、Nodeなど、素晴らしいLaravelアプリケーションを開発するために必要なすべてのソフトウェアが含まれています。

警告

Windowsを使用している場合、ハードウェア仮想化(VT-x)を有効にする必要がある場合があります。通常、BIOSから有効にできます。UEFIシステムでHyper-Vを使用している場合、VT-xにアクセスするためにHyper-Vを無効にする必要がある場合があります。

含まれるソフトウェア

  • Ubuntu 22.04
  • Git
  • PHP 8.3
  • 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、Grunt、Gulpを含む)
  • Redis
  • Memcached
  • Beanstalkd
  • Mailpit
  • avahi
  • ngrok
  • Xdebug
  • XHProf / Tideways / XHGui
  • wp-cli

オプションのソフトウェア

  • Apache
  • Blackfire
  • Cassandra
  • Chronograf
  • CouchDB
  • Crystal & Lucky Framework
  • Elasticsearch
  • EventStoreDB
  • Flyway
  • Gearman
  • Go
  • Grafana
  • InfluxDB
  • Logstash
  • MariaDB
  • Meilisearch
  • MinIO
  • MongoDB
  • Neo4j
  • Oh My Zsh
  • Open Resty
  • PM2
  • Python
  • R
  • RabbitMQ
  • Rust
  • RVM(Ruby Version Manager)
  • Solr
  • TimescaleDB
  • Trader (PHP拡張機能)
  • Webdriver & Laravel Dusk Utilities

インストールとセットアップ

最初のステップ

Homestead環境を起動する前に、Vagrantをインストールし、以下のサポートされているプロバイダーの1つをインストールする必要があります:

これらのソフトウェアパッケージは、すべての人気のあるオペレーティングシステムに対して使いやすいビジュアルインストーラを提供しています。

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

Homestead のインストール

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

警告

Apple Silicon を使用している場合は、Parallels プロバイダが必要です。

共有フォルダの設定

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

folders:
- map: ~/code/project1
to: /home/vagrant/project1
警告

Windowsユーザーは~/パス構文を使用せず、代わりにC:\Users\user\Code\project1などのプロジェクトのフルパスを使用する必要があります。

すべてのアプリケーションを1つの大きなディレクトリにマッピングするのではなく、個々のアプリケーションをそれぞれのフォルダマッピングにマッピングする必要があります。フォルダをマッピングすると、仮想マシンはフォルダ内のすべてのファイルのディスクIOを追跡する必要があります。フォルダ内に多数のファイルがある場合、パフォーマンスが低下する可能性があります:

folders:
- map: ~/code/project1
to: /home/vagrant/project1
- map: ~/code/project2
to: /home/vagrant/project2
警告

Homesteadを使用する際に.(現在のディレクトリ)をマウントしないでください。これにより、Vagrantが現在のフォルダを/vagrantにマップしなくなり、オプションの機能が壊れたり、プロビジョニング中に予期しない結果が発生する可能性があります。

NFSを有効にするには、フォルダマッピングにtypeオプションを追加できます:

folders:
- map: ~/code/project1
to: /home/vagrant/project1
type: "nfs"
警告

WindowsでNFSを使用する場合は、vagrant-winnfsdプラグインをインストールすることを検討してください。このプラグインは、Homestead仮想マシン内のファイルとディレクトリの正しいユーザー/グループ権限を維持します。

VagrantのSynced Foldersでサポートされているオプションを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

Homestead仮想マシンをプロビジョニングした後にsitesプロパティを変更した場合は、ターミナルでvagrant reload --provisionコマンドを実行して、仮想マシン上のNginx構成を更新する必要があります。

警告

ホームステッドスクリプトはできるだけ冪等性を持つように構築されています。ただし、プロビジョニング中に問題が発生した場合は、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 サイトの "domains" をマシンの hosts ファイルに追加することができます。hosts ファイルは、Homestead サイトへのリクエストを Homestead 仮想マシンにリダイレクトします。macOS と Linux では、このファイルは /etc/hosts にあります。Windows では、C:\Windows\System32\drivers\etc\hosts にあります。このファイルに追加する行は次のようになります:

    192.168.56.56  homestead.test

Homestead.yaml ファイルで設定された IP アドレスがリストされていることを確認してください。ドメインを hosts ファイルに追加し、Vagrant ボックスを起動したら、ウェブブラウザを使用してサイトにアクセスできるようになります:

http://homestead.test

サービスの設定

Homestead はデフォルトでいくつかのサービスを起動しますが、プロビジョニング中に有効または無効にするサービスをカスタマイズすることができます。たとえば、Homestead.yaml ファイル内の services オプションを変更して、PostgreSQL を有効にし、MySQL を無効にすることができます:

services:
- enabled:
- "postgresql"
- disabled:
- "mysql"

指定されたサービスは、enabled および disabled ディレクティブ内の順序に基づいて開始または停止されます。

Vagrant ボックスの起動

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

マシンを破棄するには、vagrant destroyコマンドを使用できます。

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

Homesteadをグローバルにインストールしてすべてのプロジェクトで同じHomestead仮想マシンを共有する代わりに、管理する各プロジェクトに対してHomesteadインスタンスを構成することができます。プロジェクトごとにHomesteadをインストールすると、プロジェクトのリポジトリをクローンした後すぐに他のプロジェクトメンバーがvagrant upできるようにするため、Vagrantfileをプロジェクトに同梱することができます。

Composerパッケージマネージャを使用してプロジェクトにHomesteadをインストールできます:

composer require laravel/homestead --dev

Homesteadをインストールしたら、Homesteadのmakeコマンドを呼び出してプロジェクト用のVagrantfileHomestead.yamlファイルを生成してください。これらのファイルはプロジェクトのルートに配置されます。makeコマンドはHomestead.yamlファイル内のsitesおよびfoldersディレクティブを自動的に構成します:

# macOS / Linux...
php vendor/bin/homestead make

# Windows...
vendor\\bin\\homestead make

次に、ターミナルでvagrant upコマンドを実行し、ブラウザでhttp://homestead.testでプロジェクトにアクセスしてください。注意:homestead.testのようなドメインを使用していない場合は、homestead.testまたは選択したドメインの/etc/hostsファイルエントリを追加する必要があります。自動的なホスト名の解決を使用していない場合。

オプション機能のインストール

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
- dragonflydb: true
- elasticsearch:
version: 7.9.0
- eventstore: true
version: 21.2.0
- flyway: true
- gearman: true
- golang: true
- grafana: true
- influxdb: true
- logstash: true
- mariadb: true
- meilisearch: true
- minio: true
- mongodb: true
- neo4j: true
- ohmyzsh: true
- openresty: true
- pm2: true
- python: true
- r-base: true
- rabbitmq: true
- rustc: true
- rvm: true
- solr: true
- timescaledb: true
- trader: true
- webdriver: true

Elasticsearch

Elasticsearchのサポートされているバージョンを指定できます。これは正確なバージョン番号(major.minor.patch)である必要があります。デフォルトのインストールでは、'homestead'という名前のクラスタが作成されます。Elasticsearchにはオペレーティングシステムのメモリの半分以上を与えてはいけないので、Homestead仮想マシンにはElasticsearchの割り当て量の2倍以上があることを確認してください。

注記

Elasticsearchのドキュメントを参照して、構成をカスタマイズする方法を学んでください。

MariaDB

MariaDBを有効にすると、MySQLが削除され、MariaDBがインストールされます。通常、MariaDBはMySQLの代替として機能するため、アプリケーションのデータベース構成で引き続き mysql データベースドライバを使用する必要があります。

MongoDB

デフォルトのMongoDBインストールでは、データベースのユーザー名が homestead に、対応するパスワードが secret に設定されます。

Neo4j

デフォルトのNeo4jインストールでは、データベースのユーザー名が homestead に、対応するパスワードが secret に設定されます。Neo4jブラウザにアクセスするには、Webブラウザを使用して http://homestead.test:7474 を訪れてください。ポート 7687(Bolt)、7474(HTTP)、7473(HTTPS)は、Neo4jクライアントからのリクエストを受け付ける準備が整っています。

エイリアス

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の最新の安定リリースバージョンは、HomesteadのGitHubリリースページで確認できます。

Homesteadをプロジェクトのcomposer.jsonファイル経由でインストールした場合は、composer.jsonファイルに"laravel/homestead": "^12"が含まれていることを確認し、依存関係を更新してください:

composer update

次に、vagrant box updateコマンドを使用してVagrantボックスを更新してください:

vagrant box update

Vagrantボックスを更新した後は、Homesteadディレクトリからbash init.shコマンドを実行してHomesteadの追加構成ファイルを更新する必要があります。既存のHomestead.yamlafter.shaliasesファイルを上書きするかどうかを尋ねられます:

# macOS / Linux...
bash init.sh

# Windows...
init.bat

最後に、最新のVagrantインストールを利用するためにHomestead仮想マシンを再生成する必要があります:

vagrant up

日常の使用

SSH経由で接続

Homesteadディレクトリからvagrant sshターミナルコマンドを実行することで、仮想マシンにSSHで接続できます。

追加のサイトの追加

Homestead環境がプロビジョニングされて実行されている場合、他のLaravelプロジェクト用に追加のNginxサイトを追加したい場合があります。1つのHomestead環境で複数のLaravelプロジェクトを実行できます。追加のサイトを追加するには、Homestead.yamlファイルにサイトを追加します。

sites:
- map: homestead.test
to: /home/vagrant/project1/public
- map: another.test
to: /home/vagrant/project2/public
警告

サイトを追加する前に、プロジェクトのディレクトリにフォルダマッピングを設定していることを確認してください。

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

サイトを追加したら、Homesteadディレクトリからvagrant reload --provisionターミナルコマンドを実行してください。

サイトの種類

Homesteadはいくつかの異なる"タイプ"のサイトをサポートしており、Laravelに基づかないプロジェクトを簡単に実行できます。たとえば、statamicサイトタイプを使用してHomesteadにStatamicアプリケーションを簡単に追加できます:

sites:
- map: statamic.test
to: /home/vagrant/my-symfony-project/web
type: "statamic"

利用可能なサイトタイプは、apacheapache-proxyapigilityexpressivelaravel(デフォルト)、proxy(nginx用)、silverstripestatamicsymfony2symfony4、および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に
  • Mailpit: 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"、および"8.3"(デフォルト)です:```

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
php8.3 artisan list

Homestead仮想マシン内から、CLIで使用するPHPのデフォルトバージョンを変更するには、次のコマンドを実行します:

php56
php70
php71
php72
php73
php74
php80
php81
php82
php83

データベースへの接続

homesteadデータベースは、MySQLとPostgreSQLの両方にデフォルトで構成されています。ホストマシンのデータベースクライアントからMySQLまたはPostgreSQLデータベースに接続するには、127.0.0.1のポート33060(MySQL)または54320(PostgreSQL)に接続する必要があります。両方のデータベースのユーザー名とパスワードはhomestead / secretです。

警告

ホストマシンからデータベースに接続する際には、これらの非標準ポートのみを使用する必要があります。Laravelアプリケーションのdatabase構成ファイルでは、Laravelが仮想マシン内で実行されているため、デフォルトの3306および5432ポートを使用します。

データベースのバックアップ

Homesteadは、Homestead仮想マシンが破棄されるときにデータベースを自動バックアップできます。この機能を利用するには、Vagrant 2.1.0以上を使用している必要があります。または、古いバージョンのVagrantを使用している場合は、vagrant-triggersプラグインをインストールする必要があります。自動データベースバックアップを有効にするには、Homestead.yamlファイルに次の行を追加します:

    backup: true

設定が完了すると、vagrant destroyコマンドが実行されるとHomesteadはデータベースを.backup/mysql_backupおよび.backup/postgres_backupディレクトリにエクスポートします。これらのディレクトリは、Homesteadをインストールしたフォルダ内にあるか、プロジェクトごとのインストール方法を使用している場合はプロジェクトのルートにあります。

Cronスケジュールの設定

Laravelは、schedule:run Artisanコマンドを1分ごとに実行するようスケジュールすることで、cronジョブをスケジュールする便利な方法を提供します。schedule:runコマンドは、routes/console.phpファイルで定義されたジョブスケジュールを調べて、実行する予定のタスクを決定します。

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

sites:
- map: homestead.test
to: /home/vagrant/project1/public
schedule: true

サイトの cron ジョブは、Homestead 仮想マシンの /etc/cron.d ディレクトリに定義されます。

Mailpit の設定

Mailpit を使用すると、送信中のメールを中継して確認することができます。実際にメールを受信者に送信せずに確認できます。開始するには、アプリケーションの .env ファイルを以下のメール設定に更新してください:

MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

Mailpit を設定したら、Mailpit ダッシュボードに http://localhost:8025 からアクセスできます。

Minio の設定

Minio は、Amazon S3 互換の API を持つオープンソースのオブジェクトストレージサーバーです。Minio をインストールするには、Homestead.yaml ファイルを features セクションで以下の構成オプションで更新してください:

    minio: true

デフォルトでは、Minio はポート 9600 で利用可能です。Minio コントロールパネルにアクセスするには、http://localhost:9600 を訪れてください。デフォルトのアクセスキーは homestead、デフォルトのシークレットキーは secretkey です。Minio にアクセスする際は、常にリージョンを us-east-1 として使用する必要があります。

Minio を使用するためには、.env ファイルに以下のオプションがあることを確認してください:

AWS_USE_PATH_STYLE_ENDPOINT=true
AWS_ENDPOINT=http://localhost:9600
AWS_ACCESS_KEY_ID=homestead
AWS_SECRET_ACCESS_KEY=secretkey
AWS_DEFAULT_REGION=us-east-1

Minio パワードの "S3" バケットをプロビジョニングするには、Homestead.yaml ファイルに buckets ディレクティブを追加してください。バケットを定義した後は、ターミナルで vagrant reload --provision コマンドを実行する必要があります:

buckets:
- name: your-bucket
policy: public
- name: your-private-bucket
policy: none

サポートされる policy 値には、nonedownloaduploadpublic が含まれます。

Laravel Dusk

Homestead 内で Laravel Dusk テストを実行するには、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

コマンドを実行した後、Ngrok の画面が表示され、共有サイトのアクティビティログと公開アクセス可能な URL が表示されます。カスタムリージョン、サブドメイン、または他の Ngrok ランタイムオプションを指定する場合は、share コマンドに追加できます:

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

share コマンドの代わりに sshare コマンドを使用すると、HTTPS 経由でコンテンツを共有する必要がある場合にそれを有効にすることができます。

警告

Vagrant は元々セキュリティに問題があり、share コマンドを実行すると仮想マシンをインターネットに公開することになります。

デバッグとプロファイリング

Xdebug を使用した Web リクエストのデバッグ

Homestead には Xdebug を使用したステップデバッグのサポートが含まれています。たとえば、ブラウザでページにアクセスし、PHP が実行中のコードの検査と変更を許可するために IDE に接続します。

デフォルトでは、Xdebug は既に実行されており、接続を受け入れる準備が整っています。CLI で Xdebug を有効にする必要がある場合は、Homestead 仮想マシン内で sudo phpenmod xdebug コマンドを実行します。次に、IDE の指示に従ってデバッグを有効にします。最後に、ブラウザを拡張機能や ブックマークレット で Xdebug をトリガーするように構成します。

警告

XdebugはPHPの実行速度を著しく遅くします。Xdebugを無効にするには、Homestead仮想マシン内でsudo phpdismod xdebugを実行し、FPMサービスを再起動してください。

Xdebugの自動起動

Webサーバーにリクエストを行う機能テストをデバッグする際は、テストを変更してデバッグをトリガーするためのカスタムヘッダーまたはクッキーを通過させるよりも、デバッグを自動的に開始する方が簡単です。Xdebugを自動的に開始するには、Homestead仮想マシン内の/etc/php/7.x/fpm/conf.d/20-xdebug.iniファイルを変更し、以下の構成を追加してください:

; If Homestead.yaml contains a different subnet for the IP address, this address may be different...
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は、Webクローリング、Webテスト、Webスクレイピングアプリケーションであり、Blackfireと連携してプロファイリングシナリオをスクリプト化することができます。

Blackfireを有効にするには、Homestead構成ファイルで「features」設定を使用してください:

features:
- blackfire:
server_id: "server_id"
server_token: "server_value"
client_id: "client_id"
client_token: "client_value"

Blackfireサーバーの資格情報とクライアントの資格情報は、Blackfireアカウントが必要です。CLIツールやブラウザ拡張機能を含む、さまざまなオプションでアプリケーションをプロファイリングすることができます。詳細については、Blackfireのドキュメントを参照してください

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

Homestead.yaml ファイルの networks プロパティは、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)"

ネットワークが使用するデバイスを更新するには、ネットワークの構成に dev オプションを追加できます。デフォルトの dev 値は eth0 です:

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

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.yaml ファイルと同じディレクトリに user-customizations.sh ファイルを作成できます。このファイル内で、必要なカスタマイズを行うことができます。ただし、user-customizations.sh はバージョン管理されていないはずです。

プロバイダ固有の設定

VirtualBox

natdnshostresolver

デフォルトでは、Homestead は natdnshostresolver 設定を on に設定します。これにより、Homestead はホストオペレーティングシステムの DNS 設定を使用できます。この動作をオーバーライドしたい場合は、次の構成オプションを Homestead.yaml ファイルに追加してください:

provider: virtualbox
natdnshostresolver: 'off'