話說(shuō)作為laravel的開(kāi)發(fā)者,你聽(tīng)說(shuō)Homestead應(yīng)該很久了,可是官方推薦的開(kāi)發(fā)環(huán)境在國(guó)內(nèi)為什么鮮有人用?我這幾天試著安裝了一下,發(fā)現(xiàn)官方的安裝教程實(shí)在存在著太多的大坑,尤其讓剛剛?cè)氲赖拈_(kāi)發(fā)者望而卻步,在本文我試著手把手教大家填上這個(gè)坑,我在騰訊課堂上傳了視頻教程,歡迎報(bào)名學(xué)習(xí)。如果你覺(jué)得視頻過(guò)于羅嗦,直接參看本教程即可。
第一步 安裝必須的軟件
1.安裝vagrant,點(diǎn)此進(jìn)入下載頁(yè),vagrant屬于跨平臺(tái)應(yīng)用,我的系統(tǒng)是win10。關(guān)于vagrant教程,可以自己看一下,百度一下遍地是。不看也沒(méi)關(guān)系,本文大概只用到其中的幾個(gè)命令。
2.安裝Virtualbox,當(dāng)然你安裝Vmware或parallels(OX系統(tǒng))也可以,但后面下載的box要注意對(duì)應(yīng),虛擬機(jī)對(duì)應(yīng)的版本不同。
第二步 導(dǎo)入box
vagrant box add laravel/homestead
第一個(gè)坑:原本只要如上的命令即可,但由于國(guó)內(nèi)眾所周知的網(wǎng)絡(luò)原因,我們不得不考慮先下載好你需要的box再來(lái)添加。
首先在hashicorp中找到合適的版本,再在鏈接后加上”版本號(hào)/providers/虛擬機(jī)類型.box”即可獲得下載鏈接.
如我們要下載最新的版本號(hào)為1.0.1的virtualbox版的box文件,鏈接即為:https://atlas.hashicorp.com/laravel/boxes/homestead/versions/1.0.1/providers/virtualbox.box
注意!?laravel/homestead box項(xiàng)目地址已經(jīng)不再是原來(lái)的
而已經(jīng)變更成
下載地址
以下地址下載最新版本(目前為5.1.0)的Homestead Box(可以使用下載工具):
https://app.vagrantup.com/laravel/boxes/homestead/versions/5.1.0/providers/virtualbox.box?
https://vagrantcloud.com/laravel/boxes/homestead/versions/5.1.0/providers/virtualbox.box?
如果你需要下載不同版本(或最新版本),請(qǐng)將以上地址中versions/后的數(shù)字版本號(hào)替換成相應(yīng)的版本號(hào)。
為此我還是提供了國(guó)內(nèi)的鏈接(已更新到5.1.0),方便大家。
鏈接:http://pan.baidu.com/s/1dEJdHj7?
密碼:kzlc
不建議采用迅雷離線下載,據(jù)說(shuō)會(huì)導(dǎo)致下載的文件損壞!
接下來(lái)我新建了一個(gè)文件夾名為homestead,然后我將下好的box重命名為homestead.box放入,然后在此文件夾內(nèi)運(yùn)行如下命令(這里是按照一些普通的教程來(lái)添加,這時(shí)候挖了一個(gè)坑,后面填上)。
vagrant box add laravel/homestead homestead.box
接著運(yùn)行
vagrant box list
發(fā)現(xiàn)這個(gè)box已經(jīng)添加進(jìn)來(lái)就ok了。
第三步 下載官方homestead配置
可以進(jìn)入laravel5.3的官方文檔
按照文檔的說(shuō)明首先運(yùn)行(必須本地已經(jīng)安裝了git)
git clone https://github.com/laravel/homestead.git Homestead
接著在已經(jīng)克隆下來(lái)的文件夾內(nèi),會(huì)發(fā)現(xiàn)bash init.sh,init.bat兩個(gè)文件,這兩個(gè)分別是將該目錄內(nèi)的Homestead.yaml文件拷貝到你的系統(tǒng)“家”目錄下。如果是在win下,又安裝了git bash,則運(yùn)行bash init.sh,init.bat均可。如果是在linux下,則運(yùn)行bash init.sh。
接著我們就在家目錄.homestead文件夾下找到了我們的這個(gè)配置文件

