はじめに

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

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

最初のステップ

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

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

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

Homesteadのインストール

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

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

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

  1. cd ~/Homestead
  2. git checkout release

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

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

Homesteadの設定

プロバイダーの設定

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

  1. provider: virtualbox

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

共有フォルダーの設定

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

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

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

個々のアプリケーションをそれぞれのフォルダーマッピングにマッピングすることを常にお勧めします。すべてのアプリケーションを含む単一の大きなディレクトリをマッピングしないでください。フォルダーをマッピングすると、仮想マシンはフォルダー内のすべてのファイルのディスクIOを追跡する必要があります。フォルダー内に大量のファイルがある場合、パフォーマンスが低下する可能性があります:

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

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

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

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

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

Vagrantの同期フォルダーがサポートする任意のオプションをoptionsキーの下にリストすることもできます:

  1. folders:
  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アプリケーションの便利な仮想化環境として機能します:

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

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

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

ホスト名の解決

Homesteadは、自動ホスト解決のためにmDNSを使用してホスト名を公開します。hostname: homesteadHomestead.yamlファイルに設定すると、ホストは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にあります。このファイルに追加する行は次のようになります:

  1. 192.168.56.56 homestead.test

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

  1. http://homestead.test

サービスの設定

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

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

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

Vagrantボックスの起動

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

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

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

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

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

  1. composer require laravel/homestead --dev

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

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

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

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

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

  1. features:
  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のバージョンを指定できます。これは正確なバージョン番号(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仮想マシン内のaliasesファイルを変更することで、Bashエイリアスを追加できます:

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

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

Homesteadの更新

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

  1. vagrant destroy

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

  1. git fetch
  2. git pull origin release

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

プロジェクトのcomposer.jsonファイルを介してHomesteadをインストールした場合、composer.jsonファイルに"laravel/homestead": "^12"が含まれていることを確認し、依存関係を更新する必要があります:

  1. composer update

次に、vagrant box updateコマンドを使用してVagrantボックスを更新する必要があります:

  1. vagrant box update

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

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

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

  1. vagrant up

日常の使用

SSH経由での接続

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

追加サイトの追加

Homestead環境がプロビジョニングされ、実行されている場合、他のLaravelプロジェクトのために追加のNginxサイトを追加したいかもしれません。単一のHomestead環境で、希望するだけ多くのLaravelプロジェクトを実行できます。追加のサイトを追加するには、Homestead.yamlファイルにサイトを追加します。

  1. sites:
  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にあります:

  1. 192.168.56.56 homestead.test
  2. 192.168.56.56 another.test

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

サイトタイプ

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

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

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

サイトパラメータ

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

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

環境変数

グローバル環境変数をHomestead.yamlファイルに追加することで定義できます:

  1. variables:
  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ボックスに追加のポートを転送できます。Homestead.yamlファイルを更新した後、vagrant reload --provisionコマンドを実行してマシンを再プロビジョニングしてください:

  1. ports:
  2. - send: 50000
  3. to: 5000
  4. - send: 7777
  5. to: 777
  6. 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」(デフォルト)です:

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

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

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

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

  1. php56
  2. php70
  3. php71
  4. php72
  5. php73
  6. php74
  7. php80
  8. php81
  9. php82
  10. 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ファイルに次の行を追加します:

  1. backup: true

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

Cronスケジュールの設定

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

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

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

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

Mailpitの設定

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

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

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

Minioの設定

Minioは、Amazon S3互換のAPIを持つオープンソースのオブジェクトストレージサーバーです。Minioをインストールするには、オプション機能のインストールセクションに次の構成オプションをHomestead.yamlファイルに追加します:

  1. minio: true

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

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

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

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

  1. buckets:
  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機能を有効にする必要があります:

  1. features:
  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に置き換えることができます:

  1. share homestead.test

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

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

HTTPSではなくHTTPでコンテンツを共有する必要がある場合は、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サーバーにリクエストを行う機能テストをデバッグする際、デバッグをトリガーするためにカスタムヘッダーやクッキーを通過させるようにテストを変更するよりも、デバッグを自動的に開始する方が簡単です。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...
  2. xdebug.client_host = 192.168.10.1
  3. xdebug.mode = debug
  4. xdebug.start_with_request = yes

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

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

  1. xphp /path/to/script

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

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

Blackfire Playerは、Blackfireと共同でプロファイリングシナリオをスクリプト化するために機能するオープンソースのWebクローリング、Webテスト、およびWebスクレイピングアプリケーションです。

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

  1. features:
  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のドキュメントを確認してください

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

networks プロパティは Homestead.yaml ファイルで、あなたの Homestead 仮想マシンのネットワークインターフェースを構成します。必要に応じて、任意の数のインターフェースを構成できます:

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

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

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

DHCP を有効にするには、構成から ip オプションを削除するだけです:

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

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

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

Homesteadの拡張

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

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

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

ユーザーのカスタマイズ

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

プロバイダー固有の設定

VirtualBox

natdnshostresolver

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

  1. provider: virtualbox
  2. natdnshostresolver: 'off'