Laravel 8.x Laravel Homestead

イントロダクション

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

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

Homesteadは、Windows、macOS、Linuxシステムで実行でき、Nginx、PHP、MySQL、PostgreSQL、Redis、Memcached、Node、その他すばらしいLaravelアプリケーションの開発に必要なすべてのソフトウェアを含んでいます。

Note: Windowsを使用している場合は、ハードウェア仮想化(VT-x)を有効にする必要があります。通常、BIOSにより有効にできます。UEFI system上のHyper-Vを使用している場合は、VT-xへアクセスするため、さらにHyper-Vを無効にする必要があります。

含んでいるソフトウェア

  • Ubuntu 20.04
  • Git
  • 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 13
  • Composer
  • Node (Yarn、Bower、Bower、Grunt、Gulpを含む)
  • Redis
  • Memcached
  • Beanstalkd
  • Mailhog
  • avahi
  • ngrok
  • Xdebug
  • XHProf / Tideways / XHGui
  • wp-cli

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

  • Apache
  • Blackfire
  • Cassandra
  • Chronograf
  • CouchDB
  • CrystalとLuckyフレームワーク
  • Docker
  • Elasticsearch
  • EventStoreDB
  • Gearman
  • Go
  • Grafana
  • InfluxDB
  • MariaDB
  • Meilisearch
  • MinIO
  • MongoDB
  • Neo4j
  • Oh My Zsh
  • Open Resty
  • PM2
  • Python
  • R
  • RabbitMQ
  • RVM(Rubyバージョンマネージャ)
  • Solr
  • TimescaleDB
  • Trader(PHP拡張)
  • WebdriverとLaravel Duskユーティリティ

インストールと設定

最初の段階

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

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

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

Homesteadのインストール

ホストマシンへリポジトリをクローンし、Homesteadをインストールできます。自分の「ホーム」ディレクトリの中のHomesteadフォルダへリポジトリをクローンするのことは、自分の全LaravelアプリケーションをホストしておくHomestead仮想マシンを用意するのだと考えてください。当ドキュメントでは、このディレクトリを「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のプロバイダとして、virtualboxparallelsのどちらを使用するかを指定します。

provider: virtualbox

Note: Apple Siliconを使用している場合は、Homestead.yamlファイルにbox: laravel/homestead-armを追加する必要があります。Apple SiliconにはParallelsプロバイダが必要です。

共有フォルダの設定

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

folders:
    - map: ~/code/project1
      to: /home/vagrant/project1

Note: Windowsユーザーはパスを~/記法を使わず、代わりにたとえばC:\Users\user\Code\project1のように、プロジェクトのフルパスを使ってください。

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

folders:
    - map: ~/code/project1
      to: /home/vagrant/project1
    - map: ~/code/project2
      to: /home/vagrant/project2

Note: Homesteadを使用する場合、.(カレントディレクトリ)をマウントしないでください。そうすると、Vagrantはカレントフォルダを/vagrantへマップしない状況が起き、オプションの機能が壊れ、プロビジョン中に予期せぬ結果が起きます。

NFSを有効にするには、フォルダのマッピングでtypeオプションを付けます。

folders:
    - map: ~/code/project1
      to: /home/vagrant/project1
      type: "nfs"

Note: 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

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

Note: Homesteadのスクリプトは可能な限り冪等性を保つように組まれています。しかしながら、プロビジョニング中に問題が起きたら、vagrant destroy && vagrant upコマンドを実行し、マシンを壊してから、再構築してください。

ホスト名の解決

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

自動ホスト名の使用は、Homesteadのプロジェクトごとのインストールに最適です。1つの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ファイルへ追加したら、Webブラウザでサイトにアクセスできます。

http://homestead.test

サービスの設定

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

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

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

Vagrant Boxの実行

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コマンドは、Homestead.yamlファイルのsitesおよびfoldersディレクティブを自動的に構成します。

