コンテンツへスキップ

Laravel Homestead

イントロダクション

Laravelは、ローカル開発環境を含め、PHP開発体験全体を楽しいものにするよう努めています。Laravel Homesteadは、公式のパッケージ済みVagrant Boxで、ローカルマシンにPHP、Webサーバ、その他のサーバソフトウェアをインストールすることなく、素晴らしい開発環境を提供します。

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

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ユーティリティ

インストールと設定

はじめに

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

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

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

Homesteadのインストール

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

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

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

1cd ~/Homestead
2 
3git checkout release

次に、Homesteadディレクトリからbash init.shコマンドを実行して、Homestead.yaml設定ファイルを作成します。Homestead.yamlファイルは、Homesteadインストールのすべての設定を行う場所です。このファイルはHomesteadディレクトリに配置されます。

1# macOS / Linux...
2bash init.sh
3 
4# Windows...
5init.bat

Homesteadの設定

プロバイダの設定

Homestead.yamlファイルのproviderキーは、使用するVagrantプロバイダ(virtualboxまたはparallels)を示します。

1provider: virtualbox

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

共有フォルダの設定

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

1folders:
2 - map: ~/code/project1
3 to: /home/vagrant/project1

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

すべてのアプリケーションを含む単一の大きなディレクトリをマッピングするのではなく、個々のアプリケーションを常に独自のフォルダマッピングにマップする必要があります。フォルダをマップすると、仮想マシンはフォルダ内のすべてのファイルのディスクI/Oを追跡し続ける必要があります。フォルダ内に多数のファイルがあると、パフォーマンスが低下する可能性があります。

1folders:
2 - map: ~/code/project1
3 to: /home/vagrant/project1
4 - map: ~/code/project2
5 to: /home/vagrant/project2

Homesteadを使用する場合、.(カレントディレクトリ)をマウントしてはいけません。これにより、Vagrantはカレントフォルダを/vagrantにマッピングしなくなり、オプション機能が壊れ、プロビジョニング中に予期しない結果を引き起こす原因になります。

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

1folders:
2 - map: ~/code/project1
3 to: /home/vagrant/project1
4 type: "nfs"

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

VagrantのSynced Foldersでサポートされているオプションを、optionsキーの下にリストすることで渡すこともできます。

1folders:
2 - map: ~/code/project1
3 to: /home/vagrant/project1
4 type: "rsync"
5 options:
6 rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
7 rsync__exclude: ["node_modules"]

Nginxサイトの設定

Nginxに詳しくなくても問題ありません。Homestead.yamlファイルのsitesプロパティを使用すると、「ドメイン」をHomestead環境上のフォルダに簡単にマップできます。サンプルサイト設定がHomestead.yamlファイルに含まれています。繰り返しになりますが、Homestead環境には必要なだけサイトを追加できます。Homesteadは、作業しているすべてのLaravelアプリケーションにとって、便利で仮想化された環境として機能します。

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

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

Homesteadスクリプトは、可能な限り冪等になるように作られています。しかし、プロビジョニング中に問題が発生した場合は、vagrant destroy && vagrant upコマンドを実行してマシンを破棄し、再構築する必要があります。

ホスト名の解決

Homesteadは、自動ホスト解決のためにmDNSを使用してホスト名を公開します。Homestead.yamlファイルにhostname: homesteadと設定すると、ホストはhomestead.localで利用可能になります。macOS、iOS、およびLinuxデスクトップディストリビューションには、デフォルトでmDNSサポートが含まれています。Windowsを使用している場合は、Bonjour Print Services for Windowsをインストールする必要があります。

自動ホスト名は、Homesteadのプロジェクトごとのインストールに最適です。単一のHomesteadインスタンスで複数のサイトをホストする場合は、Webサイトの「ドメイン」をマシンのhostsファイルに追加できます。hostsファイルは、HomesteadサイトへのリクエストをHomestead仮想マシンにリダイレクトします。macOSとLinuxでは、このファイルは/etc/hostsにあります。Windowsでは、C:\Windows\System32\drivers\etc\hostsにあります。このファイルに追加する行は次のようになります。

1192.168.56.56 homestead.test

リストされているIPアドレスが、Homestead.yamlファイルで設定したものと同じであることを確認してください。ドメインをhostsファイルに追加し、Vagrant Boxを起動すると、Webブラウザ経由でサイトにアクセスできるようになります。

1http://homestead.test

サービスの設定

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

1services:
2 - enabled:
3 - "postgresql"
4 - disabled:
5 - "mysql"

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

