利用 Valet 開發和除錯 PHP 專案

coding01發表於2019-02-16

對於開發者來說,為自己投資買一臺 Mac,這可是「低投資高回報」,平時在開發 PHP 專案時,常規的做法需要在電腦上安裝一系列開發工具,如: XAMP,還需要配置開發環境,如果涉及到多語言開發,就有可能出現電腦上塞滿了各種工具,電腦基本處於高負荷使用,基本不用做其他事情了。

好在開發 PHP,尤其是基於 Laravel 框架的,完全可以用上 Laravel Valet 了。

Valet 概念

Valet 是為 Mac 提供的極簡主義開發環境,沒有 Vagrant ,也無需 /etc/hosts 檔案,甚至可以使用本地隧道公開共享你的站點。Yeah, we like it too.

Laravel Valet 會在你的 Mac 上將 Nginx 設定為隨系統啟動後臺執行,然後使用 DnsMasq , Valet 將所有的請求代理到 *.dev 域名並指向本地安裝的站點目錄。

換句話說,一個速度極快的 Laravel 開發環境僅僅需要佔用 7MB 記憶體。 Valet 並不是想要替代 Vagrant 或者 Homestead,只是提供另外一種選擇,更加靈活、方便、以及佔用更小的記憶體。

Valet 安裝

1.安裝或更新 Homebrew (brew.sh/) 到最新版本,使用命令 brew update

2.安裝 PHP:brew install homebrew/php/php71


注:如果安裝了其它版本 PHP,可以通過命令 brew link 替換。

3.安裝 Composer: www.phpcomposer.com/

4.通過 composer 安裝 Valet:composer global require laravel/valet

5.執行 valet install 命令。它將會配置並安裝 Valet 和 DnsMasq ,並且將 Valet 的程式註冊為隨系統啟動。

注:Valet 將會在每次系統啟動時自動啟動,而不需要你每次執行 valet start 或 valet install。

Valet 命令

1.valet link app-name

對於每個 Laravel 專案,只要在該專案主目錄下,執行該命令,則 Valet 將會在 ~/.valet/Sites 中建立一個符號連結並指向當前 Laravel 專案目錄。只要在瀏覽器輸入 app-name.dev/ 既可訪問該專案了。

2.valet park

由於開發時,不可能只有一個專案,對於多個專案,只要這些專案都放在同一個目錄下,並執行該命令,只需要在瀏覽器輸入對應的專案名 + (.dev)即可訪問每個專案站點,從而避免於對每個專案都需要執行 valet link app-name。

3.valet forget

和命令 valet park 配套使用,只要在某個站點根路徑執行該命令可在根目錄列表中移除該目錄

4.valet paths

可能長時間使用,忘了自己的站點目錄和站點連結,完全可以執行該命令檢視:

5.valet share

Valet 還提供一個命令將本地站點分享給其他人,這不需要任何額外安裝軟體即可實現。

要分享站點,在你的終端中切換到站點目錄使用該命令。這會生成一個可以公開訪問的 URL連結。只要分享給別人,別人就可以訪問了。

valet 能實現該功能,主要是整合了 Dnsmasq。

Dnsmasq 提供 DNS 快取和 DHCP 服務功能。作為域名解析伺服器(DNS),dnsmasq可以通過快取 DNS 請求來提高對訪問過的網址的連線速度。作為DHCP 伺服器,dnsmasq 可以用於為區域網電腦分配內網ip地址和提供路由。DNS和DHCP兩個功能可以同時或分別單獨實現。dnsmasq輕量且易配置,適用於個人使用者或少於50臺主機的網路。此外它還自帶了一個 PXE 伺服器。
wiki.archlinux.org/index.php/D…)

除錯企業號

Valet 除了能夠提供更便捷的開發環境以外,正因為有了 valet share,可以做的東西就多了,不但可以分享給別人,供別人訪問測試,而且還可以用於企業號,配置服務端訪問,除錯企業號和公眾號。本文拿企業號當 demo 跑跑。

在專案中執行 valet share:

在企業號後臺配置對應的伺服器連結、Token 和 EncodingAESKey

只要配置成功了,除錯企業號或者公眾號一些功能,就可以直接在本地一邊編寫,一邊實時測試了,不至於每次都需要提交程式碼到伺服器測試。

彩蛋

1.valet for Windows

valet 也許不再是 Mac 獨有了。現在有人專門製作 windows 版,至於能不能用,我也不瞭解了:github.com/cretueusebi…

2.valet 可以在滿足於多個框架使用

框架 框架 框架
Laravel Lumen Bedrock
CakePHP 3 Concrete5 contao
Craft Drupal Jigsaw
Joomla Katana kirby
Magento OctoberCMS Sculpin
Slim Statamic Symfony
WordPress Zend Static HTML

參考

  1. d.laravel-china.org/docs/5.4/va…
  2. laravel.com/docs/5.4/va…
  3. wiki.archlinux.org/index.php/D…
  4. dotdev.co/laravel-val…

coding01 期待您關注

qrcode
qrcode


感謝您能看到這了

qrcode
qrcode

相關文章