// 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
    - docker: true
    - elasticsearch:
        version: 7.9.0
    - eventstore: true
        version: 21.2.0
    - gearman: true
    - golang: true
    - grafana: true
    - influxdb: true
    - mariadb: true
    - meilisearch: true
    - minio: true
    - mongodb: true
    - neo4j: true
    - ohmyzsh: true
    - openresty: true
    - pm2: true
    - python: true
    - r-base: true
    - rabbitmq: true
    - rvm: true
    - solr: true
    - timescaledb: true
    - trader: true
    - webdriver: true

Elasticsearch

サポートしているElasticsearchのバージョンを指定できます。これは、正確なバージョン番号(major.minor.patch)である必要があります。デフォルトのインストールでは、homesteadという名前のクラスターを作成します。Elasticsearchにオペレーティングシステムのメモリの半分以上を割り当てないでください。そのため、Homestead仮想マシンでElasticsearchの割り当てが最低2倍あることを確認してください。

Tip!! Elasticsearchドキュメントをチェックして、設定をカスタマイズする方法を確認してください。

MariaDB

MariaDBを有効にすると、MySQLを削除してMariaDBをインストールします。MariaDBはMySQLのそのまま置き換え可能な代替機能として通常動作します。そのため、アプリケーションのデータベース設定では、mysqlデータベースドライバをそのまま使ってください。

MongoDB

デフォルト状態のMongoDBでは、データベースのユーザー名をhomestead、パスワードをsecretに設定します。

Neo4j

デフォルト状態のNeo4jでは、データベースのユーザー名をhomestead、パスワードをsecretとして設定します。Neo4jブラウザにアクセスするには、Webブラウザでhttp://homestead.test:7474にアクセスしてください。Neo4jクライアントのために、7687 (Bolt)、7474 (HTTP)、7473 (HTTPS)ポートが用意されています。

エイリアス

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の追加の設定ファイルを更新するために、Homesteadディレクトリからbashinit.shコマンドを実行する必要があります。既存のHomestead.yamlafter.shaliasesファイルを上書きするかどうか尋ねられます。

// macOS/Linux
bash init.sh

// Windows
init.bat

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

vagrant up

日常の使用方法

SSH接続

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

サイトの追加

Homestead環境をプロビジョニングし、実働した後に、LaravelプロジェクトをNginxサイトへ追加したいこともあるでしょう。希望するだけのLaravelプロジェクトを一つのHomestead環境上で実行できます。新しいサイトを追加するには、Homestead.yamlファイルへ追加します。

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

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

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

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

サイトタイプ

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

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

指定できるサイトタイプはapacheapigilityexpressivelaravel(デフォルト)、proxysilverstripestatamicsymfony2symfony4zfです。

サイトパラメータ

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設定エントリを定義することにより、追加のポートを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
  • Mailhog: 8025 → フォワード先 8025
  • Minio: 9600 → フォワード先 9600

PHPバージョン

Homestead6では、同じ仮想マシンで複数のバージョンのPHPを実行するためのサポートが導入されました。Homestead.yamlファイル内の特定のサイトに使用するPHPのバージョンを指定できます。使用可能なPHPバージョンは、"5.6", "7.0", "7.1", "7.2", "7.3", "7.4"、"8.0"(デフォルト)、"8.1"です。

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

Homestead仮想マシン内から以下のコマンドを実行すれば、CLIで使用するPHPのデフォルトバージョンを変更できます。

php56
php70
php71
php72
php73
php74
php80
php81

データベースへの接続

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

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

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

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

backup: true

設定が完了すると、Homesteadは、vagrant destroyコマンドの実行時に、データベースをmysql_backupもしくはpostgres_backupディレクトリにエクスポートします。これらのディレクトリは、Homesteadをインストールしたフォルダ、またはプロジェクトごとのインストールメソッドを使用している場合はプロジェクトのルートにできます。

cronスケジュールの設定

Laravelは、1分ごとに実行する単一のschedule:run Artisanコマンドをスケジュールすることにより、cronジョブのスケジュールに便利な方法を提供しています。schedule:runコマンドは、App\Console\Kernelクラスで定義したジョブスケジュールを調べて、どのスケジュール済みタスクを実行するかを決定します。

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

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

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

MailHogの設定

MailHogを使用すると、実際に受信者にメールを送信しなくても、送信メールを傍受して調査できます。使用するには、以下のメール設定を使用するためアプリケーションの.envファイルを更新します。

MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

MailHogを設定したら、http://localhost:8025にあるMailHogダッシュボードにアクセスできます。

Minioの設定

Minioは、Amazon S3互換のAPIを備えたオープンソースのオブジェクトストレージサーバです。Minioをインストールするには、Homestead.yamlファイルのオプション機能セクションで以下の設定オプションへ変更してください。

minio: true

デフォルトでは、Minioはポート9600で使用できます。http://localhost:9600にアクセスし、Minioコントロールパネルを表示できます。デフォルトのアクセスキーは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.yamlファイルにbucketsディレクティブを追加します。バケットを定義したら、ターミナルでvagrant reload --provisionコマンドを実行する必要があります。

buckets:
    - name: your-bucket
      policy: public
    - name: your-private-bucket
      policy: none

サポートしているpolicy値は、nonedownloaduploadpublicです。

Laravel Dusk

Homestead内でLaravelDuskテストを実行するには、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

Note: Vagrantは本質的に安全ではなく、shareコマンドを実行するときに仮想マシンをインターネットに公開していることを忘れないでください。

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

Xdebugを使用したWebリクエストのデバッグ

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

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

Note: Xdebugを使用すると、PHPの実行速度が大幅に低下します。Xdebugを無効にするには、Homestead仮想マシン内でsudo phpdismod xdebugを実行し、それからFPMサービスを再起動します。

Xdebugの自動起動

Webサーバにリクエストを送る機能テストをデバッグする場合、カスタムヘッダまたはCookieを用いデバッグをトリガーするようテストを変更するよりも、デバッグを自動開始する方が簡単です。Xdebugを強制的に自動で開始するには、Homestead仮想マシン内の/etc/php/7.x/fpm/conf.d/20-xdebug.iniファイルを変更し、次の構成を追加します。

; Homestead.yamlでIPアドレスの異なるサブネットを指定している場合、このアドレスは異なるでしょう
xdebug.remote_host = 192.168.10.1
xdebug.remote_autostart = 1

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

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

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

networks:
    - type: "private_network"
      ip: "192.168.10.20"

bridgedインターフェイスを有効にするには、ネットワークの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)"

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はホストオペレーティングシステムのDNS設定を使用できるようになります。この動作をオーバーライドする場合は、次の構成オプションをHomestead.yamlファイルに追加します。

provider: virtualbox
natdnshostresolver: 'off'

Windowsでのシンボリックリンク

Windowsマシンでシンボリックリンクが正しく動かない場合は、Vagrantfileに以下のコードブロックを追加する必要があります。

config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end

ドキュメント章別ページ

ヘッダー項目移動

注目:アイコン:ページ内リンク設置(リンクがないヘッダーへの移動では、リンクがある以前のヘッダーのハッシュをURLへ付加します。

移動

クリックで即時移動します。

設定

適用ボタンクリック後に、全項目まとめて適用されます。

カラーテーマ
和文指定 Pagination
和文指定 Scaffold
Largeスクリーン表示幅
インデント
本文フォント
コードフォント
フォント適用確認

フォントの指定フィールドから、フォーカスが外れると、当ブロックの内容に反映されます。EnglishのDisplayもPreviewしてください。

フォント設定時、表示に不具合が出た場合、当サイトのクッキーを削除してください。

バックスラッシュを含むインライン\Code\Blockの例です。

以下はコードブロックの例です。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * ユーザに関連する電話レコードを取得
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

設定を保存する前に、表示が乱れないか必ず確認してください。CSSによるフォントファミリー指定の知識がない場合は、フォントを変更しないほうが良いでしょう。

キーボード・ショートカット

オープン操作

PDC

ページ(章)移動の左オフキャンバスオープン

HA

ヘッダー移動モーダルオープン

MS

移動/設定の右オフキャンバスオープン

ヘッダー移動

T

最初のヘッダーへ移動

E

最後のヘッダーへ移動

NJ

次ヘッダー(H2〜H4)へ移動

BK

前ヘッダー(H2〜H4)へ移動

その他

?

このヘルプページ表示
閉じる