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

話說作為laravel的開發者,你聽說Homestead應該很久了,可是官方推薦的開發環境在國內為什么鮮有人用?我這幾天試著安裝了一下,發現官方的安裝教程實在存在著太多的大坑,尤其讓剛剛入道的開發者望而卻步,在本文我試著手把手教大家填上這個坑,我在騰訊課堂上傳了視頻教程,歡迎報名學習。如果你覺得視頻過于羅嗦,直接參看本教程即可。


第一步 安裝必須的軟件

1.安裝vagrant,點此進入下載頁,vagrant屬于跨平臺應用,我的系統是win10。關于vagrant教程,可以自己看一下,百度一下遍地是。不看也沒關系,本文大概只用到其中的幾個命令。

2.安裝Virtualbox,當然你安裝Vmware或parallels(OX系統)也可以,但后面下載的box要注意對應,虛擬機對應的版本不同。

第二步 導入box

vagrant box add laravel/homestead

第一個坑:原本只要如上的命令即可,但由于國內眾所周知的網絡原因,我們不得不考慮先下載好你需要的box再來添加。

首先在hashicorp中找到合適的版本,再在鏈接后加上”版本號/providers/虛擬機類型.box”即可獲得下載鏈接.

如我們要下載最新的版本號為1.0.1的virtualbox版的box文件,鏈接即為:https://atlas.hashicorp.com/laravel/boxes/homestead/versions/1.0.1/providers/virtualbox.box

注意!?laravel/homestead box項目地址已經不再是原來的

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

而已經變更成

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?

如果你需要下載不同版本(或最新版本),請將以上地址中versions/后的數字版本號替換成相應的版本號。

為此我還是提供了國內的鏈接(已更新到5.1.0),方便大家。

鏈接:http://pan.baidu.com/s/1dEJdHj7?

密碼:kzlc

不建議采用迅雷離線下載,據說會導致下載的文件損壞!

接下來我新建了一個文件夾名為homestead,然后我將下好的box重命名為homestead.box放入,然后在此文件夾內運行如下命令(這里是按照一些普通的教程來添加,這時候挖了一個坑,后面填上)。

vagrant box add laravel/homestead homestead.box

接著運行

vagrant box list


vagrant box list

發現這個box已經添加進來就ok了。

第三步 下載官方homestead配置

可以進入laravel5.3的官方文檔

按照文檔的說明首先運行(必須本地已經安裝了git)

git clone https://github.com/laravel/homestead.git Homestead

接著在已經克隆下來的文件夾內,會發現bash init.sh,init.bat兩個文件,這兩個分別是將該目錄內的Homestead.yaml文件拷貝到你的系統“家”目錄下。如果是在win下,又安裝了git bash,則運行bash init.sh,init.bat均可。如果是在linux下,則運行bash init.sh。

接著我們就在家目錄.homestead文件夾下找到了我們的這個配置文件

第四步 配置Homestead.yaml

設置 IP及Provider

Homestead.yaml文件中的provider鍵表示使用哪個 Vagrant 提供者:virtualbox、vmware_fushion或者vmware_workstation,你可以將其設置為自己喜歡的提供者:

ip: "192.168.10.10"

provider: virtualbox

配置共享文件夾

Homestead.yaml文件中的folders屬性列出了所有主機和 Homestead 虛擬機共享的文件夾,一旦這些目錄中的文件有了修改,將會在本地和 Homestead 虛擬機之間保持同步,如果有需要的話,你可以配置多個共享文件夾(一般一個就夠了):

folders:

- map: D:/homestead/code ?#(這是我本地的文件夾)

to: /home/vagrant/Code

配置 Nginx 站點

對 Nginx 不熟?沒問題,通過sites屬性你可以方便地將“域名”映射到 Homestead 虛擬機的指定目錄,Homestead.yaml中默認已經配置了一個示例站點。和共享文件夾一樣,你可以配置多個站點:

sites:

- map: liang.app

to: /home/vagrant/Code/Laravel/public

Hosts文件

不要忘記把 Nginx 站點配置中的域名添加到本地機器上的hosts文件中,該文件會將對本地域名的請求重定向到 Homestead 虛擬機,在 Mac 或 Linux上,該文件位于/etc/hosts,在 Windows 上,位于C:\Windows\System32\drivers\etc\hosts,添加方式如下:

192.168.10.10 liang.app

確保 IP 地址和你的Homestead.yaml文件中列出的一致,一旦你將域名放置到hosts文件,就可以在瀏覽器中通過該域名訪問站點了:

http://liang.app

第五步 啟動vagrant

在 Homestead 目錄下運行vagrant up命令,Vagrant 將會啟動虛擬機并自動配置共享文件夾以及 Nginx 站點。官方文檔對此描述的如此這般簡單,其實這里遇到了第二個大坑

我們輸入vagrant up看會發生什么?一堆的錯誤提示!!!!