Vagrant Boxの起動

Homestead.yamlを好みに合わせて編集したら、Homesteadディレクトリからvagrant upコマンドを実行します。Vagrantは仮想マシンを起動し、共有フォルダとNginxサイトを自動的に設定します。

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

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

Homesteadをグローバルにインストールし、すべてのプロジェクトで同じHomestead仮想マシンを共有する代わりに、管理する各プロジェクトに対してHomesteadインスタンスを設定することもできます。プロジェクトごとにHomesteadをインストールすると、プロジェクトにVagrantfileを同梱できるため、プロジェクトで作業する他の人がプロジェクトのリポジトリをクローンした直後にvagrant upできるようになるという利点があります。

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

1composer require laravel/homestead --dev

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

1# macOS / Linux...
2php vendor/bin/homestead make
3 
4# Windows...
5vendor\\bin\\homestead make

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

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

オプションのソフトウェアは、Homestead.yamlファイル内のfeaturesオプションを使用してインストールされます。ほとんどの機能はブール値で有効または無効にできますが、一部の機能では複数の設定オプションが可能です。

1features:
2 - blackfire:
3 server_id: "server_id"
4 server_token: "server_value"
5 client_id: "client_id"
6 client_token: "client_value"
7 - cassandra: true
8 - chronograf: true
9 - couchdb: true
10 - crystal: true
11 - dragonflydb: true
12 - elasticsearch:
13 version: 7.9.0
14 - eventstore: true
15 version: 21.2.0
16 - flyway: true
17 - gearman: true
18 - golang: true
19 - grafana: true
20 - influxdb: true
21 - logstash: true
22 - mariadb: true
23 - meilisearch: true
24 - minio: true
25 - mongodb: true
26 - neo4j: true
27 - ohmyzsh: true
28 - openresty: true
29 - pm2: true
30 - python: true
31 - r-base: true
32 - rabbitmq: true
33 - rustc: true
34 - rvm: true
35 - solr: true
36 - timescaledb: true
37 - trader: true
38 - webdriver: true

Elasticsearch

サポートされているElasticsearchのバージョンを指定できます。これは正確なバージョン番号(メジャー.マイナー.パッチ)である必要があります。デフォルトのインストールでは、「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ディレクトリ内のaliasesファイルを変更することで、Homestead仮想マシンにBashエイリアスを追加できます。

1alias c='clear'
2alias ..='cd ..'

aliasesファイルを更新した後、vagrant reload --provisionコマンドを使用してHomestead仮想マシンを再プロビジョニングする必要があります。これにより、新しいエイリアスがマシンで利用可能になります。

Homesteadのアップデート

Homesteadの更新を開始する前に、Homesteadディレクトリで次のコマンドを実行して、現在の仮想マシンを削除したことを確認してください。

1vagrant destroy

次に、Homesteadのソースコードを更新する必要があります。リポジトリをクローンした場合は、最初にリポジトリをクローンした場所で次のコマンドを実行できます。

1git fetch
2 
3git pull origin release

これらのコマンドは、GitHubリポジトリから最新のHomesteadコードをプルし、最新のタグを取得し、最新のタグ付きリリースをチェックアウトします。最新の安定版リリースバージョンは、HomesteadのGitHubリリース・ページで確認できます。

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

1composer update

次に、vagrant box updateコマンドを使用してVagrant Boxを更新する必要があります。

1vagrant box update

Vagrant Boxを更新した後、Homesteadディレクトリからbash init.shコマンドを実行して、Homesteadの追加設定ファイルを更新する必要があります。既存のHomestead.yamlafter.sh、およびaliasesファイルを上書きするかどうか尋ねられます。

1# macOS / Linux...
2bash init.sh
3 
4# Windows...
5init.bat

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

1vagrant up

普段の使い方

SSHによる接続

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

追加サイトの登録

Homestead環境がプロビジョニングされ、実行されたら、他のLaravelプロジェクト用に追加のNginxサイトを追加したい場合があります。単一のHomestead環境で、好きなだけ多くのLaravelプロジェクトを実行できます。追加のサイトを追加するには、Homestead.yamlファイルにサイトを追加します。

1sites:
2 - map: homestead.test
3 to: /home/vagrant/project1/public
4 - map: another.test
5 to: /home/vagrant/project2/public

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

Vagrantが「hosts」ファイルを自動的に管理していない場合は、新しいサイトをそのファイルに追加する必要があるかもしれません。macOSとLinuxでは、このファイルは/etc/hostsにあります。Windowsでは、C:\Windows\System32\drivers\etc\hostsにあります。

