Laravel Valetのインストール
Macを利用する人の中にはMacを利用していればかっこいいというブランドイメージではなくアプリケーションの構築を効率的に行いたいという目的の人も多いかと思います。Macを利用している場合、LaravelであればLaravel Valetを利用することですぐに開発環境を構築することができます。
さらにMacを起動し開発サーバを起動するために毎回php artisan serveコマンドを実行するのが面倒だという人にValetはおすすめです。 OSを再起動してphp artisan serveコマンド実行しなくても利用することができます。
目次
環境の確認
Mac環境でLaravelの開発環境を構築する方法には複数選択肢がありますが本文書ではLaravel Valetを利用してLaravel環境の構築を行います。
Laravel Valetをインストールするためには、以下の3つが事前にインストールされている必要があります。
- Homebrew(macOSのパッケージマネージャー)
- PHPのバージョン8.1以上
- Comopser(PHPのパッケージ管理ツール)
Homebrewのインストール
macOSのパッケージマネージャーのHomebrewのインストールを行います。
インストールを実行するためのスクリプトがHomebrewのホームページのトップ画面に表示されている赤線で囲んだスクリプトをコピーして、ターミナルを起動して貼り付け実行してください。実行にはMacの管理者のパスワードも必要となります。
% /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
インストールを実行すると途中でXcode Command Line Toolsのインストールの確認が表示されるので、そのまま”Enter”キーを押してください。またsudoコマンドを実行するためにログインユーザのパスワードも聞かれるのでパスワードを入力してください。
インストールが完了するとbrew helpコマンドを実行してください。brewコマンドの使用方法が表示されればHomebrewのインストールは完了です。
PHPバージョンの確認
macOSにインストール済みのPHPのバージョンを確認します。Laravelのl公式ドキュメントには現在の最新バージョンのLaravel10では要件にPHP >= 8.1の記述があるので8.1以上であるか確認を行う必要があります。
% php -version
PHP 8.3.1 (cli) (built: Dec 20 2023 12:44:38) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.1, Copyright (c) Zend Technologies
with Zend OPcache v8.3.1, Copyright (c), by Zend Technologies
PHPのインストール
php -versionのコマンドを実行してもバージョンが表示されない場合にはphpのインストールが必要となります。phpのインストールはHomebrewを利用して行います。
% brew install php
php -versionコマンドを実行してバージョンの確認を行います。またwhichコマンドでphpのパスを確認しておきます。
% php -version
PHP 8.3.1 (cli) (built: Dec 20 2023 12:44:38) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.1, Copyright (c) Zend Technologies
with Zend OPcache v8.3.1, Copyright (c), by Zend Technologies
% which php
/usr/local/bin/php
Composerのインストール
PHPのパッケージ管理を行うComposerのインストールを行います。Laravel Valetをインストールするために利用します。
インストールされていないか確認を行いますがmacOSではデフォルトではcomposerのインストールは行われていません。バージョンが表示される場合は、composerのインストールは必要ありません。
% composer -V
zsh: command not found: composer
インストールを行うにはComposerのサイトでインストールスクリプトを確認する必要があります。Composerのサイトにアクセスすると下記のトップページ画面が表示されます。中ほど右にあるDownloadのリンクをクリックしてください。
ComposerのDownload画面が表示されます。ダウンロードを行うためにはスクリプトを実行してComposerをダウンロードする必要があります線で囲まれたphpコマンドをコピーしてターミナルに貼り付けて実行してください。
% php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Installer verified
All settings correct for using Composer
Downloading...
Composer (version 2.6.6) successfully installed to: /Users/mac/composer.phar
Use it: php composer.phar
ダウンロード完了後にコマンドを実行した実行ディレクトリにcomposer.pharファイルが作成されます。composerコマンドをどのディレクトリからも実行できるように/usr/loca/binディレクトリ以下に保存します。/usr/local/の下にbinディレクトリがない場合は作成を行います。Permission Deniedエラーが出た場合はsudoコマンドで実行してください。
% sudo mkdir /usr/local/bin
Password:
作成後、composer.pharファイルを/usr/local/binに移動してください。
% sudo mv composer.phar /usr/local/bin/composer
composer -Vコマンドでバージョンの確認を行います。
% composer -V
Composer version 2.6.6 2023-12-08 18:32:26
Laravel Valetのインストール
composerを利用してLaralve Valetのインストールを行います。
% composer global require laravel/valet
Changed current directory to /Users/mac/.composer
インストール後にvalet installコマンドを実行しますが、PATHが設定されていないため下記のエラーが発生します。
% valet
valet not found
ユーザのホームディレクトリ(ここでは/Users/mac)でPATHを設定するために.zshrcを作成し以下を記述します。
export PATH="/Users/mac/.composer/vendor/bin:$PATH"
/Users/macは各環境に合わせて設定を行ってください。zshシェルでは、~/.comoser/vendor/binの記述ではうまく行かなかったため、/Users/macも含めてパスの設定を記述しています。bashシェルを使用している場合は、bash_profileファイルに下記の記述で設定することができます。
export PATH="~/.composer/vendor/bin:$PATH"
ファイルを作成後、zshでもbashでもsourceコマンドを使って追加したPATHの設定を反映させてください。PATHの設定が反映されるとvaletコマンドへのPATHが通ります。(whichコマンドで確認)
% source .zshrc //zshシェルの場合
$ source .bash_profile //bashシェルの場合
% which valet
/Users/mac/.composer/vendor/bin/valet
% valet -V
Laravel Valet 4.6.1
valet installコマンドを実行します。valetコマンドを実行した時にpasswordを聞かれた場合はmacOSのパスワードを入力してください。
% valet install
Password:
Stopping nginx...
Installing nginx...
[nginx] is not installed, installing it now via Brew... 🍻
Installing nginx configuration...
Installing nginx directory...
Installing php...
[php] is not installed, installing it now via Brew... 🍻
Updating PHP configuration...
Restarting php...
Installing dnsmasq...
[dnsmasq] is not installed, installing it now via Brew... 🍻
Restarting dnsmasq...
Valet is configured to serve for TLD [.test]
Restarting nginx...
Valet installed successfully!
Laravel Valetのインストールが正常に完了しているか確認を行います。*.test(*は任意の文字列)に対してpingを実行します。下記のように127.0.0.1から返答があればLaravel Valetは正常にインストールされています。
% ping foobar.test
PING foobar.test (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.028 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.116 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.092 ms
Laravelのインストール
Laravelのプロジェクト用のディレクトリをユーザディレクトリの下に作成します。
% mkdir ~/Sites
% cd Sites
Sitesディレクトリの下でvalet parkコマンドを実行します。このコマンドを実行することでValetがSitesディレクトリを登録し、その下に作成するプロジェクトを認識できるようになります。
% valet park
Password:
This directory has been added to Valet's paths.
composerコマンドを利用して、Laravelプロジェクトblogの作成を行います。
% composer create-project --prefer-dist laravel/laravel blog
作成完了後blogディレクトリが作成されていることを確認します。
% ls
blog
ブラウザでhttp://blog.testにアクセスするとLaravelの初期画面が表示されます。
Laravel Valetを利用してLaravelの開発環境を構築することができました。
valet parkedコマンドで作成したプロジェクトの情報を確認することができます。
% valet parked
+------+-----+------------------+-----------------------+---------+
| Site | SSL | URL | Path | |
+------+-----+------------------+-----------------------+---------+
| blog | | http://blog.test | /Users/mac/Sites/blog | php@8.3 |
+------+-----+------------------+-----------------------+---------+
Laravel Valetの管理
Valetの起動・停止・再起動
Laravel ValetをインストールするとValetデーモンが自動起動し、OSの再起動を行ってもValetデーモンは自動起動されます。Valetデーモンの起動、停止のコマンドも準備されています。停止はvalet stopコマンドで行います。
% valet stop
Password:
Stopping php...
Stopping nginx...
Valet services have been stopped
Valet core services have been stopped. To also stop dnsmasq, run: valet stop dnsmasq
停止するとブラウザからLaravel(http://blog.test)へのアクセスはできなくなります。
起動はvalet startで行います。
% valet start
Restarting php...
Restarting nginx...
Valet services have been started
再起動はvalet restartで行うことができます。
設定ファイルの保存場所
Laravel Valetの保存場所はユーザのホームディレクトリの下にある.config/valetの下にあります。
% pwd
/Users/mac/.config/valet
% ls
Certificates Extensions Nginx config.json valet.sock
Drivers Log
config.jsonファイルの中身を確認するとドメインtestとvalet parkを実行したSitesディレクトリの情報が記述されています。
{
"tld": "test",
"loopback": "127.0.0.1",
"paths": [
"/Users/mac/Sites"
]
}
設定ファイルの内容が確認できたので次はコマンドを使って設定ファイルの内容がどのように変更されるか確認していきます。
ドメイン名の変更
デフォルトではドメイン名はtestに設定されているのでappに変更を行います。valet tldコマンドを利用します。
% valet tld app
Password:
Restarting dnsmasq...
Valet is configured to serve for TLD [.app]
Restarting php...
Restarting nginx...
Your Valet TLD has been updated to [app].
インストール直後、foobar.testにpingすると応答がありましたがドメインをappへ変更するとfoobar.testからの返答はありません。その変わり変更したドメインappのfoobar.appへのpingの応答を確認することができます。
% ping foobar.test
ping: cannot resolve foobar.test: Unknown host
% ping foobar.app
PING foobar.app (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.033 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.097 ms
変更後、ブラウザを利用してhttp://blog.appにアクセスしLaravelの初期画面が表示されればドメイン名の変更は正常に完了しています。
HTTPSを使ったアクセス(TLS/SSL設定)
デフォルトではhttpでのアクセスが可能ですが、セキュアなhttpsでのアクセスを可能にするためには、valet secureコマンドを実行します。実行すると”システム証明書信頼設定に変更を加えようとしています。”というメッセージが表示されOSのパスワードを入力する必要があります。パスワードを入力するとサービスの再起動が行われます。
% valet secure blog
Restarting nginx...
The [blog.test] site has been secured with a fresh TLS certificate.
実行後はhttps://blog.testでアクセスすることが可能となります。
.config/valetディレクトリの下にあるCertificatesディレクトリに下に関連するファイルが作成されます。
% ls
blog.test.conf blog.test.crt blog.test.csr blog.test.key
secureを設定後にvalet parkedコマンドを実行するとSSLにチェックが入っていることが確認できます。
% valet parked
+------+-----+-------------------+-----------------------+---------+
| Site | SSL | URL | Path | |
+------+-----+-------------------+-----------------------+---------+
| blog | X | https://blog.test | /Users/mac/Sites/blog | php@8.3 |
+------+-----+-------------------+-----------------------+---------+
valet securedコマンドでも確認することができます。有効期限が表示されます。
% valet secured
+-----------+-------------------------+
| Site | Valid Until |
+-----------+-------------------------+
| blog.test | 2025-01-13 12:27:18 GMT
解除する場合は、valet unsecureコマンドを利用します。
% valet unsecure blog
Password:
Restarting nginx...
The [blog.app] site will now serve traffic over HTTP.
SSLのチェックが消えます。
% valet parked
+------+-----+------------------+-----------------------+---------+
| Site | SSL | URL | Path | |
+------+-----+------------------+-----------------------+---------+
| blog | | http://blog.test | /Users/mac/Sites/blog | php@8.3 |
+------+-----+------------------+-----------------------+---------+
parkで設定したディレクトリについて
valet parkでSitesディレクトリの登録を行いましたが、登録したディレクトリのパスはvalet pathsで確認することができます。
% valet paths
[
"/Users/mac/Sites"
]
登録したパスを解除することも可能です。登録したディレクトリのパスを解除したい場合はvalet forgetコマンドを実行します。
% valet forget ~/Sites
The [/Users/mac/Sites] directory has been removed from Valet's paths.
% valet paths
No paths have been registered.
パスが解除されるとブラウザでアクセスしてもblogプロジェクトにはアクセスできなくなります。再度valet park ~/Sitesを実行すればアクセス可能となります。
複数のディレクトリを登録する
複数のディレクトリも登録可能です。新たにDevディレクトリを作成し、その中にLaravelプロジェクトpostを作成しアクセスできることを確認します。
% mkdir Dev
% valet park ~/Dev
The [/Users/mac/Dev] directory has been added to Valet's paths.
% valet paths
[
"/Users/mac/Dev",
"/Users/mac/Sites"
]
% cd Dev
% composer create-project --prefer-dist laravel/laravel post
ブラウザからhttp://post.testにアクセスしLaravelの初期画面が表示されれば複数ディレクトリの登録も正常に動作しています。
valet parkedコマンドを実行すると作成したpostが登録されていることが確認できます。
% valet parked
Password:
+------+-----+------------------+-----------------------+---------+
| Site | SSL | URL | Path | |
+------+-----+------------------+-----------------------+---------+
| post | | http://post.test | /Users/mac/Dev/post | php@8.3 |
| blog | | http://blog.test | /Users/mac/Sites/blog | php@8.3 |
+------+-----+------------------+-----------------------+---------+
特定のプロジェクトのみ設定する
ここまでSitesとDevディレクトリを作成し、それぞれにblogとpostのプロジェクトを作成しました。SitesやDevの下ではなく直接ディレクトリを指定して公開することも可能です。その場合はvalet linkコマンドを利用します。
デスクトップ直下にlaravel10という名前のLaravelプロジェクトを作成します。
% composer create-project --prefer-dist laravel/laravel laravel10
プロジェクトの作成後、valet linkコマンドを実行します。
% cd laravel10
% valet link laravel10
Password:
A [laravel10] symbolic link has been created in [/Users/mac/.config/valet/Sites/laravel10].
ブラウザでlaravel10.testにアクセスするとLaravelの初期画面が表示されればlinkの設定も正常に動作しています。
valet pathsコマンドを実行すると新しいパスが追加されていることがわかります。個別に登録したプロジェクトは/Users/mac/.config/valet/Sitesの下にリンクされることでアクセスが可能になっていることがわかります。
% valet paths
[
"/Users/mac/.config/valet/Sites",
"/Users/mac/Dev",
"/Users/mac/Sites"
]
リンクを解除する際はvalet unlinkコマンドを実行します。
valet linksコマンドを使えばリンクを貼っているプロジェクトディレクトリを確認することができます。
% valet links
+-----------+-----+-----------------------+------------------------------+-------------+
| Site | SSL | URL | Path | PHP Version |
+-----------+-----+-----------------------+------------------------------+-------------+
| laravel10 | | http://laravel10.test | /Users/mac/Desktop/laravel10 | php@8.3 |
+-----------+-----+-----------------------+------------------------------+-------------+
valet parkedには表示されません。
% valet parked
+------+-----+------------------+-----------------------+---------+
| Site | SSL | URL | Path | |
+------+-----+------------------+-----------------------+---------+
| post | | http://post.test | /Users/mac/Dev/post | php@8.3 |
| blog | | http://blog.test | /Users/mac/Sites/blog | php@8.3 |
+------+-----+------------------+-----------------------+---------+
linkの引数にlaravel10を設定しましたが任意の名前をつけることができます。一度laravel10のリンクを解除してlaravelという名前リンクを貼り直します。
% valet unlink laravel10
The [laravel10] symbolic link has been removed.
mac@macnoMacBook-Pro laravel10 % valet link laravel
A [laravel] symbolic link has been created in [/Users/mac/.config/valet/Sites/laravel].
設定後はブラウザからlaravel.testでアクセスすることができます。valet linkでも設定した名前を確認することができます。
% valet links
+---------+-----+---------------------+------------------------------+-------------+
| Site | SSL | URL | Path | PHP Version |
+---------+-----+---------------------+------------------------------+-------------+
| laravel | | http://laravel.test | /Users/mac/Desktop/laravel10 | php@8.3 |
+-----------+-----+-----------------------+------------------------------+-------------+
ログに関するコマンド
valet logコマンドを実行するとログに関する情報を確認することができます。
% valet log
In order to tail a log, pass the relevant log key (e.g. "nginx")
along with any optional tail parameters (e.g. "-f" for follow).
For example: "valet log nginx -f --lines=3"
Here are the logs you might be interested in.
+---------+----------------------------------------------+
| Keys | Files |
+---------+----------------------------------------------+
| nginx | /Users/mac/.config/valet/Log/nginx-error.log |
| php-fpm | /usr/local/var/log/php-fpm.log |
+---------+----------------------------------------------+
Tip: Set custom logs by adding a "logs" key/file object
to your "/Users/mac/.config/valet/config.json" file.
Valetのアンインストール
Laravel Valetのデーモンをアンインストールしたい場合はuninstallコマンドも用意されています。
% valet uninstall
Stopping nginx...
Valet has been uninstalled.
nginxやdnsmasqインストールしたサービスを一括ですべてアンインストールするものではありません。valet startコマンドを実行するとvaletは使用することができます。
laravel/valetに関するパッケージについてはissue#589にアンインストールに関する記述があります。
Laravel Valetのコマンド一覧
本文書で利用したLaravel Valetのコマンド一覧です。
- valet start ・・・valetデーモンの起動
- valet stop ・・・valetデーモンの停止
- valet restart ・・・valetデーモンの再起動
- valet uninstall・・・valetデーモンのアンインストール
- valet park・・・PAThの登録
- valet forget・・・parkで設定したPATHの解除
- valet paths・・・PATHの一覧表示
- valet link・・・Laravelディレクトリのリンクの作成
- valet log・・・ログに関数する情報の取得
- valet secure・・・SSL/TSL設定、https接続を可能にする
- valet unsecure・・・SSL/TSL設定を解除。http接続を可能にする(デフォルト)
- valet domain [ドメイン名]・・・ドメイン名を変更する(デフォルト.test)
- valet tld [ドメイン名]・・・ドメイン名を変更する(デフォルト.test)
Mac環境であればLaravel Valetを利用することで柔軟に開発環境を構築することができます。