Laravel Valet
導入
macOS や Windows で Laravel アプリケーションをより簡単に開発する方法をお探しですか?Laravel Herdをチェックしてください。Herd には、Valet、PHP、Composer を含む、Laravel 開発を始めるために必要なすべてが揃っています。
Laravel Valet は、macOS のミニマリスト向けの開発環境です。Laravel Valet は、Mac を設定して、マシンが起動するたびに常に Nginx をバックグラウンドで実行するようにします。そして、DnsMasq を使用して、Valet は *.test ドメインへのすべてのリクエストをローカルマシンにインストールされたサイトにポイントするようにプロキシします。
言い換えると、Valet はおおよそ 7 MB の RAM を使用する高速な Laravel 開発環境です。Valet は Sail や Homestead の完全な代替ではありませんが、柔軟な基本機能を提供し、極端な速度を好む場合や RAM が限られているマシンで作業している場合には素晴らしい代替手段となります。
Valet のデフォルトサポートには、以下が含まれますがこれに限定されません:
ただし、カスタムドライバを使用してValetを拡張することができます。
インストール
Valetを使用するにはmacOSとHomebrewが必要です。インストールする前に、ApacheやNginxなどの他のプログラムがローカルマシンのポート80にバインドされていないことを確認してください。
まず、updateコマンドを使用してHomebrewが最新であることを確認する必要 があります:
brew update
次に、Homebrewを使用してPHPをインストールする必要があります:
brew install php
PHPをインストールした後、Composerパッケージマネージャをインストールする準備が整います。さらに、$HOME/.composer/vendor/binディレクトリがシステムの「PATH」にあることを確認する必要があります。Composerをインストールした後、Laravel ValetをグローバルComposerパッケージとしてインストールできます:
composer global require laravel/valet
最後に、Valetのinstallコマンドを実行できます。これにより、ValetとDnsMasqが構成およびインストールされます。さらに、システムの起動時にValetが依存するデーモンが起動するように構成されます:
valet install
Valetがインストールされたら、ターミナルでping foobar.testなどの*.testドメインを試してみてください。Valetが正しくインストールされている場合、このドメインが127.0.0.1で応答しているはずです。
Valetは、マシンが起動するたびに必要なサービスを自動的に開始します。
PHP バージョン
グローバルPHPバージョンを変更する代わりに、isolate コマンドを使用してValetにサイトごとのPHPバージョンを指示できます。
Valetを使用してvalet use php@versionコマンドを使用してPHPバージョンを切り替えることができます。指定したPHPバージョンがHomebrewにインストールされていない場合、Valetがインストールします:
valet use php@8.2
valet use php
また、プロジェクトのルートに.valetrcファイルを作成することもできます。.valetrcファイルには、サイトで使用するべきPHPバージョンを記述する必要があります:
php=php@8.2
一度このファイルが作成されると、valet use コマンドを実行するだけで、ファイルを読み取ってサイトの好みのPHPバージョンを決定します。
Valet は、複数のPHPバージョンがインストールされていても、一度に1つのPHPバージョンしか提供しません。
データベース
アプリケーションがデータベースを必要とする場合は、DBngin をチェックしてみてください。DBngin は、MySQL、PostgreSQL、およびRedisを含む無料のオールインワンデータベース管理ツールを提供しています。DBngin をインストールした後、root ユーザー名とパスワードには空の文字列を使用して、127.0.0.1 にあるデータベースに接続できます。
インストールのリセット
Valet のインストールが正常に実行されない場合は、composer global require laravel/valet コマンドを実行してから valet install を実行すると、インストールがリセットされ、さまざまな問題が解決される可能性があります。稀に、「強制的なリセット」が必要な場合は、valet uninstall --force を実行してから valet install を実行する必要があります。
Valet のアップグレード
ターミナルで composer global require laravel/valet コマンドを実行することで、Valet のインストールをアップデートできます。アップグレード後は、必要に応じて Valet が構成ファイルを追加でアップグレードできるように、valet install コマンドを実行するのが良い習慣です。
Valet 4 へのアップグレード
Valet 3 から Valet 4 にアップグレードする場合は、Valet のインストールを適切にアップグレードするために、以下の手順を実行してください:
- サイトのPHPバージョンをカスタマイズするために
.valetphprcファイルを追加している場合は、各.valetphprcファイルを.valetrcにリネームします。その後、.valetrcファイルの既存の内容の前にphp=を追加します。 - カスタムドライバを更新して、新しいドライバシステムの名前空間、拡張子、タイプヒント、および戻り値のタイプヒントに一致するようにします。例として Valet の SampleValetDriver を参照できます。
- サイトを提供するために PHP 7.1 から 7.4 を使用している場合は、Valet がいくつかのスクリプトを実行する際に、このバージョンを使用するため、Homebrew を使用して PHP のバージョンを 8.0 以上にインストールしていることを確認してください。
サイトの提供
Valetをインストールしたら、Laravelアプリケーションを提供する準備が整いました。Valetには、アプリケーションを提供するのに役立つ2つのコマンド、park と link が用意されています。
park コマンド
park コマンドは、アプリケーションが含まれるマシン上のディレクトリを登録します。ディレクトリがValetに「駐車」されると、そのディレクトリ内のすべてのディレクトリは、Webブラウザで http://<directory-name>.test でアクセスできるようになります:
cd ~/Sites
valet park
以上です。これで、「駐車」されたディレクトリ内に作成したアプリケーションは、自動的に http://<directory-name>.test の規則に従って提供されます。したがって、駐車されたディレクトリに「laravel」という名前のディレクトリが含まれている場合、そのディレクトリ内のアプリケーションは http://laravel.test でアクセスできます。さらに、Valetはワイルドカードサブドメインを使用してサイトにアクセスできるようにします(http://foo.laravel.test)。
link コマンド
link コマンドも使用して、Laravelアプリケーションを提供できます。このコマンドは、ディレクトリ内の単一のサイトを提供したい場合に便利です:
cd ~/Sites/laravel
valet link
link コマンドを使用してValetにリンクされたアプリケーションは、そのディレクトリ名を使用してアクセスできます。したがって、上記の例でリンクされたサイトは http://laravel.test でアクセスできます。さらに、Valetはワイルドカードサブドメインを使用してサイトにアクセスできるようにします(http://foo.laravel.test)。
アプリケーションを異なるホスト名で 提供したい場合は、link コマンドにホスト名を渡すことができます。たとえば、次のコマンドを実行して、アプリケーションを http://application.test で利用できるようにすることができます:
cd ~/Sites/laravel
valet link application
もちろん、link コマンドを使用してサブドメインでアプリケーションを提供することもできます:
valet link api.application
links コマンドを実行して、リンクされたディレクトリのリストを表示することができます:
valet links
unlinkコマンドを使用して、サイトのシンボリッ クリンクを破壊できます:
cd ~/Sites/laravel
valet unlink
TLSを使用したサイトのセキュリティ強化
デフォルトでは、ValetはHTTP経由でサイトを提供します。ただし、HTTP/2を使用した暗号化されたTLSでサイトを提供したい場合は、secureコマンドを使用できます。たとえば、Valetによってlaravel.testドメインでサイトが提供されている場合、次のコマンドを実行してセキュリティを強化できます:
valet secure laravel
サイトを「非セキュア」にして、トラフィックをプレーンなHTTP経由で提供するように戻すには、unsecureコマンドを使用します。secureコマンドと同様に、このコマンドは非セキュアにしたいホスト名を受け入れます:
valet unsecure laravel
デフォルトサイトの提供
時々、未知のtestドメインを訪れたときに404ではなく「デフォルト」サイトを提供するようにValetを構成したい場合があります。これを実現するには、~/.config/valet/config.json構成ファイルにdefaultオプションを追加し、デフォルトサイトとして機能するサイトのパスを指定します:
"default": "/Users/Sally/Sites/example-site",
サイトごとのPHPバージョン
デフォルトでは、ValetはグローバルPHPインストールを使用してサイトを提供します。ただし、さまざまなサイトで複数のPHPバージョンをサポートする必要がある場合は、isolateコマンドを使用して特定のサイトが使用するPHPバージョンを指定できます。isolateコマンドは、現在の作業ディレクトリにあるサイトで指定したPHPバージョンを使用するようValetを構成します:
cd ~/Sites/example-site
valet isolate php@8.0
サイト名がそれを含むディレクトリの名前と一致しない場合は、--siteオプションを使用してサイト名を指定できます:
valet isolate php@8.0 --site="site-name"
便宜上、サイトの構成されたPHPバージョンに基づいて適切なPHP CLIまたはツールにプロキシコールを行うために、valet php、composer、およびwhich-phpコマンドを使用できます:
valet php
valet composer
valet which-php
あなたの孤立したサイトとそれらのPHPバージョンのリストを表示するには、isolatedコマンドを実行してくださ い:
valet isolated
サイトをValetのグローバルにインストールされたPHPバージョンに戻すには、サイトのルートディレクトリからunisolateコマンドを呼び出すことができます:
valet unisolate
サイトの共有
Valetには、ローカルサイトを世界と共有するためのコマンドが含まれており、モバイルデバイスでサイトをテストしたり、チームメンバーやクライアントと共有する簡単な方法を提供します。
デフォルトでは、ValetはngrokまたはExposeを使用してサイトを共有できます。サイトを共有する前に、share-toolコマンドを使用してValetの構成を更新し、ngrokまたはexposeを指定する必要があります:
valet share-tool ngrok
ツールを選択し、Homebrew(ngrokの場合)またはComposer(Exposeの場合)でインストールしていない場合、Valetは自動的にインストールするように促します。もちろん、両方のツールを共有する前に、ngrokまたはExposeアカウントに認証する必要があります。
サイトを共有するには、ターミナルでサイトのディレクトリに移動し、Valetのshareコマンドを実行します。一般公開可能なURLがクリップボードに配置され、直接ブラウザに貼り付けるか、チームと共有する準備ができています:
cd ~/Sites/laravel
valet share
サイトの共有を停止するには、Control + Cを押すことができます。
カスタムDNSサーバー(1.1.1.1など)を使用している場合、ngrok共有が正しく機能しない場合があります。この場合は、Macのシステム設定を開き、ネットワーク設定に移動し、詳細設定を開き、DNSタブに移動して127.0.0.1を最初のDNSサーバーとして追加してください。
Ngrokを使用したサイトの共有
ngrokを使用してサイトを共有するには、ngrokアカウントを作成し、認証トークンを設定する必要があります。認証トークンを取得したら、そのトークンでValetの構成を更新できます。
valet set-ngrok-token YOUR_TOKEN_HERE
追加の ngrok パラメータを share コマンドに渡すことができます。例: valet share --region=eu。詳細については、ngrok ドキュメント を参照してください。
Expose を使用したサイトの共有
Expose を使用してサイトを共有するには、Expose アカウントを作成 し、認証トークンを使用して Expose に認証 する必要があります。
追加のコマンドラインパラメータに関する情報は、Expose ドキュメント を参照してください。
ローカルネットワークでのサイト共有
Valet は、開発マシンがインターネットからのセキュリティリスクにさらされないように、デフォルトで内部の 127.0.0.1 インターフェースへの着信トラフィックを制限しています。
ローカルネットワーク上の他のデバイスが、マシンの IP アドレス経由で Valet サイトにアクセスできるようにするには(例: 192.168.1.10/application.test)、該当サイトの Nginx 構成ファイルを手動で編集して、listen ディレクティブの 127.0.0.1: 接頭辞を削除する必要があります。ポート 80 および 443 の listen ディレクティブから 127.0.0.1: 接頭辞を削除してください。
プロジェクトに valet secure を実行していない場合、/usr/local/etc/nginx/valet/valet.conf ファイルを編集して、すべての非 HTTPS サイトのネットワークアクセスを開放できます。ただし、プロジェクトサイトを HTTPS 経由で提供している場合(サイトに valet secure を実行している場合)、~/.config/valet/Nginx/app-name.test ファイルを編集する必要があります。
Nginx 構成を更新したら、valet restart コマンドを実行して構成変更を適用してください。
サイト固有の環境変数
他のフレームワークを使用するアプリケーションの一部は、サーバー環境変数に依存する場合がありますが、これらの変数をプロジェクト内で設定する方法を提供していないことがあります。Valet を使用すると、プロジェクトのルートに .valet-env.php ファイルを追加することで、サイト固有の環境変数を設定できます。このファイルは、グローバル $_SERVER 配列に追加されるサイト / 環境変数のペアの配列を返す必要があります。
<?php
return [
// Set $_SERVER['key'] to "value" for the laravel.test site...
'laravel' => [
'key' => 'value',
],
// Set $_SERVER['key'] to "value" for all sites...
'*' => [
'key' => 'value',
],
];
サービスのプロキシ
時々、Valetドメインをローカルマシン上の別のサービスにプロキシしたい場合があります。たとえば、Valetを実行する必要があるときにDockerで別のサイトも実行する必要があるかもしれません。ただし、ValetとDockerは同時にポート80にバインドすることができません。
これを解決するために、proxyコマンドを使用してプロキシを生成することができます。たとえば、http://elasticsearch.testからhttp://127.0.0.1:9200へのすべてのトラフィックをプロキシすることができます:
# Proxy over HTTP...
valet proxy elasticsearch http://127.0.0.1:9200
# Proxy over TLS + HTTP/2...
valet proxy elasticsearch http://127.0.0.1:9200 --secure
unproxyコマンドを使用してプロキシを削除することもできます:
valet unproxy elasticsearch
proxiesコマンドを使用して、プロキシされているすべてのサイト構成をリストアップすることができます:
valet proxies