預備知識!
在開始介紹 Laravel Homestead 之前,需要先了解以下內容:
Vagrant:Vagrant 是 open source,讓開發者在虛擬機器上管理和配置虛擬機器,而 Laravel Homestead 是建立在 Vagrant 官方預載的 Vagrant box,為開發者提供完善的開發環境。
Virtual Machine (VM) 虛擬機器:Homestead 是一個虛擬機器,藉由 Vagrant 管理,可以在虛擬環境中進行開發,而不會影響本機系統。
Homestead.yaml 設定檔:透過 Homestead.yaml 設定檔,可以調整 Homestead 的設定,例如:新增 Nginx 網站或設定 Cron 排程器。
Laravel Homestead 是什麼?
Laravel Homestead 以下以 Homestead 作為說明,是一個官方預載的 Vagrant box,提供開發者一個完善的開發環境,無需在本機安裝 PHP、網頁伺服器或其他伺服器軟體,避免影響本機系統;使用 Homestead 可透過 Vagrant 管理虛擬機器,並透過 Homestead.yaml 設定檔來調整設定。
在安裝 Homestaed 之前,需要在本機上先安裝:
- Vagrant
 - 選擇一種 providers
- VirtualBox 6.1.x
- Parallels如果使用
Parallels則要額外安裝 Parallels Vagrant plug-in。 
安裝的事先準備
本身使用 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...
點進去之後要輸入你的 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  | cd ~/Homestead  | 
接著,根據自己本身的環境執行以下指令,這指令是生成 Homestead.yaml 設定檔:
1  | # macOS / Linux...  | 
有了 Homestead.yaml 設定檔,就可以用指令 open Homestead.yaml,
將 provider 修改為你先前安裝的 provider,我是使用 parallels:
1  | provider: parallels  | 
配置 Vagrant box
根據 vagrant + parallels usage 文件,
藉由 vagrant init 指令來生成 Vagrantfile,並且指定 box 為 bento/ubuntu-20.04-arm64,並以 vagrant up 啟動:
1  | vagrant init bento/ubuntu-20.04-arm64  | 
# 補充
也可以到 Vagrant Cloud 尋找較為多人使用或者有持續維護的 box!
因此我用以下指令來使用我要的並啟動 box:
 1 vagrant init laravel/homestead
*透過vagrant box list可以檢視所有的 box 有哪些,
*如果要加入新的 box 可以透過vagrant box add。
編輯 Homestead.yaml 設定檔
在配置 Homestead box 後,接著就是要來編輯 Homestead.yaml 設定檔,需設定:
Shared Folders
以下就是設定本機與虛擬機的共享資料夾,在本機和 Homestead 虛擬環境之間保持同步。1
2
3
4
5folders:
- map: ~/code/project1
to: /home/vagrant/project1
- map: ~/code/project2
to: /home/vagrant/project2Nginx Sites
如果不熟悉 Nginx,Homestead.yaml 中的 sites 屬性可以簡單地將 domain 映射到 Homestead 環境中的 folder。1
2
3sites:
- map: homestead.test
to: /home/vagrant/project1/public要記得到本機的
sudo vim /etc/hosts將網域對應,1
192.168.56.56 homestead.test
通常在專案上, site 也要在專案中的
.env檔案做設定Services
Homestead 默認啟動多個服務,也可以自定義啟用或禁用哪些服務。
例如,來啟用 PostgreSQL 並禁用 MySQL:1
2
3
4
5services:
- enabled:
- "postgresql"
- disabled:
- "mysql"
啟動 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(虛擬機),可以看見如下畫面:
在 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
