天天看點

homestead.yaml配置詳解

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,讓配置立即生效