サイトを更新しています。 数日間、レイアウトや翻訳に不具合が出ることがあります。ドキュメントは引き続きご利用いただけます。表示が崩れている場合は、後ほど再読み込みしてください。

ホーム Laravel 10.x Laravel Homestead

Laravel Homestead

10.x 2026年3月7日

#はじめに

LaravelはPHP開発の体験全体を快適にすることを目指しており、ローカル開発環境もその一部です。Laravel Homesteadは公式のパッケージ済みVagrantボックスで、ローカルマシンにPHPやウェブサーバー、その他のサーバーソフトをインストールせずに素晴らしい開発環境を提供します。

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を無効にする必要があります。

#含まれるソフトウェア

<style> #software-list > ul { column-count: 2; -moz-column-count: 2; -webkit-column-count: 2; column-gap: 5em; -moz-column-gap: 5em; -webkit-column-gap: 5em; line-height: 1.9; } </style>
  • 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

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

<style> #software-list > ul { column-count: 2; -moz-column-count: 2; -webkit-column-count: 2; column-gap: 5em; -moz-column-gap: 5em; -webkit-column-gap: 5em; line-height: 1.9; } </style>
  • 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ユーティリティ

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

#最初のステップ

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

これらのソフトウェアはすべて、主要なOS向けに使いやすいビジュアルインストーラーを提供しています。

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

#Homesteadのインストール

Homesteadはホストマシンにリポジトリをクローンしてインストールできます。Homesteadの仮想マシンはすべてのLaravelアプリケーションのホストになるため、ホームディレクトリ内のHomesteadフォルダにクローンすることを推奨します。このドキュメントではこのディレクトリを「Homesteadディレクトリ」と呼びます。

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

Laravel Homesteadリポジトリをクローンしたら、releaseブランチをチェックアウトしてください。このブランチには常に最新の安定版が含まれています。

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.yamlfoldersプロパティにはHomestead環境と共有したいフォルダをすべてリストします。これらのフォルダ内のファイルが変更されると、ローカルマシンとHomestead仮想環境間で同期されます。必要なだけ共有フォルダを設定できます。

folders:
    - map: ~/code/project1
      to: /home/vagrant/project1
Внимание

Windowsユーザーは~/のパス構文を使わず、C:\Users\user\Code\project1のようにプロジェクトのフルパスを使うべきです。

個々のアプリケーションごとにフォルダマッピングを設定し、すべてのアプリケーションを含む大きなディレクトリを一括でマッピングしないでください。フォルダをマッピングすると、仮想マシンはフォルダ内のすべてのファイルのディスク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.yamlsitesプロパティでHomestead環境内のフォルダに「ドメイン」を簡単にマッピングできます。サンプルのサイト設定がHomestead.yamlに含まれています。必要に応じて複数のサイトを追加可能で、Homesteadは作業中のすべてのLaravelアプリケーションに便利な仮想環境として機能します。

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

Homestead仮想マシンのプロビジョニング後にsitesプロパティを変更した場合は、ターミナルでvagrant reload --provisionコマンドを実行して仮想マシンのNginx設定を更新してください。

Внимание

Homesteadスクリプトは可能な限り冪等性を保つよう設計されていますが、プロビジョニングで問題が起きた場合はvagrant destroy && vagrant upコマンドでマシンを破棄して再構築してください。

#ホスト名解決

HomesteadはmDNSを使ってホスト名を公開し、自動ホスト解決を行います。Homestead.yamlhostname: homesteadを設定すると、ホストはhomestead.localでアクセス可能です。macOS、iOS、LinuxデスクトップはデフォルトでmDNSをサポートしています。Windowsの場合はBonjour Print Services for Windowsをインストールする必要があります。

自動ホスト名はプロジェクト単位のインストールで最適に機能します。単一のHomesteadインスタンスで複数サイトをホストする場合は、マシンの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ファイルに追加しVagrantボックスを起動すれば、ブラウザからサイトにアクセスできます。

http://homestead.test

#サービスの設定

Homesteadはデフォルトでいくつかのサービスを起動しますが、プロビジョニング時に有効・無効をカスタマイズできます。例えば、Homestead.yamlservicesオプションを変更してPostgreSQLを有効にし、MySQLを無効にできます。

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

指定したサービスはenableddisabledディレクティブの順序に従って起動または停止されます。

#Vagrantボックスの起動

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

マシンを破棄するにはvagrant destroyコマンドを使います。

#プロジェクト単位のインストール

Homesteadをグローバルにインストールしてすべてのプロジェクトで同じ仮想マシンを共有する代わりに、プロジェクトごとにHomesteadインスタンスを設定できます。プロジェクト単位のインストールは、プロジェクトのリポジトリをクローンした後すぐにvagrant upできるようにVagrantfileを同梱したい場合に便利です。

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

composer require laravel/homestead --dev

Homesteadをインストールしたら、makeコマンドを実行してプロジェクト用のVagrantfileHomestead.yamlを生成します。これらのファイルはプロジェクトのルートに配置され、makeコマンドはHomestead.yamlsitesfoldersディレクティブを自動設定します。

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

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

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

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

オプションソフトウェアはHomestead.yamlfeaturesオプションでインストールします。ほとんどの機能はブール値で有効・無効を切り替えられ、一部は複数の設定オプションを指定できます。

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 に割り当てるメモリはOSの半分を超えないようにしてください。そのため、Homestead の仮想マシンには Elasticsearch の割り当ての少なくとも2倍のメモリが必要です。

