如何一個專案使用一個 Homestead?
再也不用擔心專案 A 安裝的元件會影響到專案B了
Contents
傳統上都是在系統只安裝一個 Homestead,然後每個專案設定不同站台,各專案共用同一個資料庫。這種方式大體上也沒什麼問題,但有時若想測試一些東西,如安裝 Facebook 的 XHProf + XHGUI,將這些測試用的東西安裝在開發用的 Homestead 似乎不妥,因此最理想的方式是每個專案有自己的 Homestead,各專案可以安裝自己所需的元件,而不影響其他專案。
Version
Laravel 5.2.23
Homestead 0.4.2
OS X 10.11.3
Prerequisite
在 OS X 已經成功安裝好 Homestead。1 1詳細請參考如何在 OS X 安裝 Homestead?
安裝 laravel/homestead 套件
1 | oomusou@mac:~/MyProject$ composer require laravel/homestead --dev |
在專案目錄下安裝 laravel/homestead
套件,這是 Laravel 官方的套件,不過目前並沒有放進 Laravel 5.2 內,需另外自行安裝。
1 | Using version ^3.0 for laravel/homestead ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) - Installing laravel/homestead (v3.0.2) Downloading: 100% Writing lock file Generating autoload files > php artisan clear-compiled > php artisan optimize Generating optimized class loader |
建立 Homestead 設定檔
1 | oomusou@mac:~/MyProject$ php vendor/bin/homestead make |
在目前目錄下建立 Vagrantfile
與 Homestead.yaml
。
1 | Homestead Installed! |
傳統我們還可能需要修改 Homestead.yaml
的 shared folder,但因為 Homestead 目前只用在一個專案,所以預設值都已經設定好了,不必修改。
啟動 Homestead
1 | oomusou@mac:~/MyProject$ vagrant up |
接著 Homestead 就正常啟動了,剩下的用法跟你之前熟悉的 Homestead 完全一樣。
由於 Homestead 會在 ~/VirtualBox VMs 目錄下建立與專案目錄名稱相同的目錄放置 VM,所以唯一的限制是專案目錄名稱不能重複,否則 vagrant up 會失敗。
Conclusion
- 由於每個專案都有自己的 VM,優點是非常乾淨,缺點是非常浪費磁碟空間。
- 由於每個專案都有自己的 VM,當切換到其他專案時,記得要先將目前 Homestead
vagrant halt
關機,然後再將另一個專案的 Homesteadvagrant up
開機。 - 由於每個專案都有自己的 VM,所以測試用的專案可以隨時
vagrant destroy --force
掉,不會影響正式開發的 Homestead。 - 實務上非常推薦這種使用方式,可以將不同專案的 side effect 降到最低。
Sample Code
完整的範例可以在我的 GitHub 上找到。