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 ~/Homestead2 3git checkout release
次に、Homesteadディレクトリからbash init.shコマンドを実行して、Homestead.yaml設定ファイルを作成します。Homestead.yamlファイルは、Homesteadインストールのすべての設定を行う場所です。このファイルはHomesteadディレクトリに配置されます。
1# macOS / Linux...2bash init.sh3 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/project13 to: /home/vagrant/project1
Windowsユーザーは~/パス構文を使用せず、代わりにC:\Users\user\Code\project1のようなプロジェクトへのフルパスを使用する必要があります。
すべてのアプリケーションを含む単一の大きなディレクトリをマッピングするのではなく、個々のアプリケーションを常に独自のフォルダマッピングにマップする必要があります。フォルダをマップすると、仮想マシンはフォルダ内のすべてのファイルのディスクI/Oを追跡し続ける必要があります。フォルダ内に多数のファイルがあると、パフォーマンスが低下する可能性があります。
1folders:2 - map: ~/code/project13 to: /home/vagrant/project14 - map: ~/code/project25 to: /home/vagrant/project2
Homesteadを使用する場合、.(カレントディレクトリ)をマウントしてはいけません。これにより、Vagrantはカレントフォルダを/vagrantにマッピングしなくなり、オプション機能が壊れ、プロビジョニング中に予期しない結果を引き起こす原因になります。
NFSを有効にするには、フォルダマッピングにtypeオプションを追加します。
1folders:2 - map: ~/code/project13 to: /home/vagrant/project14 type: "nfs"
WindowsでNFSを使用する場合は、vagrant-winnfsdプラグインのインストールを検討してください。このプラグインは、Homestead仮想マシン内のファイルとディレクトリの正しいユーザー/グループのパーミッションを維持します。
VagrantのSynced Foldersでサポートされているオプションを、optionsキーの下にリストすることで渡すこともできます。
1folders:2 - map: ~/code/project13 to: /home/vagrant/project14 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.test3 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コマンドを呼び出して、プロジェクト用のVagrantfileとHomestead.yamlファイルを生成します。これらのファイルはプロジェクトのルートに配置されます。makeコマンドは、Homestead.yamlファイル内のsitesおよびfoldersディレクティブを自動的に設定します。
1# macOS / Linux...2php vendor/bin/homestead make3 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: true10 - crystal: true11 - dragonflydb: true12 - elasticsearch:13 version: 7.9.014 - eventstore: true15 version: 21.2.016 - flyway: true17 - gearman: true18 - golang: true19 - grafana: true20 - influxdb: true21 - logstash: true22 - mariadb: true23 - meilisearch: true24 - minio: true25 - mongodb: true26 - neo4j: true27 - ohmyzsh: true28 - openresty: true29 - pm2: true30 - python: true31 - r-base: true32 - rabbitmq: true33 - rustc: true34 - rvm: true35 - solr: true36 - timescaledb: true37 - trader: true38 - 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 fetch2 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.yaml、after.sh、およびaliasesファイルを上書きするかどうか尋ねられます。
1# macOS / Linux...2bash init.sh3 4# Windows...5init.bat
最後に、最新のVagrantインストールを利用するために、Homestead仮想マシンを再生成する必要があります。
1vagrant up
普段の使い方
SSHによる接続
Homesteadディレクトリからvagrant sshターミナルコマンドを実行することで、仮想マシンにSSH接続できます。
追加サイトの登録
Homestead環境がプロビジョニングされ、実行されたら、他のLaravelプロジェクト用に追加のNginxサイトを追加したい場合があります。単一のHomestead環境で、好きなだけ多くのLaravelプロジェクトを実行できます。追加のサイトを追加するには、Homestead.yamlファイルにサイトを追加します。
1sites:2 - map: homestead.test3 to: /home/vagrant/project1/public4 - map: another.test5 to: /home/vagrant/project2/public
サイトを追加する前に、プロジェクトのディレクトリにフォルダマッピングを設定したことを確認してください。
Vagrantが「hosts」ファイルを自動的に管理していない場合は、新しいサイトをそのファイルに追加する必要があるかもしれません。macOSとLinuxでは、このファイルは/etc/hostsにあります。Windowsでは、C:\Windows\System32\drivers\etc\hostsにあります。
1192.168.56.56 homestead.test2192.168.56.56 another.test
サイトが追加されたら、Homesteadディレクトリからvagrant reload --provisionターミナルコマンドを実行します。
サイトの種類
Homesteadは、Laravelベースではないプロジェクトを簡単に実行できるように、いくつかの「タイプ」のサイトをサポートしています。たとえば、statamicサイトタイプを使用して、StatamicアプリケーションをHomesteadに簡単に追加できます。
1sites:2 - map: statamic.test3 to: /home/vagrant/my-symfony-project/web4 type: "statamic"
利用可能なサイトタイプは、apache、apache-proxy、apigility、expressive、laravel(デフォルト)、proxy(Nginx用)、silverstripe、statamic、symfony2、symfony4、およびzfです。
サイトパラメータ
paramsサイトディレクティブを介して、サイトに追加のNginx fastcgi_param値を追加できます。
1sites:2 - map: homestead.test3 to: /home/vagrant/project1/public4 params:5 - key: FOO6 value: BAR
環境変数
Homestead.yamlファイルにグローバル環境変数を追加して定義できます。
1variables:2 - key: APP_ENV3 value: local4 - key: FOO5 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: 500003 to: 50004 - send: 77775 to: 7776 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.test3 to: /home/vagrant/project1/public4 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 list10php8.3 artisan list
Homestead仮想マシン内で次のコマンドを発行することにより、CLIで使用されるデフォルトのPHPバージョンを変更できます。
1php56 2php70 3php71 4php72 5php73 6php74 7php80 8php81 9php8210php83
データベースへの接続
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.test3 to: /home/vagrant/project1/public4 schedule: true
サイトのCronジョブは、Homestead仮想マシンの/etc/cron.dディレクトリに定義されます。
Mailpitの設定
Mailpitを使用すると、送信メールを実際に受信者に送信することなく、傍受して調べることができます。開始するには、アプリケーションの.envファイルを更新して、次のメール設定を使用します。
1MAIL_MAILER=smtp2MAIL_HOST=localhost3MAIL_PORT=10254MAIL_USERNAME=null5MAIL_PASSWORD=null6MAIL_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=true2AWS_ENDPOINT=https://:96003AWS_ACCESS_KEY_ID=homestead4AWS_SECRET_ACCESS_KEY=secretkey5AWS_DEFAULT_REGION=us-east-1
Minioを利用した「S3」バケットをプロビジョニングするには、Homestead.yamlファイルにbucketsディレクティブを追加します。バケットを定義した後、ターミナルでvagrant reload --provisionコマンドを実行する必要があります。
1buckets:2 - name: your-bucket3 policy: public4 - name: your-private-bucket5 policy: none
サポートされているpolicyの値には、none、download、upload、および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.13xdebug.mode = debug4xdebug.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: virtualbox2natdnshostresolver: 'off'