預備知識!
在開始介紹 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