homestead.yaml中主要字段及其意義
---
ip: "192.168.10.10" #虛拟機的位址
memory: 2048
cpus: 1
provider: virtualbox #虛拟機平台,用virtualbox裝的一定要确認這裡是virtualbox
authorize: ~/.ssh/id_rsa.pub #ssh的公鑰
keys:
- ~/.ssh/id_rsa #ssh的私鑰,配置了ssh以後,登入虛拟機可以直接在終端輸入homestead ssh進入
folders: #設定檔案夾機映射關系
- map: /Users/codingLady/Code #需要映射到虛拟機的本地機器的檔案夾
to: /home/vagrant/Code #需要映射到虛拟機中哪個的檔案夾
sites: #設定域名和網站的映射關系
- map: blogA.app #網站域名
to: /home/vagrant/Code/blogA/public #Laravel項目對應index.php的位置,以虛拟機的路徑表示
- map: blogB.app #網站域名
to: /home/vagrant/Code/blogB/public #Laravel項目對應index.php的位置,以虛拟機的路徑表示
folders是要把本地機器某個檔案夾映射到虛拟機上,也就是說登入虛拟機以後,檢視/home/vagrant/Code檔案夾的内容,是和Users/codingLady/Code的内容是一樣的。這裡需要注意兩個地方:
(1)to字段裡虛拟機的檔案夾一定是已經在虛拟機上存在,如果不存在的話,要先建立一個,要不映射關系是建立不起來的。在虛拟機上建立檔案夾的方法是:
#執行以下指令前,請先确認終端的目前目錄是homestead的安裝目錄
homestead up #啟動虛拟機
homestead ssh #登入虛拟機,這個時候虛拟機上的路徑是/home/vagrant/
#如果folders的to的路徑是/home/vagrant/Code,那麼就在/home/vagrant/建立Code檔案夾
mkdir Code #建立/home/vagrant/Code檔案夾
exit #退出虛拟機的登入
(2)一定要檢查folders的映射關系是否已經建立,檢查的方法如下:
#登入虛拟機,步驟同前
cd Code #進入的是folders-to裡面你配置的檔案夾,這裡是以Code檔案夾為例了
ll #檢視folders-to配置的檔案夾下的内容,如果映射成功的話,和folder-map裡的内容是一樣的這樣
sites 的作用是建立域名和網站的路徑之間的映射關系,其中map和to的意義見前面.yaml檔案的注釋,要注意to裡填的是從虛拟機通路index.php的路徑,并且一定要用ll指令确認這個檔案夾是存在并且可以通路的。是以,一般而言,sites-to裡配置的是folders-to下的子路徑。
配置好homestead.yaml路徑以後,記得要執行下面的指令,讓修改生效
homestead up --provision #啟動虛拟機,讓provisioning立即生效
如果不行的話,可以先halt,再啟動
homestead halt #關閉虛拟機
homestead up --provision #啟動虛拟機,讓provisioning立即生效
遇到的問題
問題一:folders正确配置了map和to,但是登入虛拟機以後,ll檢視to檔案夾,卻看不到内容
解決方案:
(1) 檢查map的路徑是否是本地機器上存在的
(2) 檢查to路徑是否在虛拟機上存在
(3) 更新virtualBox和vagrant到最新版本(之前就卡在這裡,看到有人說更新這倆版本就好了,想起來virtualBox确實也裝了N久了,然後一更新還真全好了……)
(4) 是否執行了homestead up --provision,讓配置立即生效
問題二:在浏覽器中輸入sites裡map的域名,但是浏覽器中卻顯示No input files specified.
解決方案:
(1) 檢查to裡面的路徑有沒有寫錯
(2) 登入虛拟機,檢查to配置的檔案夾是否可以通路(這裡其實看的就是folders裡的映射關系是否建立了,之前folders的映射關系沒建立好,是以輸入域名後,找不到to配置的檔案夾,就出現了錯誤)
(3) 登入虛拟機,檢查to配置的檔案夾中是否存在index.php
(4) 是否執行了homestead up --provision,讓配置立即生效