手把手教你Homestead安裝,并填坑(2018.4.08更新)

話說(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)的

https://atlas.hashicorp.com/laravel/boxes/homestead

而已經(jīng)變更成

https://app.vagrantup.com/laravel/boxes/homestead

下載地址

以下地址下載最新版本(目前為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


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è)坑


再次出現(xiàn)該box不存在

導(dǎo)致該坑的原因,我們看之前的vagrant box list,里面顯示laravel/homestead (virtualbox, 0),而homestead要求Box Version: >= 1.0.0,這就不奇怪了。但我們明明下的是這個(gè)1.0.1版本啊。

vagrant box list

我們有兩種方式修復(fù)這個(gè)大坑

方式一

修改homestead/scripts/homestead.rb的這個(gè)文件,將其中的>= 1.0.0改為< 1.0.0即可滿足要求。但我并不推薦這種方式,因?yàn)閷?shí)質(zhì)對(duì)滿足要求進(jìn)行了篡改。

homestead.rb

方式二

我們?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


已經(jīng)添box成功

真的不容易啊,添加成功了。

此處因?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ì)怎樣?,如下圖


出錯(cuò)提示

完成之后,我們就可以開(kāi)始配置Homestead了。

我們接著運(yùn)行vagrant up試試

成功運(yùn)行

經(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可以直接刪掉了!


幾個(gè)文件變動(dòng)

4.先刪除原來(lái)box,可以用vagrant box remove laravel/homestead命令,destroy之前的虛擬機(jī),接著重復(fù)之前的步驟,安裝新的2.0box即可(記得修改添加時(shí)的版本號(hào))。

騰訊課堂已經(jīng)更新,已報(bào)名的同學(xué)可以觀看補(bǔ)充的課程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容