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