我們根據提示,貌似是ssh的key沒有生成,于是我們要運行如下命令,這個命令可以在git bash下生成,也可以在cmder等命令行工具完成,但在win下的cmd卻無法執行。win 下可考慮powershell。

ssh-keygen

好了,我們歡喜的以為,我們可以順利運行了。vagrant up。我擦居然提示這個box沒有,需要安裝。出現了第三個坑


再次出現該box不存在

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

vagrant box list

我們有兩種方式修復這個大坑

方式一

修改homestead/scripts/homestead.rb的這個文件,將其中的>= 1.0.0改為< 1.0.0即可滿足要求。但我并不推薦這種方式,因為實質對滿足要求進行了篡改。

homestead.rb

方式二

我們在homestead下新建一個名為homestead.json的一個json配置文件

{

"name": "laravel/homestead",

"versions": [{

"version": "1.0.1",

"providers": [{

"name": "virtualbox",

"url": "file:///D/homestead/homestead.box"

}]

}]

}

看懂了嗎?接著我們運行這個命令(注意,url必須是絕對路徑)

vagrant box add homestead.json


已經添box成功

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

此處因為vagrant升級到2.0版本后又有改變,我們再次進行更正。若以上box已添加成功并順利運行請忽略以下步驟

可以詳見https://blog.csdn.net/lgyaxx/article/details/60870819

下載完成后,我們將下載的文件命名為homestead-5.1.0.box。接下來,我們cd到相應的文件夾(假設下載文件目錄在Downloads文件夾下,運行以下命令:

eagle@EagleEye:~/Downloads$ vagrant box add laravel/homestead ./homestead-5.1.0.box


會開始安裝我們下載的Homestead盒子。?

完成后,你會發現自己的用戶文件夾里多出了一個.vagrant.d的文件夾(C:\Users\MyUserName.vagrant.d)。

將文件夾中名為0的文件夾改名為我們下載的Homestead的版本號,圖片還沒有更新,我們應該改成5.1.0。

接下來,非常重要的一個步驟:

我們打開這個文件夾,找到以下路徑:

C:\Users\MyUserName\.vagrant.d\boxes\laravel-VAGRANTSLASH-homestead

在該文件夾下新建一個叫metadata_url的空白文件(注意不要有任何文件名后綴,如果你的系統設置了自動隱藏后綴名,請將隱藏去掉,確認文件無任何后綴):?

文件的內容里,添加以下鏈接:

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


注意,不要留任何空白字符,保存文件。如果不進行這一步會怎樣?,如下圖


出錯提示

完成之后,我們就可以開始配置Homestead了。

我們接著運行vagrant up試試

成功運行

經過這樣一番折騰終于成功運行了。

第六步 登錄vagrant并安裝laravel

這一步應該是我們的最后一步了,我們期待目標通過本地能夠訪問到你用vagrant搭建起來的laravel。我們通過vagrant ssh命令即可順利登錄我們的系統了。

由于設置上我們的vagrant虛擬機Code目錄和我們的本地主機D:/homestead/Code是同一個目錄,因此,我們先移步到該目錄。

第四個坑出現了,我們一般是通過composer來進行安裝,但出于GFW原因,我們不得不用中國鏡像來安裝。vagrant虛擬機中運行如下命令

composer config -g repo.packagist composer https://packagist.phpcomposer.com

接著我們通過composer來安裝一個5.2版本

composer create-project laravel/laravel=5.2.* --prefer-dist

OK,訪問liang.app,出現了Laravel 5的歡迎界面,大功告成。

補坑:對于部分用戶,可能出現autoload或boostrap不存在,說明依賴安裝不完整,可以在laravel目錄下運行如下命令來解決。

composer update--no-scripts

由于直接git clone 官方在github上的東西可能造成與本box版本不一致,建議解決方案參考評論中beyond__devil所用的方法,將版本回滾。或者直接下最新的box或等我的box更新。

受各位啟發,準備出一個Docker教程,于是乎發現了有意思的評論

版權聲明:本文版權歸作者所有,如要轉載,請給錢,歡迎私信、評論

歡迎打賞、打賞、打賞


2017.03.27重大更新

1.homestead的box已升級到2.0

2.vagrant版本要求必須是1.9+

3.最最重要的是,homestead在github上的版本已更新到5.1,有一些文件發生了變動。

最主要的變動是當運行init.bat或init.sh時候,幾個文件將不再復制到家目錄的.homestead文件,而是直接被復制到homestead項目的根目錄中(源在homestead項目文件的resources文件夾下)。原先家目錄下的.homestead可以直接刪掉了!


幾個文件變動

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

騰訊課堂已經更新,已報名的同學可以觀看補充的課程

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,702評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,615評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,606評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,044評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,826評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,227評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,307評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,447評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,992評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,807評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,001評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,550評論 5 361
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,243評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,667評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,930評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,709評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,996評論 2 374

推薦閱讀更多精彩內容