はじめに
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ディレクトリ」と呼びます:
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
のようにプロジェクトへのフルパスを使用する必要があります。
個々のアプリケーションをそれぞれのフォルダーマッピングにマッピングすることを常にお勧めします。すべてのアプリケーションを含む単一の大きなディレクトリをマッピングしないでください。フォルダーをマッピングすると、仮想マシンはフォルダー内のすべてのファイルのディスク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の同期フォルダーがサポートする任意のオプションを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設定を更新する必要があります。
Homesteadスクリプトは、可能な限り冪等性を持つように構築されています。ただし、プロビジョニング中に問題が発生した場合は、vagrant destroy && vagrant up
コマンドを実行してマシンを破棄して再構築する必要があります。
ホスト名の解決
Homesteadは、自動ホスト解決のためにmDNS
を使用してホスト名を公開します。hostname: homestead
をHomestead.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
にあります。このファイルに追加する行は次のようになります:
192.168.56.56 homestead.test
リストされているIPアドレスがHomestead.yaml
ファイルに設定されているものであることを確認してください。ドメインをhosts
ファイルに追加し、Vagrantボックスを起動すると、Webブラウザを介してサイトにアクセスできるようになります:
http://homestead.test
サービスの設定
Homesteadはデフォルトでいくつかのサービスを起動しますが、プロビジョニング中に有効または無効にするサービスをカスタマイズできます。たとえば、services
オプションをHomestead.yaml
ファイル内で変更することで、PostgreSQLを有効にし、MySQLを無効にすることができます:
services:
- enabled:
- "postgresql"
- disabled:
- "mysql"
指定されたサービスは、enabled
およびdisabled
ディレクティブの順序に基づいて開始または停止されます。
Vagrantボックスの起動
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
コマンドは、sites
およびfolders
ディレクティブをHomestead.yaml
ファイルに自動的に構成します:
# 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
- 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仮想マシン内のaliases
ファイルを変更することで、Bashエイリアスを追加できます:
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.yaml
、after.sh
、およびaliases
ファイルを上書きするかどうかを尋ねられます:
# macOS / Linux...
bash init.sh
# Windows...
init.bat
最後に、最新のVagrantインストールを利用するためにHomestead仮想マシンを再生成する必要があります:
vagrant up
日常の使用
SSH経由での接続
Homesteadディレクトリからvagrant ssh
ターミナルコマンドを実行することで、仮想マシンにSSH接続できます。
追加サイトの追加
Homestead環境がプロビジョニングされ、実行されている場合、他のLaravelプロジェクトのために追加のNginxサイトを追加したいかもしれません。単一の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アプリケーションをHomesteadに簡単に追加できます:
sites:
- map: statamic.test
to: /home/vagrant/my-symfony-project/web
type: "statamic"
利用可能なサイトタイプは、apache
、apache-proxy
、apigility
、expressive
、laravel
(デフォルト)、proxy
(nginx用)、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環境に転送されます:
追加ポートの転送
必要に応じて、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
CLIで使用されるデフォルトのPHPバージョンを変更するには、Homestead仮想マシン内で次のコマンドを発行します:
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
設定が完了すると、Homesteadは.backup/mysql_backup
および.backup/postgres_backup
ディレクトリにデータベースをエクスポートします。これらのディレクトリは、Homesteadをインストールしたフォルダーまたは、プロジェクトごとのインストールメソッドを使用している場合はプロジェクトのルートにあります。
Cronスケジュールの設定
Laravelは、毎分実行される単一のschedule:run
Artisanコマンドをスケジュールすることによって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が設定されたら、http://localhost:8025
でMailpitダッシュボードにアクセスできます。
Minioの設定
Minioは、Amazon S3互換のAPIを持つオープンソースのオブジェクトストレージサーバーです。Minioをインストールするには、オプション機能のインストールセクションに次の構成オプションをHomestead.yaml
ファイルに追加します:
minio: true
デフォルトでは、Minioはポート9600で利用可能です。http://localhost:9600
にアクセスすることでMinioコントロールパネルにアクセスできます。デフォルトのアクセスキーは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
値には、none
、download
、upload
、およびpublic
が含まれます。
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
コマンドを実行すると、アクティビティログと共有サイトの公開URLを含むNgrok画面が表示されます。カスタムリージョン、サブドメイン、または他のNgrokランタイムオプションを指定する必要がある場合は、share
コマンドに追加できます:
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
ファイルを変更し、次の構成を追加します:
; 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は、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のドキュメントを確認してください。
ネットワークインターフェース
networks
プロパティは Homestead.yaml
ファイルで、あなたの 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を拡張するには、Homesteadディレクトリのルートにある after.sh
スクリプトを使用します。このファイル内で、仮想マシンを適切に構成しカスタマイズするために必要なシェルコマンドを追加できます。
Homesteadをカスタマイズする際、Ubuntuはパッケージの元の構成を保持するか、新しい構成ファイルで上書きするかを尋ねる場合があります。これを避けるために、Homesteadによって以前に書かれた構成を上書きしないように、パッケージをインストールする際に次のコマンドを使用する必要があります:
sudo apt-get -y \
-o Dpkg::Options::="--force-confdef" \
-o Dpkg::Options::="--force-confold" \
install package-name
ユーザーのカスタマイズ
チームと一緒にHomesteadを使用する際、個人の開発スタイルに合わせてHomesteadを調整したい場合があります。これを実現するために、Homesteadディレクトリのルートに user-customizations.sh
ファイルを作成できます(Homestead.yaml
ファイルを含む同じディレクトリ)。このファイル内で、任意のカスタマイズを行うことができます。ただし、user-customizations.sh
はバージョン管理されるべきではありません。
プロバイダー固有の設定
VirtualBox
natdnshostresolver
デフォルトでは、Homesteadは natdnshostresolver
設定を on
に構成します。これにより、Homesteadはホストオペレーティングシステムの DNS 設定を使用できます。この動作を上書きしたい場合は、次の構成オプションを Homestead.yaml
ファイルに追加してください:
provider: virtualbox
natdnshostresolver: 'off'