- 下載安裝 VirtualBox
- 下載安裝 Vagrant
- 安裝完 Vagrant 進入到用戶目錄中就會看到 Vagrant 的檔案內容
- 安裝 Git
- Git 安裝好就可以在用戶目錄中進行安裝 VirtualBox 使用的 box (虛擬機的檔案)
- 開啟命令視窗在用戶目錄中下載, 執行
git clone https://github.com/laravel/homestead.git Homestead
- 執行過 git 就會在用戶目錄中看到 Homestead 及 .homestead 這兩個目錄.
- 進入到 Homestead 這個目錄中, 執行第一次設定檔產生, 執行目錄中的檔案 init.bat, 這時會在 .homestead 中產生 Homestead.yaml 檔案.
- 進入到 .homestead 目錄中, 修改 Homestead.yaml
- 將 folders 項目中的 map 修改為自己要使用的目錄, 例如:folders:- map: D:/Codeto: /home/vagrant/Code
- 將 sites 設定, 例如:sites:- map: homestead.appto: /home/vagrant/Code/blog/public其中的 map 設定為所要使用的網址, 並且到 Windows/system32/drivers/etc/ 底下修改 hosts 檔案, 通常設定 192.168.10.10 homestead.app 這樣才可以在瀏覽器中輸入 homestead.app 這樣的網址連線到網站.另外 to 這個項目, 依照自己專案的名稱來設定, 系統預設的網頁目錄為 /home/vagrant/, 因為指派了 folders 的檔案目錄, 因此變成 /home/vagrant/Code/ 接下來才是專案名稱.所以成為 /home/vagrant/Code/專案名稱/專案的 public 這樣的路徑.
- Homestead.yaml 設定好後就可以進行第一次執行 Homestead 虛擬機.
- 執行命令視窗在 Homestead 的目錄中, 執行 vagrant up
- 執行過後 windows 系統必須使用 putty 或是其他 ssh 連線程式連接到虛擬機, 而不是用 vagrant ssh 指令.
- 開啟 putty 建立 homestead 連線, IP 需輸入 127.0.0.1 Port:2222 帳號 vagrant 密碼 vagrant 這樣就可以連接到虛擬機上面進行操作.
- 虛擬機進入後, 建議執行一次 sudo apt-get update, 及 sudo apt-get upgrade 更新一下系統.
- 更新過虛擬機後, 登出虛擬機, 回到 windows 命令視窗, 在 Homestead 目錄底下執行 vagrant provision 更新虛擬機的映象檔. 更新後使用 vagrant reload 重新執行虛擬機. 這樣下次經由ssh 連線進去就是更新過後的系統.
- 使用 php artisan make:migration 產生資料庫檔時, 有時會因為刪除了 database/migration 目錄底下的檔案要另外產生發生錯誤, 這時候可以執行 composer dump-autoload -o 來修復錯誤.
2017-04-14 更新
如果更新了 vagrant 到 1.9.3 版本後, 發生 vagrant up fails 的錯誤, 也就是網路 forward port 的問題, 可以考慮將 Homestead/scripts/homestead.rb 中的內容更改一下, 底下是要更改的內容:
# Use Default Port Forwarding Unless Overridden
unless settings.has_key?("default_ports") && settings["default_ports"] == false
default_ports.each do |guest, host|
unless settings["ports"].any? { |mapping| mapping["guest"] == guest }
#config.vm.network "forwarded_port", guest: guest, host: host, auto_correct: true
config.vm.network "forwarded_port", guest: guest, host: host, host_ip: "127.0.0.1", auto_correct: true
end
end
end
# Add Custom Ports From Configuration
if settings.has_key?("ports")
settings["ports"].each do |port|
#config.vm.network "forwarded_port", guest: port["guest"], host: port["host"], protocol: port["protocol"], auto_correct: true
config.vm.network "forwarded_port", guest: port["guest"], host: port["host"], protocol: port["protocol"], host_ip: "127.0.0.1", auto_correct: true
end
end