March 5, 2024

Viiisit [Laravel] - Laravel Homestead 環境建置!

#laravel#homestead#parallels

預備知識!

在開始介紹 Laravel Homestead 之前,需要先了解以下內容:

Laravel Homestead 是什麼?

Laravel Homestead 以下以 Homestead 作為說明,是一個官方預載的 Vagrant box,提供開發者一個完善的開發環境,無需在本機安裝 PHP、網頁伺服器或其他伺服器軟體,避免影響本機系統;使用 Homestead 可透過 Vagrant 管理虛擬機器,並透過 Homestead.yaml 設定檔來調整設定。

在安裝 Homestaed 之前,需要在本機上先安裝:

安裝的事先準備

本身使用 MacBook Air M2 (Apple Silicon M2 晶片) 以下是我個人的安裝方式:

  • Install Vagrant
    1
    2
    brew tap hashicorp/tap
    brew install hashicorp/tap/hashicorp-vagrant
  • Install Parallels
    *官方文件有說明:If you are using Apple Silicon the Parallels provider is required.
    Parallels Desktop 19 for Mac 要使用 Pro or Business Edition 才能啟動!
    點進 Parallels 官網找到下載之後按下,
    接著會跳出要你安裝 Window 的畫面,可以不用安裝,直接到左上角有一個
    Parallels Desktop -> About Parallels Desktop -> Account & License...
    step for parallels
    點進去之後要輸入你的 Parallels License Key 然後點 Activate,這樣才算有使用成功,
    因為用免費版的話會無法啟用!
  • Install Vagrant Parallels
    使用 Parallels 要再多安裝這個!
    打開終端機輸入 vagrant plugin install vagrant-parallels

如果都成功,我們就已經完成了 Homestead 安裝的事先準備了!
進入正題,來安裝 Homestead 吧!

安裝 Homestead

跟著官方文件一起操作,安裝 Homestead 可透過複製 repository,
以下指令會在本機的 home 裡建立一個 Homestead 的資料夾:

1
git clone https://github.com/laravel/homestead.git ~/Homestead

接著,到 Homestead 資料夾並且 checkout 到 release branch (這分支會包含最新且穩定的 Homestead 版本):

1
2
cd ~/Homestead
git checkout release

接著,根據自己本身的環境執行以下指令,這指令是生成 Homestead.yaml 設定檔:

1
2
3
4
5
# macOS / Linux...
bash init.sh

# Windows...
init.bat

有了 Homestead.yaml 設定檔,就可以用指令 open Homestead.yaml
將 provider 修改為你先前安裝的 provider,我是使用 parallels

1
provider: parallels

配置 Vagrant box

根據 vagrant + parallels usage 文件,
藉由 vagrant init 指令來生成 Vagrantfile,並且指定 boxbento/ubuntu-20.04-arm64,並以 vagrant up 啟動:

1
2
$ vagrant init bento/ubuntu-20.04-arm64
$ vagrant up #先不用 `vagrant up`,因為在這之前我們要先編輯 Homestead.yaml 設定檔!

編輯 Homestead.yaml 設定檔

# 補充

也可以到 Vagrant Cloud 尋找較為多人使用或者有持續維護的 box!

因此我用以下指令來使用我要的並啟動 box:

1
$ vagrant init laravel/homestead

*透過 vagrant box list 可以檢視所有的 box 有哪些,
*如果要加入新的 box 可以透過 vagrant box add


編輯 Homestead.yaml 設定檔

在配置 Homestead box 後,接著就是要來編輯 Homestead.yaml 設定檔,需設定:

啟動 Vagrant box

編輯了 Homestead.yaml 設定檔,接著在 Homestead 目錄中運行 vagrant up 命令。

通常在 vagrant up 之後,會有提示說明接著下 vagrant up --provision ,這指令可以使 Vagrant 在啟動虛擬機時,執行所有定義在 Vagrantfile 中配置共享文件夾和 Nginx 站點,以確保虛擬機的環境是最新的。

根據剛剛示範的 site,就可以從 http://homestead.test 開啟網頁了!

*如果要銷毀虛擬機,可以使用 vagrant destroy


設定時區

在安裝好 Homestead 之後,透過 vagrant ssh 進入 VM(虛擬機),可以看見如下畫面:
original timezone

在 Parallels 的 Control Center,有一個設定的 icon,點進去到 Options -> More Options -> Time,即便有選擇 Sync for Mac (也就是跟著 Mac 的設定),還是顯示不對的時區。

因此,為了調整 timezone 設定,先 vagrant ssh 進入 VM(虛擬機),接著,用 sudo dpkg-reconfigure tzdata 去調整所在時區:


參考資料:
vagrant-parallels
vagrant-parallels-providers
Vagrant 學習筆記
Homestead - wrong time answered from danielcoimbra