你不需要用 Homestead

MIsakas發表於2020-12-22

偶然間看到還有人在用 Homestead ,雖然這是官方文件推薦的執行方式,但是我認為對新手其實並不友好。這篇文章想探討一下你為什麼不需要 Homestead。鑑於我上次使用 Homestead 是在 3 年前,這篇文章說的一些觀點會過時甚至有顯而易見的錯誤

Homestead 是 Laravel 官方封裝的 Vagrant 環境,預先配置好了多個 PHP 版本和其他語言的執行環境,使用目錄對映讓本地的程式碼執行在封裝好的 Linux 的環境下,Vagrant 解決了如下問題

  1. 使用少許的配置來管理整個 LNMP 環境
  2. 快捷安裝大量可選元件
  3. 完整的 Linux 系統環境
  4. 團隊配合時統一的執行環境

Vagrant 確實很好的解決了一些問題,但是有些缺點讓我們可以考慮取捨

  • 你需要安裝多個軟體,VirtualBox 和 Vagrant + 一個 2 個多 G 的環境映象
  • Vagrant 的映象下載點在國外,國內沒有對應的源,首先一個環境映象就夠你下幾個小時了,其次如果有牆的阻攔,你成功下載完全需要碰運氣
  • 慢出奇的啟動速度,Vagrant 的分鐘級啟動速度比你的 Window10 還慢

配置環境是學習的一部分

雖然 Vagrant 解決了執行環境,但是配置環境本來就是新手學習的一部分。你完全有可能出現一個專案寫完後,卡在了配置線上的 Linux 伺服器。所以我建議把配置環境當成學習的一部分,況且當你在一步一步配置環境的時候可以更瞭解一個請求過來時,從 Nginx 到 PHP 到 Mysql 的一個完整的執行流程

配置環境也並不難

對於一個最基本的 Linux 來說,配置一個 php 的執行環境簡單到我可以隨手在下面寫出需要的命令

sudo apt update
sudo apt install nginx mysql-server mysql-client 
sudo apt install php7.* php 7.*-xxx  // 填寫你需要的版本和需要的擴充套件
sudo vim /etc/nginx/site-enable/xxx.conf  // 配置你的 nginx 讓他支援 php

對於 Windows10 使用者來說,更應該使用 WSL2

WSL 全稱是 Windows Subsystem Linux。第一版有模擬的 Linux 執行環境,所以有一些支援問題,而 WSL2 有更好的系統支援,完整的 Linux 執行環境,對比 Vagrant 更好的是,他有更少的資源佔用、完全不需要配置的完整目錄對映以及秒級的啟動速度。比如在 Vagrant 裡,如果你想新增一個目錄對映,需要修改 Yaml 檔案然後重啟你的虛擬機器,這通常需要幾分鐘時間,WSL2 會在第一次啟動時就把你的所有磁碟都對映到 /mnt/ 目錄下,你根本不需要考慮兩個系統之間檔案的關係。而且使用 Windows Terminal,你將在 Windows 下有一個極度舒適的 Linux 命令列環境

快速的安裝是好的開始

WSL2 比 Vagrant 更契合 Windows,比起 Vagrant 微軟給了 WSL2 寫了足夠多的文件,且大都有中文支援。因為 Windows 目前自帶的 WSL 版本都是 1,和 2 比起來差距還是蠻大的。要安裝 WSL2 首先要去官網下載一個幾百兆升級包,下載安裝好後開啟應用商店隨便搜一個 Linux 的開發版,點選安裝後稍微等幾分鐘後開始用吧。測試只用了不到 5 分鐘就把 Ubuntu 跑起來了,當然這和你的網速也有些許的關係,但微軟商店的下載速度確實比 Vagrant 的速度要快,映象更小,且沒有牆的阻攔。

The End

不同的需求有不同解決方案,在常見情況下綜合網路國情考慮,使用 WSL2 比使用 Vagrant 更方便。Vagrant 想要解決在不同的計算機上快速搭建相同環境的問題。而大部分情況下你是用不到這種特性的。你通常無法說服你的同事去花時間配置 Homestead。但是他們看到你的 Ubuntu 的絲滑般啟動速度時,大概率會好奇從應用動動手指安裝一個,然後配置環境,並一步步走向 Linux 下開發的深淵

想使用 WSL2 可以從以下連結開始:
適用於 Linux 的 Windows 子系統安裝指南
適用於 Linux 的 Windows 子系統文件
比較 WSL 1 和 WSL 2

本作品採用《CC 協議》,轉載必須註明作者和本文連結
死宅,在『什麼都不會還異常淡定』和『未來一片迷茫卻不為所動』的領域有著深刻的研究

相關文章