1192.168.56.56 homestead.test
2192.168.56.56 another.test

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

サイトの種類

Homesteadは、Laravelベースではないプロジェクトを簡単に実行できるように、いくつかの「タイプ」のサイトをサポートしています。たとえば、statamicサイトタイプを使用して、StatamicアプリケーションをHomesteadに簡単に追加できます。

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

利用可能なサイトタイプは、apacheapache-proxyapigilityexpressivelaravel(デフォルト)、proxy(Nginx用)、silverstripestatamicsymfony2symfony4、およびzfです。

サイトパラメータ

paramsサイトディレクティブを介して、サイトに追加のNginx fastcgi_param値を追加できます。

1sites:
2 - map: homestead.test
3 to: /home/vagrant/project1/public
4 params:
5 - key: FOO
6 value: BAR

環境変数

Homestead.yamlファイルにグローバル環境変数を追加して定義できます。

1variables:
2 - key: APP_ENV
3 value: local
4 - key: FOO
5 value: bar

Homestead.yamlファイルを更新した後、vagrant reload --provisionコマンドを実行してマシンを再プロビジョニングしてください。これにより、インストールされているすべてのPHPバージョンのPHP-FPM設定が更新され、vagrantユーザーの環境も更新されます。

ポート

デフォルトでは、次のポートがHomestead環境に転送されます。

  • HTTP: 8000 → 80に転送
  • HTTPS: 44300 → 443に転送

追加ポートの転送

必要に応じて、Homestead.yamlファイル内にports設定エントリを定義することで、Vagrant Boxに追加のポートを転送できます。Homestead.yamlファイルを更新した後、必ずvagrant reload --provisionコマンドを実行してマシンを再プロビジョニングしてください。

1ports:
2 - send: 50000
3 to: 5000
4 - send: 7777
5 to: 777
6 protocol: udp

以下は、ホストマシンからVagrant Boxにマッピングしたいかもしれない追加の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」(デフォルト)です。

1sites:
2 - map: homestead.test
3 to: /home/vagrant/project1/public
4 php: "7.1"

Homestead仮想マシン内では、CLIを介してサポートされているPHPバージョンのいずれかを使用できます。

1php5.6 artisan list
2php7.0 artisan list
3php7.1 artisan list
4php7.2 artisan list
5php7.3 artisan list
6php7.4 artisan list
7php8.0 artisan list
8php8.1 artisan list
9php8.2 artisan list
10php8.3 artisan list

Homestead仮想マシン内で次のコマンドを発行することにより、CLIで使用されるデフォルトのPHPバージョンを変更できます。

1php56
2php70
3php71
4php72
5php73
6php74
7php80
8php81
9php82
10php83

データベースへの接続

homesteadデータベースは、MySQLとPostgreSQLの両方で初期設定済みです。ホストマシンのデータベースクライアントからMySQLまたはPostgreSQLデータベースに接続するには、ポート33060(MySQL)または54320(PostgreSQL)で127.0.0.1に接続する必要があります。両方のデータベースのユーザー名とパスワードはhomestead / secretです。

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

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

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

1backup: true

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

Cronスケジュールの設定

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

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

1sites:
2 - map: homestead.test
3 to: /home/vagrant/project1/public
4 schedule: true

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

Mailpitの設定

Mailpitを使用すると、送信メールを実際に受信者に送信することなく、傍受して調べることができます。開始するには、アプリケーションの.envファイルを更新して、次のメール設定を使用します。

1MAIL_MAILER=smtp
2MAIL_HOST=localhost
3MAIL_PORT=1025
4MAIL_USERNAME=null
5MAIL_PASSWORD=null
6MAIL_ENCRYPTION=null

Mailpitが設定されたら、https://:8025でMailpitダッシュボードにアクセスできます。

Minioの設定

Minioは、Amazon S3互換APIを備えたオープンソースのオブジェクトストレージサーバーです。Minioをインストールするには、featuresセクションでHomestead.yamlファイルを次の設定オプションで更新します。

1minio: true

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

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

1AWS_USE_PATH_STYLE_ENDPOINT=true
2AWS_ENDPOINT=https://:9600
3AWS_ACCESS_KEY_ID=homestead
4AWS_SECRET_ACCESS_KEY=secretkey
5AWS_DEFAULT_REGION=us-east-1

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

1buckets:
2 - name: your-bucket
3 policy: public
4 - name: your-private-bucket
5 policy: none

