Laravel: Laravel Homestead 環境建置
預備知識! 在開始介紹 Laravel Homestead 之前,需要先了解以下內容: Vagrant:Vagrant 是 open source,讓開發者在虛擬機器上管理和配置虛擬機器,而 Laravel Homestead 是建立在 Vagrant 官方預載的 Vagrant box,為開發者提...
預備知識!
在開始介紹 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
如果使用
Parallels則要額外安裝 Parallels Vagrant plug-in。
安裝的事先準備
本身使用 MacBook Air M2 (Apple Silicon M2 晶片) 以下是我個人的安裝方式:
- Install Vagrant
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 的資料夾:
git clone https://github.com/laravel/homestead.git ~/Homestead
接著,到 Homestead 資料夾並且 checkout 到 release branch (這分支會包含最新且穩定的 Homestead 版本):
cd ~/Homestead
git checkout release
接著,根據自己本身的環境執行以下指令,這指令是生成 Homestead.yaml 設定檔:
# macOS / Linux...
bash init.sh
# Windows...
init.bat
有了 Homestead.yaml 設定檔,就可以用指令 open Homestead.yaml,
將 provider 修改為你先前安裝的 provider,我是使用 parallels:
provider: parallels
配置 Vagrant box
根據 vagrant + parallels usage 文件,
藉由 vagrant init 指令來生成 Vagrantfile,並且指定 box 為 bento/ubuntu-20.04-arm64,並以 vagrant up 啟動:
$ vagrant init bento/ubuntu-20.04-arm64
$ vagrant up #先不用 `vagrant up`,因為在這之前我們要先編輯 Homestead.yaml 設定檔!
# 補充
也可以到 Vagrant Cloud 尋找較為多人使用或者有持續維護的 box!
因此我用以下指令來使用我要的並啟動 box:
$ vagrant init laravel/homestead
*透過 vagrant box list 可以檢視所有的 box 有哪些,
*如果要加入新的 box 可以透過 vagrant box add。
編輯 Homestead.yaml 設定檔
在配置 Homestead box 後,接著就是要來編輯 Homestead.yaml 設定檔,需設定:
-
Shared Folders 以下就是設定本機與虛擬機的共享資料夾,在本機和 Homestead 虛擬環境之間保持同步。
folders: - map: ~/code/project1 to: /home/vagrant/project1 - map: ~/code/project2 to: /home/vagrant/project2 -
Nginx Sites 如果不熟悉 Nginx,Homestead.yaml 中的 sites 屬性可以簡單地將 domain 映射到 Homestead 環境中的 folder。
sites: - map: homestead.test to: /home/vagrant/project1/public要記得到本機的
sudo vim /etc/hosts將網域對應,192.168.56.56 homestead.test通常在專案上, site 也要在專案中的
.env檔案做設定 -
Services Homestead 默認啟動多個服務,也可以自定義啟用或禁用哪些服務。 例如,來啟用 PostgreSQL 並禁用 MySQL:
services: - 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
點進去之後要輸入你的 Parallels License Key 然後點 Activate,這樣才算有使用成功,
因為用免費版的話會無法啟用!