[TOC] #### 1. Laravel Valet 介绍 --- [Laravel Valet](https://github.com/laravel/valet) 是 macOS 极简主义者的开发环境。Laravel Valet 将您的 mac 配置为在您的机器启动时始终在后台运行 [Nginx](https://www.nginx.com),然后使用 [Dnsmasq](https://en.wikipedia.org/wiki/Dnsmasq),Valet 代理 `*.test` 域上的所有请求指向安装在本地计算机上的站点 Valet 是一个超快的 Laravel 开发环境,不需要配置 `/etc/hosts`,它大约使用 7 MB 的 RAM。 #### 2. Laravel Valet 安装 --- Valet 需要 macOS 和 Homebrew。在安装前应该确保没有其他程序绑定到本地计算机的 80 端口 1\. 将 homebrew 更新到最新版 ``` brew update ``` 2\. 安装 PHP ``` brew install php ``` 3\. 使用 brew 安装 nginx ``` brew install nginx ``` 4\. 安装 composer 并将 Valet 安装为全局 composer 包 ``` brew install composer composer global require laravel/valet ``` 5\. 执行 Valet 的安装命令。这将安装和配置 Valet 和 DnsMasq。此外,Valet 所依赖的守护进程将配置为在系统启动时启动 ``` valet install ``` #### 3. 测试 Laravel Valet --- 查看 Valet 的版本号 ``` valet --version valet -V ``` ping 任意 `*.test` 格式的域名,显示的 IP 的都是 `127.0.0.1` 证明 Valet 安装成功 ``` ping liang.test ping itqaq.test ``` #### 4. PHP 版本 --- Valet 允许您使用 `valet use php@version` 命令切换 PHP 版本 如果没有安装这个版本 Valet 将通过 Homebrew 安装指定的 PHP 版本 ``` valet use php@7.4 ``` 也可以在项目的根目录中创建一个 `. valetphprc` 文件,在这个文件中记录站点应该使用的 PHP 版本 ``` php@7.2 ``` 使用命令写入 ``` echo php@7.2 > .valetphprc ``` 创建此文件后,可以简单的执行 `valet use` 命令,该命令通过读取文件来确定站点首选 PHP 版本 即使你安装了多个 PHP 版本,Valet 一次也只提供一个 PHP 版本 ``` valet use ``` #### 5. 服务站点 --- 安装 Valet 后,就可以开始为应用程序提供服务了。Valet 提供 `park` 和 `link` 两个命令来帮助您为应用程序提供服务 **1\. valet park 命令** park 命令会注册一个包含您的应用程序的目录,一旦目录被 Valet “认可”,也就是被 `park`,该目录中的所有子目录都可以通过 `http://子目录名.test` 访问。此外,valet 自动允许使用通配符子域访问该站点(比如: `http://foo.子目录名.test`) 假设目录结构如下: ``` code ├── html ├── css ``` 在 code 目录中执行下面命令(code 目录被 valet 认可了) ``` valet park ``` 然后就可以通过下面域名访问子目录 ``` http://html.test http://css.test ``` **2\. valet link 命令** park 命令用于给目录下的所有子目录配置站点,而如果只是想在目录中提供单个站点而不是整个目录,则需要使用 link 命令 使用 link 命令将应用程序链接到 valet 后,可以使用其目录名称作为域名访问该应用程序,当然,也可以指定访问名称。link 命令像 park 命令一样支持使用通配符子域访问该站点 给当前目录配置站点: ``` # 访问域名默认为: 当前目录名.test valet link # 访问域名默认为: name.test valet link [name] ``` 假设当前在 laravel 目录,使用示例: ``` # 访问域名: laravel.test valet link # 访问域名: blog.test valet link blog ``` 查看使用 link 命令添加的站点 ``` valet links ``` 删除通过 link 命令添加的站点 ``` # 删除当前目录的 link valet unlink # 删除指定名称的 link valet unlink name ``` #### 6. 定制 Valet 驱动 --- Valet 是为 Laravel 定制的开发环境,默认是不支持 ThinkPHP 等常用框架和 CMS 但是可以自己编写 Valet 驱动程序在 Valet 本身不支持的框架或 CMS 上运行 PHP 应用程序提供服务 安装 Valet 时,会在 `~/.config/valet/Drivers` 目录中创建一个包含 `SampleValetDriver.php`,这是一个驱动程序实现示例,用于演示如何编写自定义驱动程序,编写驱动程序只需要实现三个方法: `servers`、`isStaticFile`、`frontControllerPath ` 这三个方法都接收 `$sitePath`、`$siteName `、`$uri` 的值作为它们的参数 $sitePath 是站点的绝对路径地址,示例: ``` /Users/liang/code/api/news ``` $siteName 是域名的站点名称 ``` 访问域名: http://news.test,那么 $siteName 的值为: news 访问域名: http://api.news.test,那么 $siteName 的值为: api.news ``` $uri 是请求地址中的 uri 值(不包含查询字符串) ``` /index/abc ``` #### 7. Valet 常用命令 --- | 命令 | 描述 | | ------------ | ------------ | | valet list | 列出所有命令 | | valet park | 目录下的所有子目录作为访问站点 | | valet paths | 查看所有被 park 的目录 | | valet forget | 将当前目录从已 park 列表中删除 | | valet link [name] | 配置单个站点 | | valet links | 查看所有通过 link 配置的站点 | | valet unlink [name] | 删除 links 列表中的站点 | | valet start | 启动 valet | | valet stop | 停止 valet | | valet restart | 重启 valet | | valet uninstall | 卸载 valet | | valet use php@version | 切换 Valet 使用的 PHP 版本 | | valet use | 从 .valetphprc 文件读取首选 PHP 版本 |