サポートされているpolicyの値には、nonedownloadupload、およびpublicが含まれます。

Laravel Dusk

Homestead内でLaravel Duskテストを実行するには、Homestead設定でwebdriver機能を有効にする必要があります。

1features:
2 - 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の代わりに、他の設定済みサイトのいずれかを代用できます。

1share homestead.test

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

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

HTTPではなくHTTPSでコンテンツを共有する必要がある場合は、shareの代わりにsshareコマンドを使用すると、それが可能になります。

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サーバにリクエストを行う機能テストをデバッグする場合、テストを変更してカスタムヘッダやCookieを渡してデバッグをトリガーするよりも、デバッグを自動起動する方が簡単です。Xdebugを自動的に開始させるには、Homestead仮想マシン内の/etc/php/7.x/fpm/conf.d/20-xdebug.iniファイルを変更し、次の設定を追加します。

1; If Homestead.yaml contains a different subnet for the IP address, this address may be different...
2xdebug.client_host = 192.168.10.1
3xdebug.mode = debug
4xdebug.start_with_request = yes

CLIアプリケーションのデバッグ

PHP CLIアプリケーションをデバッグするには、Homestead仮想マシン内でxphpシェルエイリアスを使用します。

1xphp /path/to/script

Blackfireによるアプリケーションのプロファイリング

Blackfireは、WebリクエストとCLIアプリケーションをプロファイリングするためのサービスです。コールグラフとタイムラインでプロファイルデータを表示するインタラクティブなユーザーインターフェイスを提供します。開発、ステージング、本番環境での使用を目的として構築されており、エンドユーザーにオーバーヘッドはありません。さらに、Blackfireは、コードとphp.ini設定のパフォーマンス、品質、セキュリティチェックを提供します。

Blackfire Playerは、オープンソースのWebクローリング、Webテスト、Webスクレイピングアプリケーションであり、Blackfireと連携してプロファイリングシナリオをスクリプト化できます。

Blackfireを有効にするには、Homestead設定ファイルの「features」設定を使用します。

1features:
2 - blackfire:
3 server_id: "server_id"
4 server_token: "server_value"
5 client_id: "client_id"
6 client_token: "client_value"

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

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

Homestead.yamlファイルのnetworksプロパティは、Homestead仮想マシンのネットワークインターフェイスを設定します。必要なだけ多くのインターフェイスを設定できます。

1networks:
2 - type: "private_network"
3 ip: "192.168.10.20"

ブリッジインターフェイスを有効にするには、ネットワークにbridge設定を構成し、ネットワークタイプをpublic_networkに変更します。

1networks:
2 - type: "public_network"
3 ip: "192.168.10.20"
4 bridge: "en1: Wi-Fi (AirPort)"

DHCPを有効にするには、設定からipオプションを削除するだけです。

1networks:
2 - type: "public_network"
3 bridge: "en1: Wi-Fi (AirPort)"

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

1networks:
2 - type: "public_network"
3 ip: "192.168.10.20"
4 bridge: "en1: Wi-Fi (AirPort)"
5 dev: "enp2s0"

Homesteadの拡張

Homesteadディレクトリのルートにあるafter.shスクリプトを使用してHomesteadを拡張できます。このファイル内には、仮想マシンを適切に設定およびカスタマイズするために必要なシェルコマンドを追加できます。

Homesteadをカスタマイズする際、Ubuntuはパッケージの元の設定を保持するか、新しい設定ファイルで上書きするかを尋ねることがあります。これを避けるために、パッケージをインストールする際には次のコマンドを使用して、Homesteadによって以前に書き込まれた設定を上書きしないようにする必要があります。

1sudo apt-get -y \
2 -o Dpkg::Options::="--force-confdef" \
3 -o Dpkg::Options::="--force-confold" \
4 install package-name

ユーザーカスタマイズ

チームでHomesteadを使用する場合、個人の開発スタイルに合わせてHomesteadを調整したい場合があります。これを実現するために、Homesteadディレクトリのルート(Homestead.yamlファイルを含む同じディレクトリ)にuser-customizations.shファイルを作成できます。このファイル内では、好きなカスタマイズを行うことができます。ただし、user-customizations.shはバージョン管理すべきではありません。

プロバイダ固有の設定

VirtualBox

natdnshostresolver

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

1provider: virtualbox
2natdnshostresolver: 'off'

Laravelは最も生産的な方法です
ソフトウェアを構築、デプロイ、監視します。