Laravel Valet
なんか気がついたら Laravel Valet たる Homestead/ Sail とも違う開発環境の構築ツールができとるのでそれのメモ書き。
三行
- macos 専用。Docker/Vagrant も使わずローカルのMacに Homebrew からソフトを突っ込んで Nginx の設定をいじくり回す物
- 基本 Laravel の物で考えられて作られているけど、要は PHP なので、他の Framework や StaticHTMLも使える
- MySQLなどは自前インストールの必要がある。
なにこれ
macos で使うための最小限の開発環境ツールです。 valet で使うサイトごとのドメインは *.test
で、ドメイン解決は Dnsmasq を使い動的に変更をします。
背景
Laravel HomeStead や Laravel Sail といったローカル開発環境は二種類ある。ただ Vagrant/Virtualbox/Docker を使わない方法として、これがある。ただし HomeBrew は使い macos 専用になる。
Install
> brew update && brew install php
最新版のPHP8 (現在:2021/07/02) が必要らしいので、インストールをします。
valet は composer global require laravel/valet
とコマンドを実行してインストールをします。インストール先が ~/.composer/vendor/bin
になるので、 .zshenv
など環境変数 PATH
に追記しておいてください。
最後に valet install
を実行してください。この時に nginx や DnsMasq といったソフトウェアをインストールします。
Valet はマシンを再起動しても自動的に起動するようになります。(そこの切り替え方法は書いていないけど、homebrew でインストールした Nginx/DnsMasq は brew services stop dnsmasq
などを実行したら良いと思うよ)
PHP Version
HomeBrew を使ってゴツゴツ変えるみたい。
> valet use php@7.1
Password:
Unlinking current version: php@7.4
Linking new version: php@7.1
Updating PHP configuration...
Restarting php@7.1...
Restarting nginx...
Valet is now using php@7.1.
>
なお、戻そうと valet use php@7.4
とかやっても Your Composer dependencies require a PHP version ">= 7.3.0".
とか言われるときは brew-php-switcher 7.4
とか実行して戻したら良いよ。
Database
DBngin を使うと良いよ。FreeのDBマネージメントサービスで、MySQL/PostgreSQL/Redis が使える。
サイトの設定方法
park
と link
というコマンドを使用します。
park command
ディレクトリ指定してテスト表示をする時に使用します。
> valet park
This directory has been added to Valet's paths.
link command
Laravel などアプリケーションサービスを使う時に使用します。
> valet link
Password:
A [public] symbolic link has been created in [/Users/yasui/.config/valet/Sites/public].
> valet valheim
Password:
A [public] symbolic link has been created in [/Users/yasui/.config/valet/Sites/valheim].
Link を消すときは valet unlink
をリンクを張ったディレクトリで実行、もしくは valet unlink [name]
で実行をします。
https
https でどうしても確認したい時に使用します。Keychain を操作しますので、マシンの管理者が必要。
> valet secure valheim
Restarting nginx...
The [valheim.test] site has been secured with a fresh TLS certificate.
不要になったときは valet unsecure [name]
で良いみたいです。
[覗き見] Nginx などの設定
Mac M1 で実行をしてみたのですが /opt/homebrew
にインストールされている nginx を操作しているので、Homebrew がないと動かない品物です。
Nginx の個別サイトの設定は ~/.config/valet/Nginx/*
に行くみたいですが、ここには valet secure [name]
を実行して証明書をインストールした場合のみ設定が置かれるようです。
共有
valet share
を使えば他のPCでも見られるようになります。これは裏側では ngrok
が動くので、自前コマンドで ngrok を動かすのも手。
one topic
--region=us
などオプションは有効みたいです。ngrok のドキュメントを参考に操作したら良いと思う。
expose を使う方法
expose という ngrok と同じような共有サイトがあります。それを使う場合は expose
と単に実行したら良いみたいです。
local networkで共有
Nginx の設定( /usr/local/etc/nginx/valet/valet.conf
)を直接書き換えて、 127.0.0.1 を割り当てられている IP に変更をすれば、外から見ることもできます。
注意点として、ローカルでは http://valheim.test/
としていたところを http://192.168.257.257/valheim.test/
といった感じで、ドメインが後ろつけになります。もし valet secure
としているときは ~/.config/valet/Nginx/valheim.test
のファイルにかかれている IP を書き換えて、 valet restart
を実行してください。
環境変数
アクセス用の環境変数は、アプリケーションのディレクトリに .valet-env.php
を置いて、下記のような連想配列を返す記述をします。
<?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',
],
];
Proxy
わからん
Valet Drivers のカスタマイズ
tikaratukita
Discussion