イントロダクションIntroduction
Valet(ベレット:従者)はMacミニマニストのためのLaravel開発環境です。Vagrantも不要、Apacheも不要、Nginxも不要、/etc/hosts
ファイルも不要です。更に、ローカルトンネルを使って、サイトを公開し、シェアすることもできます。ええ、私達はこういうのも好きなんですよね。Valet is a Laravel development
environment for Mac minimalists. No Vagrant, No
Apache, No Nginx, No /etc/hosts
file.
You can even share your sites publicly using local
tunnels. Yeah, we like it too.
Laravel Valetはマシン起動時にバックグランドでCaddyがいつも実行されるように、Macを設定します。そのため、DnsMasqを使用し、Valetは*.dev
ドメインへの全リクエストを、ローカルマシンへインストールしたサイトへ向けるようにプロキシ動作します。Laravel Valet configures your Mac
to always run Caddy[https://caddyserver.com]
in the background when your machine starts. Then,
using
DnsMasq[https://en.wikipedia.org/wiki/Dnsmasq],
Valet proxies all requests on the *.dev
domain to point to sites installed on your local
machine.
言い換えれば、大体7MBのRAMを使う、とても早いLaravelの開発環境です。ValetはVagrantやHomesteadを完全に置き換えるものではありませんが、柔軟な基礎、特にスピード重視であるか、RAMが限られているマシンで動作させるのには、素晴らしい代替になります。In other words, a blazing fast Laravel development environment that uses roughly 7 MB of RAM. Valet isn't a complete replacement for Vagrant or Homestead, but provides a great alternative if you want flexible basics, prefer extreme speed, or are working on a machine with a limited amount of RAM.
Valetは以下をサポートしていますが、これらに限定されません。Out of the box, Valet support includes, but is not limited to:
独自のカスタムドライバでValetを拡張できます。However, you may extend Valet with your own custom drivers[#custom-valet-drivers].
ValetとHomesteadValet Or Homestead
ご存知のように、ローカルのLaravel開発環境としてHomesteadも用意しています。HomesteadとValetは利用者の目的とローカルの開発についてのアプローチが異なります。Homesteadは自動的にNginx設定を行うUbuntuの完全な仮想マシンを提供しています。HomesteadはLinux開発環境の完全な仮想化を行いたい、もしくはWindows/Linux上で動作させたい場合、素晴らしい選択肢になります。As you may know, Laravel offers Homestead[/docs/{{version}}/homestead], another local Laravel development environment. Homestead and Valet differ in regards to their intended audience and their approach to local development. Homestead offers an entire Ubuntu virtual machine with automated Nginx configuration. Homestead is a wonderful choice if you want a fully virtualized Linux development environment or are on Windows / Linux.
ValetはMac上でのみサポートされ、PHPとデータベースサーバを直接ローカルマシンへインストールする必要があります。Homebrewを利用し、brew
install php70
とbrew install
mariadb
のようなコマンドを実行すれば、簡単にインストールできます。Valetは最低限度のリソースを使い、とても早いローカル開発環境を提供します。そのため、PHPとMySQLだけが必要で、完全な仮想開発環境は必要ない場合にぴったりです。Valet only supports Mac, and
requires you to install PHP and a database server
directly onto your local machine. This is easily
achieved by using Homebrew[http://brew.sh/]
with commands like brew install php70
and brew install mariadb
. Valet
provides a blazing fast local development
environment with minimal resource consumption, so
it's great for developers who only require PHP /
MySQL and do not need a fully virtualized
development environment.
ValetとHomesteadのどちらを選んでも、Laravelの開発環境に向け設定されており、良い選択になるでしょう。どちらを選ぶかは、自分の好みとチームの必要により決まるでしょう。Both Valet and Homestead are great choices for configuring your Laravel development environment. Which one you choose will depend on your personal taste and your team's needs.
インストールInstallation
ValetにはMacオペレーティングシステムとHomebrewが必要です。インストールする前に、ApacheやNginxのようなローカルマシンの80番ポートへバインドするプログラムがないことを確認してください。Valet requires the Mac operating system and Homebrew[http://brew.sh/]. Before installation, you should make sure that no other programs such as Apache or Nginx are binding to your local machine's port 80.
Valetがインストールできたら、ping
foobar.dev
のようなコマンドで、ターミナルから*.dev
ドメインに対してpingを実行してください。Valetが正しくインストールされていれば、このドメインは127.0.0.1
へ対応していることが分かるでしょう。Once Valet is installed, try
pinging any *.dev
domain on your
terminal using a command such as ping
foobar.dev
. If Valet is installed
correctly you should see this domain responding on
127.0.0.1
.
Valetはマシンが起動されると、毎回デーモンを自動的に起動します。Valetが完全にインストールされていれば、valet
start
やvalet
install
を再び実行する必要は永久にありません。Valet will automatically start
its daemon each time your machine boots. There is no
need to run valet start
or valet
install
ever again once the initial Valet
installation is complete.
他のドメインの使用Using Another Domain
デフォルトではValetは.dev
TLDをプロジェクトのドメインとして処理します。他のドメインを使いたい場合、valet domain
tld-name
コマンドを使ってください。By default, Valet serves your
projects using the .dev
TLD. If you'd
like to use another domain, you can do so using the
valet domain tld-name
command.
たとえば、.dev
の代わりに.app
を使用したければ、valet
domain
app
と実行します。Valetは*.app
をプロジェクトのために自動的に使い始めます。For example, if you'd like to use
.app
instead of .dev
, run
valet domain app
and Valet will start
serving your projects at *.app
automatically.
データベースDatabase
データベースを使いたい場合、コマンドラインでbrew install
mariadb
を実行し、MariaDBを試してください。127.0.0.1
でデータベースに接続し、ユーザ名はroot
、パスワードは空文字列です。If you need a database, try
MariaDB by running brew install mariadb
on your command line. You can connect to the
database at 127.0.0.1
using the
root
username and an empty string for
the password.
リリースノートRelease Notes
Version 1.1.5Version 1.1.5
Valetの1.1.5リリースでは、内部的に多く改善しました。The 1.1.5 release of Valet brings a variety of internal improvements.
アップグレード方法Upgrade Instructions
composer global
update
でValetをアップグレードした後に、ターミナルでvalet
install
コマンドを実行してください。After updating your Valet
installation using composer global
update
, you should run the valet
install
command in your
terminal.
Version 1.1.0Version 1.1.0
Valet1.1.0リリースでは、数多く改善が行われました。HTTPリクエストを処理するPHP組み込みサーバはCaddyに置き換えました。Caddyの導入により、多くの機能が向上し、組み込みPHPサーバにブロックされることなく、Valetサイトが他のValetサイトへHTTPリクエスト送れるようになりました。The 1.1.0 release of Valet brings a variety of great improvements. The built-in PHP server has been replaced with Caddy[https://caddyserver.com/] for serving incoming HTTP requests. Introducing Caddy allows for a variety of future improvements and allows Valet sites to make HTTP requests to other Valet sites without blocking the built-in PHP server.
アップグレード方法Upgrade Instructions
Valetをcomposer global
update
でアップデートした後に、新しいCaddyデーモンファイルをシステム上に作成するため、ターミナルでvalet
install
コマンドを実行してください。After updating your Valet
installation using composer global
update
, you should run the valet
install
command in your terminal to
create the new Caddy daemon file on your
system.
サイト動作Serving Sites
Valetがインストールできたら、サイトを動作させる準備ができました。Laravelサイトを動作させるために役立つ、park
とlink
の2コマンドを用意しています。Once Valet is installed, you're
ready to start serving sites. Valet provides two
commands to help you serve your Laravel sites:
park
and link
.
**必要なのはこれだけです。**これで"parked"ディレクトリ内で作成されたLaravelプロジェクトは、http://フォルダ名.dev
規約に従い、自動的に動作します。That's all there is to
it. Now, any Laravel project you create
within your "parked" directory will
automatically be served using the
http://folder-name.dev
convention.
link
コマンドはpark
のように親ディレクトリを指定するのではなく、各ディレクトリ中で一つのサイトを動作させるのに便利です。The link
command may
also be used to serve your Laravel sites. This
command is useful if you want to serve a single site
in a directory and not the entire
directory.
リンクされた全ディレクトリをリストするには、valet
links
コマンドを実行してください。シンボリックリンクを外すときは、valet
unlink app-name
を使います。To see a listing of all of your
linked directories, run the valet links
command. You may use valet unlink
app-name
to destroy the symbolic
link.
Valetはデフォルトで通常のHTTP通信で接続します。しかし、HTTP/2を使った暗号化されたTLSで通信したい場合は、secure
コマンドを使ってください。たとえば、laravel.del
ドメインでValetによりサイトが動作している場合、以下のコマンドを実行することで安全な通信を行います。By default, Valet serves sites
over plain HTTP. However, if you would like to serve
a site over encrypted TLS using HTTP/2, use the
secure
command. For example, if your
site is being served by Valet on the
laravel.dev
domain, you should run the
following command to secure it:
valet secure laravel
サイトを「安全でない」状態へ戻し、通常のHTTP通信を使いたい場合は、unsecure
コマンドです。secure
コマンドと同様に、セキュアな通信を辞めたいホスト名を指定します。To "unsecure" a site
and revert back to serving its traffic over plain
HTTP, use the unsecure
command. Like
the secure
command, this command
accepts the host name that you wish to
unsecure:
valet unsecure laravel
サイトの共有Sharing Sites
Valetはローカルサイトを世界と共有するコマンドも用意しています。Valetがインストールしてあれば、他のソフトウェアは必要ありません。Valet even includes a command to share your local sites with the world. No additional software installation is required once Valet is installed.
サイトを共有するには、ターミナルでサイトのディレクトリに移動し、valet
share
コマンドを実行します。公開用のURLはクリップボードにコピーされますので、ブラウザに直接ペーストしてください。これだけです。To share a site, navigate to the
site's directory in your terminal and run the
valet share
command. A publicly
accessible URL will be inserted into your clipboard
and is ready to paste directly into your browser.
That's it.
サイトの共有を停止するには、Control
C
を入力し、プロセスを終了してください。To stop sharing your site, hit
Control C
to cancel the
process.
ログの確認Viewing Logs
全サイトの全ログをターミナルに流したい場合は、valet
logs
コマンドを実行してください。新しいログが発生した時点で、ターミナルに表示されます。これはターミナルで途切れることなく、全ログファイルを一箇所で確認するために良い手段です。If you would like to stream all
of the logs for all of your sites to your terminal,
run the valet logs
command. New log
entries will display in your terminal as they occur.
This is a great way to stay on top of all of your
log files without ever having to leave your
terminal.
カスタムValetドライバCustom Valet Drivers
Valetでサポートされていない、他のフレームワークやCMSでPHPアプリケーションを実行するには、独自のValet「ドライバ」を書く必要があります。Valetをインストールすると作成される、~/.valet/Drivers
ディレクトリにSampleValetDriver.php
ファイルが存在しています。このファイルは、カスタムドライバーをどのように書いたら良いかをデモンストレートするサンプルドライバの実装コードです。ドライバを書くために必要なserves
、isStaticFile
、frontControllerPath
の3メソッドを実装するだけです。You can write your own Valet
"driver" to serve PHP applications running
on another framework or CMS that is not natively
supported by Valet. When you install Valet, a
~/.valet/Drivers
directory is created
which contains a SampleValetDriver.php
file. This file contains a sample driver
implementation to demonstrate how to write a custom
driver. Writing a driver only requires you to
implement three methods: serves
,
isStaticFile
, and
frontControllerPath
.
全3メソッドは$sitePath
、$siteName
、$uri
を引数で受け取ります。$sitePath
は、/Users/Lisa/Sites/my-project
のように、サイトプロジェクトへのフルパスです。$siteName
は"ホスト"
/
"サイト名"記法のドメイン(my-project
)です。$uri
はやって来たリクエストのURI(/foo/bar
)です。All three methods receive the
$sitePath
, $siteName
, and
$uri
values as their arguments. The
$sitePath
is the fully qualified path
to the site being served on your machine, such as
/Users/Lisa/Sites/my-project
. The
$siteName
is the "host" /
"site name" portion of the domain
(my-project
). The $uri
is
the incoming request URI
(/foo/bar
).
カスタムValetドライバを書き上げたら、フレームワークValetDriver.php
命名規則をつかい、~/.valet/Drivers
ディレクトリ下に設置してください。たとえば、WordPress用にカスタムValetドライバを書いたら、ファイル名はWordPressValetDriver.php
になります。Once you have completed your
custom Valet driver, place it in the
~/.valet/Drivers
directory using the
FrameworkValetDriver.php
naming
convention. For example, if you are writing a custom
valet driver for WordPress, your file name should be
WordPressValetDriver.php
.
カスタムValetドライバで実装する各メソッドのサンプルコードを見ていきましょう。Let's take at a sample implementation of each method your custom Valet driver should implement.
serves
メソッドThe
serves
Method
serves
メソッドは、そのドライバがやって来たリクエストを処理すべき場合に、true
を返してください。それ以外の場合はfalse
を返してください。そのためには、メソッドの中で、渡された$sitePath
の内容が、動作させようとするプロジェクトタイプを含んでいるかを判定します。The serves
method
should return true
if your driver
should handle the incoming request. Otherwise, the
method should return false
. So, within
this method you should attempt to determine if the
given $sitePath
contains a project of
the type you are trying to serve.
では擬似サンプルとして、WordPressValetDriver
を書いてみましょう。servesメソッドは以下のようになります。For example, let's pretend we are
writing a WordPressValetDriver
. Our
serve method might look something like
this:
/**
* このドライバでリクエストを処理するか決める
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return void
*/
public function serves($sitePath, $siteName, $uri)
{
return is_dir($sitePath.'/wp-admin');
}
isStaticFile
メソッドThe isStaticFile
Method
isStaticFile
はリクエストが画像やスタイルシートのような「静的」なファイルであるかを判定します。ファイルが静的なものであれば、そのファイルが存在するディスク上のフルパスを返します。リクエストが静的ファイルでない場合は、false
を返します。The isStaticFile
should determine if the incoming request is for a
file that is "static", such as an image or
a stylesheet. If the file is static, the method
should return the fully qualified path to the static
file on disk. If the incoming request is not for a
static file, the method should return
false
:
/**
* リクエストが静的なファイルであるかを判定する
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return string|false
*/
public function isStaticFile($sitePath, $siteName, $uri)
{
if (file_exists($staticFilePath = $sitePath.'/public/'.$uri)) {
return $staticFilePath;
}
return false;
}
注意:
isStaticFile
メソッドは、リクエストのURIが/
ではなく、serves
メソッドでtrue
が返された場合のみ呼びだされます。Note: TheisStaticFile
method will only be called if theserves
method returnstrue
for the incoming request and the request URI is not/
.
frontControllerPath
メソッドThe
frontControllerPath
Method
frontControllerPath
メソッドは、アプリケーションの「フロントコントローラ」への絶対パスを返します。通常は"index.php`ファイルか、似たようなファイルでしょう。The
frontControllerPath
method should
return the fully qualified path to your
application's "front controller", which is
typically your "index.php" file or
equivalent:
/**
* アプリケーションのフロントコントローラへの絶対パスの取得
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return string
*/
public function frontControllerPath($sitePath, $siteName, $uri)
{
return $sitePath.'/public/index.php';
}
その他のValetコマンドOther Valet Commands
コマンドCommand | 説明Description |
---|---|
valet forget valet
forget |
"park"された(サイト検索の親ディレクトリとして登録されたJ)ディレクトリでこのコマンドを実行し、サイト検索対象のディレクトリリストから外します。Run this command from a "parked" directory to remove it from the parked directory list. |
valet paths valet
paths |
"park"されたすべてのパスを表示します。View all of your "parked" paths. |
valet restart valet
restart |
Valetデーモンをリスタートします。Restart the Valet daemon. |
valet start valet
start |
Valetデーモンをスタートします。Start the Valet daemon. |
valet stop valet
stop |
Valetデーモンを停止します。Stop the Valet daemon. |
valet uninstall valet
uninstall |
Valetデーモンを完全にアンインストールします。Uninstall the Valet daemon entirely. |