🦔

Laravel Valet

2021/07/02に公開

なんか気がついたら Laravel Valet たる Homestead/ Sail とも違う開発環境の構築ツールができとるのでそれのメモ書き。

三行

  1. macos 専用。Docker/Vagrant も使わずローカルのMacに Homebrew からソフトを突っ込んで Nginx の設定をいじくり回す物
  2. 基本 Laravel の物で考えられて作られているけど、要は PHP なので、他の Framework や StaticHTMLも使える
  3. MySQLなどは自前インストールの必要がある。

なにこれ

macos で使うための最小限の開発環境ツールです。 valet で使うサイトごとのドメインは *.test で、ドメイン解決は Dnsmasq を使い動的に変更をします。

背景

Laravel HomeSteadLaravel 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 を実行してください。この時に nginxDnsMasq といったソフトウェアをインストールします。

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 が使える。

サイトの設定方法

parklink というコマンドを使用します。

park command

ディレクトリ指定してテスト表示をする時に使用します。

> valet park
This directory has been added to Valet's paths.

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