第四步 配置Homestead.yaml
設(shè)置 IP及Provider
Homestead.yaml文件中的provider鍵表示使用哪個(gè) Vagrant 提供者:virtualbox、vmware_fushion或者vmware_workstation,你可以將其設(shè)置為自己喜歡的提供者:
ip: "192.168.10.10"
provider: virtualbox
配置共享文件夾
Homestead.yaml文件中的folders屬性列出了所有主機(jī)和 Homestead 虛擬機(jī)共享的文件夾,一旦這些目錄中的文件有了修改,將會(huì)在本地和 Homestead 虛擬機(jī)之間保持同步,如果有需要的話,你可以配置多個(gè)共享文件夾(一般一個(gè)就夠了):
folders:
- map: D:/homestead/code ?#(這是我本地的文件夾)
to: /home/vagrant/Code
配置 Nginx 站點(diǎn)
對(duì) Nginx 不熟?沒(méi)問(wèn)題,通過(guò)sites屬性你可以方便地將“域名”映射到 Homestead 虛擬機(jī)的指定目錄,Homestead.yaml中默認(rèn)已經(jīng)配置了一個(gè)示例站點(diǎn)。和共享文件夾一樣,你可以配置多個(gè)站點(diǎn):
sites:
- map: liang.app
to: /home/vagrant/Code/Laravel/public
Hosts文件
不要忘記把 Nginx 站點(diǎn)配置中的域名添加到本地機(jī)器上的hosts文件中,該文件會(huì)將對(duì)本地域名的請(qǐng)求重定向到 Homestead 虛擬機(jī),在 Mac 或 Linux上,該文件位于/etc/hosts,在 Windows 上,位于C:\Windows\System32\drivers\etc\hosts,添加方式如下:
192.168.10.10 liang.app
確保 IP 地址和你的Homestead.yaml文件中列出的一致,一旦你將域名放置到hosts文件,就可以在瀏覽器中通過(guò)該域名訪問(wèn)站點(diǎn)了:
http://liang.app
第五步 啟動(dòng)vagrant
在 Homestead 目錄下運(yùn)行vagrant up命令,Vagrant 將會(huì)啟動(dòng)虛擬機(jī)并自動(dòng)配置共享文件夾以及 Nginx 站點(diǎn)。官方文檔對(duì)此描述的如此這般簡(jiǎn)單,其實(shí)這里遇到了第二個(gè)大坑
我們輸入vagrant up看會(huì)發(fā)生什么?一堆的錯(cuò)誤提示?。。?!
我們根據(jù)提示,貌似是ssh的key沒(méi)有生成,于是我們要運(yùn)行如下命令,這個(gè)命令可以在git bash下生成,也可以在cmder等命令行工具完成,但在win下的cmd卻無(wú)法執(zhí)行。win 下可考慮powershell。
ssh-keygen
好了,我們歡喜的以為,我們可以順利運(yùn)行了。vagrant up。我擦居然提示這個(gè)box沒(méi)有,需要安裝。出現(xiàn)了第三個(gè)坑
導(dǎo)致該坑的原因,我們看之前的vagrant box list,里面顯示laravel/homestead (virtualbox, 0),而homestead要求Box Version: >= 1.0.0,這就不奇怪了。但我們明明下的是這個(gè)1.0.1版本啊。
我們有兩種方式修復(fù)這個(gè)大坑
方式一
修改homestead/scripts/homestead.rb的這個(gè)文件,將其中的>= 1.0.0改為< 1.0.0即可滿足要求。但我并不推薦這種方式,因?yàn)閷?shí)質(zhì)對(duì)滿足要求進(jìn)行了篡改。
方式二
我們?cè)趆omestead下新建一個(gè)名為homestead.json的一個(gè)json配置文件
{
"name": "laravel/homestead",
"versions": [{
"version": "1.0.1",
"providers": [{
"name": "virtualbox",
"url": "file:///D/homestead/homestead.box"
}]
}]
}
看懂了嗎?接著我們運(yùn)行這個(gè)命令(注意,url必須是絕對(duì)路徑)
vagrant box add homestead.json
真的不容易啊,添加成功了。
此處因?yàn)関agrant升級(jí)到2.0版本后又有改變,我們?cè)俅芜M(jìn)行更正。若以上box已添加成功并順利運(yùn)行請(qǐng)忽略以下步驟
可以詳見(jiàn)https://blog.csdn.net/lgyaxx/article/details/60870819
下載完成后,我們將下載的文件命名為homestead-5.1.0.box。接下來(lái),我們cd到相應(yīng)的文件夾(假設(shè)下載文件目錄在Downloads文件夾下,運(yùn)行以下命令:
eagle@EagleEye:~/Downloads$ vagrant box add laravel/homestead ./homestead-5.1.0.box

會(huì)開(kāi)始安裝我們下載的Homestead盒子。?
完成后,你會(huì)發(fā)現(xiàn)自己的用戶文件夾里多出了一個(gè).vagrant.d的文件夾(C:\Users\MyUserName.vagrant.d)。
將文件夾中名為0的文件夾改名為我們下載的Homestead的版本號(hào),圖片還沒(méi)有更新,我們應(yīng)該改成5.1.0。
接下來(lái),非常重要的一個(gè)步驟:
我們打開(kāi)這個(gè)文件夾,找到以下路徑:
C:\Users\MyUserName\.vagrant.d\boxes\laravel-VAGRANTSLASH-homestead
在該文件夾下新建一個(gè)叫metadata_url的空白文件(注意不要有任何文件名后綴,如果你的系統(tǒng)設(shè)置了自動(dòng)隱藏后綴名,請(qǐng)將隱藏去掉,確認(rèn)文件無(wú)任何后綴):?

文件的內(nèi)容里,添加以下鏈接:
https://app.vagrantup.com/laravel/boxes/homestead
注意,不要留任何空白字符,保存文件。如果不進(jìn)行這一步會(huì)怎樣?,如下圖

完成之后,我們就可以開(kāi)始配置Homestead了。
我們接著運(yùn)行vagrant up試試
經(jīng)過(guò)這樣一番折騰終于成功運(yùn)行了。
第六步 登錄vagrant并安裝laravel
這一步應(yīng)該是我們的最后一步了,我們期待目標(biāo)通過(guò)本地能夠訪問(wèn)到你用vagrant搭建起來(lái)的laravel。我們通過(guò)vagrant ssh命令即可順利登錄我們的系統(tǒng)了。
由于設(shè)置上我們的vagrant虛擬機(jī)Code目錄和我們的本地主機(jī)D:/homestead/Code是同一個(gè)目錄,因此,我們先移步到該目錄。
第四個(gè)坑出現(xiàn)了,我們一般是通過(guò)composer來(lái)進(jìn)行安裝,但出于GFW原因,我們不得不用中國(guó)鏡像來(lái)安裝。vagrant虛擬機(jī)中運(yùn)行如下命令
composer config -g repo.packagist composer https://packagist.phpcomposer.com
接著我們通過(guò)composer來(lái)安裝一個(gè)5.2版本
composer create-project laravel/laravel=5.2.* --prefer-dist
OK,訪問(wèn)liang.app,出現(xiàn)了Laravel 5的歡迎界面,大功告成。
補(bǔ)坑:對(duì)于部分用戶,可能出現(xiàn)autoload或boostrap不存在,說(shuō)明依賴安裝不完整,可以在laravel目錄下運(yùn)行如下命令來(lái)解決。
composer update--no-scripts
由于直接git clone 官方在github上的東西可能造成與本box版本不一致,建議解決方案參考評(píng)論中beyond__devil所用的方法,將版本回滾?;蛘咧苯酉伦钚碌腷ox或等我的box更新。
受各位啟發(fā),準(zhǔn)備出一個(gè)Docker教程,于是乎發(fā)現(xiàn)了有意思的評(píng)論

版權(quán)聲明:本文版權(quán)歸作者所有,如要轉(zhuǎn)載,請(qǐng)給錢,歡迎私信、評(píng)論
歡迎打賞、打賞、打賞
2017.03.27重大更新
1.homestead的box已升級(jí)到2.0
2.vagrant版本要求必須是1.9+
3.最最重要的是,homestead在github上的版本已更新到5.1,有一些文件發(fā)生了變動(dòng)。
最主要的變動(dòng)是當(dāng)運(yùn)行init.bat或init.sh時(shí)候,幾個(gè)文件將不再?gòu)?fù)制到家目錄的.homestead文件,而是直接被復(fù)制到homestead項(xiàng)目的根目錄中(源在homestead項(xiàng)目文件的resources文件夾下)。原先家目錄下的.homestead可以直接刪掉了!

4.先刪除原來(lái)box,可以用vagrant box remove laravel/homestead命令,destroy之前的虛擬機(jī),接著重復(fù)之前的步驟,安裝新的2.0box即可(記得修改添加時(shí)的版本號(hào))。
騰訊課堂已經(jīng)更新,已報(bào)名的同學(xué)可以觀看補(bǔ)充的課程