Valet 还是 Homestead
Laravel 提供了两种本地开发环境 Homestead 和 Valet。 Homestead 和 Valet 的不同之处在于目标受众和本地开发的方式。
Homestead 提供了一个完整的、具有自动化的 Nginx 配置的 Ubuntu 虚拟机。如果你想要完全虚拟化的 Linux 开发环境或 Windows/Linux,Homestead 是一个不错的选择。
Valet 仅支持 Mac,并要求你将 PHP 和数据库服务器直接安装到本地机器上。
这可以很容易地通过使用 Homebrew 相关命令来实现,比如 brew install php72
和 brew install mysql
。
Valet 提供了一个极快的、资源消耗最少本地开发环境,非常适合只需要 PHP/MySQL 并且不需要虚拟开发环境的开发人员。
Valet 和 Homestead 都是配置 Laravel 开发环境的绝佳选择。选择哪一个仅仅取决于个人喜好和团队的需求。
我的选择
没错,我用 Windows 开发时使用的 Homestead ,用Mac开发之后就改用 Valet 了。
Valet 简介
Valet 是 Mac 极简主义者的 Laravel 开发环境。没有 Vagrant,不需要配置 /etc/hosts 文件。甚至可以使用本地隧道公开共享你的站点。
Laravel Valet 为您的 Mac 设置了开机后始终在后台运行 Nginx 服务。Valet 使用 DnsMasq 将所有指向安装在本地的计算机站点请求代理到 *.test 结尾的域名上。
简单高效的完美诠释:一个速度极快的 Laravel 开发环境只占用 7MB 内存。
Valet 并不是想要完全替换 Vagrant 或 Homestead,只是提供另外一种使用起来更加灵活、方便、以及内存占用更小的选择。
Valet 支持但不局限于以下内容:
Laravel Lumen Bedrock CakePHP 3 Concrete5 Contao Craft Drupal Jigsaw Joomla Katana Kirby Magento OctoberCMS Sculpin Slim Statamic Static HTML Symfony WordPress Zend
Valet的安装
Valet 需要 macOS 系统和 Homebrew。在安装之前,要确保没有其它程序(如 Apache 或 Nginx)占用了本地机器的 80 端口。
- 使用 brew update 将 Homebrew 安装或更新到最新版本。
- 使用 Homebrew 的 brew install php 命令安装 PHP 7.3。
- 安装 Composer.
- 使用 Composer 的 composer global require laravel/valet 命令安装 Valet。并确保 ~/.composer/vendor/bin 目录在系统的 "PATH" 中。
- 运行 valet install 命令来配置和安装 Valet 和 DnsMasq,并注册 Valet 后台服务,随系统运行自行启动。
安装完 Valet 后,可以尝试使用类似 ping xxx.test 的命令在终端上 ping 任何一个 *.test 的域名。如果 Valet 安装正确,可以在终端上看到来自 127.0.0.1 的响应。
每次机器启动时,Valet 会自动启动其进程。所以只要完成了 Valet 的初始化,就无需再次运行 valet start 或 valet install。
如何使用其它域名
默认情况下,Valet 使用 .test 顶级域名为你的项目提供服务。如果你想使用其它域名,可以使用 valet tld tld-name 命令。
例如,如果你想使用 .xyz 来代替 .test,运行 valet tld xyz,Valet 会自动将站点顶级域名改为 *.xyz 。
数据库
如果你要使用数据库,请在终端运行 brew install mysql@5.7 安装 MySQL。
一旦安装完成,你可以使用 brew services start mysql@5.7 命令启动 MySQL。
然后,你可以使用 root 用户名和空字符串密码连接到 127.0.0.1 的数据库。
指定 PHP 版本
Valet 允许你使用 valet use php@version 命令来切换 PHP 版本。
如果指定版本尚未安装,Valet 将通过 Brew 来安装指定的 PHP 版本:
valet use php@7.2 valet use php
Valet的升级
可以在终端使用 composer global update 命令来更新 Valet。
升级后,如有需要,最好再次运行 valet install ,以便 Valet 对配置文件进行升级。
升级到 Valet 2.0
Valet 2.0 将 Valet 底层的 Web 服务器从 Caddy 转移到 Nginx。
升级到此版本之前,你应该运行以下命令停止并卸载现有的 Caddy 进程:
valet stop valet uninstall
接下来,就根据你采用的安装方式来升级 Valet (通常是通过 Git 或 Composer )。
如果是通过 Composer 安装了 Valet ,则应使用以下命令更新到最新的主要版本:
composer global require laravel/valet
如果更新了 Valet 的源码,应该执行 install 命令:
valet install valet restart
升级过后,可能需要重新设置或重新链接你的站点。
服务站点
安装了 Valet 之后,就可以开始设置站点。
Valet 提供两个命令来为 Laravel 的站点提供服务:park 和 link。
park 命令
运行 mkdir ~/Sites 命令在 Mac 上创建一个新的目录。
接下来,运行 cd ~/Sites 和 valet park 将当前的工作目录作为 Valet 搜索站点的路径。
接下来,在这个目录中创建一个新的 Laravel 站点,比如:laravel new blog。
在浏览器中打开 blog.test
就这么简单,在 『parked』的目录中创建的任何 Laravel 项目都将自动使用这种方式访问: folder-name.test
link 命令
如果要在目录中提供单个站点而不是整个目录,就使用 link 命令。
要使用该命令,先在终端里切换到你的某个项目并运行 valet link app-name。
Valet 会在 ~/.config/valet/Sites 中创建一个符号链接指向当前的目录。
运行 link 命令后,你可以在浏览器通过这种方式访问站点: app-name.test
运行 valet links 命令可以查看所有目录链接的列表。你还可以使用 valet unlink app-name 来删除符号链接。
注意:可以使用 valet link 将多个(子)域名指向同一个应用。要添加子域名或其它域名到应用,可以在应用目录下运行 valet link subdomain.app-name。
使用 TLS 保护站点
默认情况下,Valet 服务站点通过纯 HTTP 的方式。
但是,如果想一个站点使用 HTTP/2 通过加密 TLS 提供服务,使用 secure 命令。
例如,如果站点通过 Valet 在 laravel.test 域上提供服务,你应当运行如下的命令去保护它:
valet secure laravel
要一个站点『解除保护』并恢复为通过纯 HTTP 提供服务它的流量,使用 unsecure 命令。
与 secure 命令一样,该命令接受你希望去解除保护的主机名称:
valet unsecure laravel
总结
好了,上述就是 Valet 的基础功能,是不是非常简单高效。
上述这些功能已经能够满足我们在本地开发了,当然 Valet 支持的功能不止这些,还包括:
共享站点、配置网站的环境变量、自定义 Valet 驱动、进程相关操作等等。