[TOC] #### 1. Laravel Valet 介紹 --- [Laravel Valet](https://github.com/laravel/valet) 是 macOS 極簡主義者的開發(fā)環(huán)境。Laravel Valet 將您的 mac 配置為在您的機(jī)器啟動時(shí)始終在后臺運(yùn)行 [Nginx](https://www.nginx.com),然后使用 [Dnsmasq](https://en.wikipedia.org/wiki/Dnsmasq),Valet 代理 `*.test` 域上的所有請求指向安裝在本地計(jì)算機(jī)上的站點(diǎn) Valet 是一個(gè)超快的 Laravel 開發(fā)環(huán)境,不需要配置 `/etc/hosts`,它大約使用 7 MB 的 RAM。 #### 2. Laravel Valet 安裝 --- Valet 需要 macOS 和 Homebrew。在安裝前應(yīng)該確保沒有其他程序綁定到本地計(jì)算機(jī)的 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\. 執(zhí)行 Valet 的安裝命令。這將安裝和配置 Valet 和 DnsMasq。此外,Valet 所依賴的守護(hù)進(jìn)程將配置為在系統(tǒng)啟動時(shí)啟動 ``` 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 版本 如果沒有安裝這個(gè)版本 Valet 將通過 Homebrew 安裝指定的 PHP 版本 ``` valet use php@7.4 ``` 也可以在項(xiàng)目的根目錄中創(chuàng)建一個(gè) `. valetphprc` 文件,在這個(gè)文件中記錄站點(diǎn)應(yīng)該使用的 PHP 版本 ``` php@7.2 ``` 使用命令寫入 ``` echo php@7.2 > .valetphprc ``` 創(chuàng)建此文件后,可以簡單的執(zhí)行 `valet use` 命令,該命令通過讀取文件來確定站點(diǎn)首選 PHP 版本 即使你安裝了多個(gè) PHP 版本,Valet 一次也只提供一個(gè) PHP 版本 ``` valet use ``` #### 5. 服務(wù)站點(diǎn) --- 安裝 Valet 后,就可以開始為應(yīng)用程序提供服務(wù)了。Valet 提供 `park` 和 `link` 兩個(gè)命令來幫助您為應(yīng)用程序提供服務(wù) **1\. valet park 命令** park 命令會注冊一個(gè)包含您的應(yīng)用程序的目錄,一旦目錄被 Valet “認(rèn)可”,也就是被 `park`,該目錄中的所有子目錄都可以通過 `http://子目錄名.test` 訪問。此外,valet 自動允許使用通配符子域訪問該站點(diǎn)(比如: `http://foo.子目錄名.test`) 假設(shè)目錄結(jié)構(gòu)如下: ``` code ├── html ├── css ``` 在 code 目錄中執(zhí)行下面命令(code 目錄被 valet 認(rèn)可了) ``` valet park ``` 然后就可以通過下面域名訪問子目錄 ``` http://html.test http://css.test ``` **2\. valet link 命令** park 命令用于給目錄下的所有子目錄配置站點(diǎn),而如果只是想在目錄中提供單個(gè)站點(diǎn)而不是整個(gè)目錄,則需要使用 link 命令 使用 link 命令將應(yīng)用程序鏈接到 valet 后,可以使用其目錄名稱作為域名訪問該應(yīng)用程序,當(dāng)然,也可以指定訪問名稱。link 命令像 park 命令一樣支持使用通配符子域訪問該站點(diǎn) 給當(dāng)前目錄配置站點(diǎn): ``` # 訪問域名默認(rèn)為: 當(dāng)前目錄名.test valet link # 訪問域名默認(rèn)為: name.test valet link [name] ``` 假設(shè)當(dāng)前在 laravel 目錄,使用示例: ``` # 訪問域名: laravel.test valet link # 訪問域名: blog.test valet link blog ``` 查看使用 link 命令添加的站點(diǎn) ``` valet links ``` 刪除通過 link 命令添加的站點(diǎn) ``` # 刪除當(dāng)前目錄的 link valet unlink # 刪除指定名稱的 link valet unlink name ``` #### 6. 定制 Valet 驅(qū)動 --- Valet 是為 Laravel 定制的開發(fā)環(huán)境,默認(rèn)是不支持 ThinkPHP 等常用框架和 CMS 但是可以自己編寫 Valet 驅(qū)動程序在 Valet 本身不支持的框架或 CMS 上運(yùn)行 PHP 應(yīng)用程序提供服務(wù) 安裝 Valet 時(shí),會在 `~/.config/valet/Drivers` 目錄中創(chuàng)建一個(gè)包含 `SampleValetDriver.php`,這是一個(gè)驅(qū)動程序?qū)崿F(xiàn)示例,用于演示如何編寫自定義驅(qū)動程序,編寫驅(qū)動程序只需要實(shí)現(xiàn)三個(gè)方法: `servers`、`isStaticFile`、`frontControllerPath ` 這三個(gè)方法都接收 `$sitePath`、`$siteName `、`$uri` 的值作為它們的參數(shù) $sitePath 是站點(diǎn)的絕對路徑地址,示例: ``` /Users/liang/code/api/news ``` $siteName 是域名的站點(diǎn)名稱 ``` 訪問域名: http://news.test,那么 $siteName 的值為: news 訪問域名: http://api.news.test,那么 $siteName 的值為: api.news ``` $uri 是請求地址中的 uri 值(不包含查詢字符串) ``` /index/abc ``` #### 7. Valet 常用命令 --- | 命令 | 描述 | | ------------ | ------------ | | valet list | 列出所有命令 | | valet park | 目錄下的所有子目錄作為訪問站點(diǎn) | | valet paths | 查看所有被 park 的目錄 | | valet forget | 將當(dāng)前目錄從已 park 列表中刪除 | | valet link [name] | 配置單個(gè)站點(diǎn) | | valet links | 查看所有通過 link 配置的站點(diǎn) | | valet unlink [name] | 刪除 links 列表中的站點(diǎn) | | valet start | 啟動 valet | | valet stop | 停止 valet | | valet restart | 重啟 valet | | valet uninstall | 卸載 valet | | valet use php@version | 切換 Valet 使用的 PHP 版本 | | valet use | 從 .valetphprc 文件讀取首選 PHP 版本 |