Примечание

Elasticsearch ドキュメントを参照して、設定のカスタマイズ方法を確認してください。

#MariaDB

MariaDB を有効にすると MySQL が削除され、MariaDB がインストールされます。MariaDB は通常 MySQL の代替として動作するため、アプリケーションのデータベース設定では引き続き mysql ドライバーを使用してください。

#MongoDB

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

#Neo4j

デフォルトの Neo4j インストールでは、データベースのユーザー名が homestead、対応するパスワードが secret に設定されます。Neo4j ブラウザにアクセスするには、ウェブブラウザで 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 のGitHub リリースページで確認できます。

プロジェクトの composer.json ファイル経由で Homestead をインストールしている場合は、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 サイトタイプを使って Statamic アプリケーションを簡単に追加できます。

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

利用可能なサイトタイプは、apacheapache-proxyapigilityexpressivelaravel(デフォルト)、proxy(nginx 用)、silverstripestatamicsymfony2symfony4zf です。

#サイトのパラメータ

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 設定に追加のポート転送を定義できます。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

#データベースへの接続

MySQL と PostgreSQL の両方に対して homestead データベースが初期設定されています。ホストマシンのデータベースクライアントから MySQL または PostgreSQL に接続する場合は、127.0.0.1 のポート 33060(MySQL)または 54320(PostgreSQL)に接続してください。両データベースのユーザー名とパスワードは homestead / secret です。

Внимание

これらの非標準ポートはホストマシンからデータベースに接続する場合のみ使用してください。Laravel アプリケーション内では、仮想マシン内で動作しているため、database 設定ファイルではデフォルトの 3306 と 5432 ポートを使用します。

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

Homestead は仮想マシンが破棄される際に自動でデータベースをバックアップできます。この機能を使うには Vagrant 2.1.0 以降が必要です。古いバージョンを使っている場合は vagrant-triggers プラグインをインストールしてください。自動バックアップを有効にするには、Homestead.yaml に以下の行を追加します。

backup: true

設定後、vagrant destroy コマンド実行時にデータベースが .backup/mysql_backup.backup/postgres_backup ディレクトリにエクスポートされます。これらのディレクトリは Homestead をインストールしたフォルダか、プロジェクト単位のインストールを使っている場合はプロジェクトのルートにあります。

#Cron スケジュールの設定

Laravel は単一の schedule:run Artisan コマンドを毎分実行することで、cron ジョブのスケジューリングを簡単に行えます。schedule:runApp\Console\Kernel クラスで定義されたジョブスケジュールを確認し、実行すべきタスクを判断します。

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 を設定したら、http://localhost:8025 でダッシュボードにアクセスできます。

#Minio の設定

Minio は Amazon S3 互換 API を持つオープンソースのオブジェクトストレージサーバーです。Minio をインストールするには、Homestead.yamlfeatures セクションに以下の設定を追加してください。

minio: true

デフォルトで Minio はポート 9600 で利用可能です。http://localhost:9600 にアクセスするとコントロールパネルが開きます。デフォルトのアクセスキーは 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.yamlbuckets ディレクティブを追加します。バケットを定義したら、ターミナルで 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 コマンドが含まれています。始めるには、Homestead の仮想マシンに SSH 接続する ために vagrant ssh を実行し、share homestead.test コマンドを実行してください。
このコマンドは Homestead.yaml 設定ファイルで定義されている homestead.test サイトを共有します。homestead.test の代わりに、設定済みの別のサイトを指定できます:

share homestead.test

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

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

HTTPS で共有したい場合は、share の代わりに sshare コマンドを使うと可能です。

Внимание

Vagrant は本質的にセキュリティが弱いため、share コマンドを実行すると仮想マシンがインターネットに公開されることを忘れないでください。

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

#Xdebug を使ったウェブリクエストのデバッグ

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

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

Внимание

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

#Xdebug の自動起動

ウェブサーバーへのリクエストを行う機能テストをデバッグする際、カスタムヘッダーやクッキーを渡してデバッグをトリガーするよりも、自動的にデバッグを開始する方が簡単です。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 はウェブリクエストや CLI アプリケーションのプロファイリングサービスです。コールグラフやタイムラインでプロファイルデータを表示するインタラクティブなユーザーインターフェースを提供します。開発、ステージング、本番環境での使用を想定しており、エンドユーザーへの負荷はありません。さらに、Blackfire はコードや php.ini の設定に対するパフォーマンス、品質、セキュリティのチェックも行います。

Blackfire Player はオープンソースのウェブクロール、ウェブテスト、ウェブスクレイピングアプリケーションで、Blackfire と連携してプロファイリングシナリオのスクリプト化が可能です。

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"

ブリッジ接続を有効にするには、ネットワークの 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 オプションを追加できます。デフォルトの deveth0 です。

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

#プロバイダー固有の設定

#VirtualBox

#natdnshostresolver

デフォルトで、Homestead は natdnshostresolver 設定を on にしています。これにより、Homestead はホストOSの DNS 設定を利用できます。この動作を変更したい場合は、Homestead.yaml ファイルに以下の設定を追加してください。

provider: virtualbox
natdnshostresolver: 'off'