很多Laravel開發(fā)者困惑于PHP項(xiàng)目本地和服務(wù)端環(huán)境不統(tǒng)一,導(dǎo)致一系列的問題。解決這種問題目前的最佳實(shí)踐有Docker和Vagrant兩種。對(duì)于Laravel項(xiàng)目,Laravel-China社區(qū)的大佬們推薦使用Homestead工具進(jìn)行開發(fā),本文主要講解該工具在CentOS的安裝和基本使用。
- 在macos環(huán)境中安裝使用教程請(qǐng)?jiān)L問另一篇文章:在Mac上下載Vagrant并使用Homestead。
1. 首先采取RPM包安裝VirtualBox
這個(gè)virtualbox的RPM包下載地址為:http://download.virtualbox.org/virtualbox/rpm/rhel/7/x86_64/VirtualBox-5.2-5.2.8_121009_el7-1.x86_64.rpm。我們?cè)诜?wù)器用戶目錄上執(zhí)行:
wget http://download.virtualbox.org/virtualbox/rpm/rhel/7/x86_64/VirtualBox-5.2-5.2.8_121009_el7-1.x86_64.rpm。-
然后安裝VirtualBox:
rpm -ivh VirtualBox-5.2-5.2.8_121009_el7-1.x86_64.rpm。如圖,依賴庫一大堆都不存在:
依賴檢測(cè)失敗.jpg rpm安裝和源碼安裝時(shí),碰到這種問題是常事。接下來我們yum安裝這些缺失的依賴庫:
# yum install libGL libICE libSDL libSM libXcursor libXext libXinerama libXmu libXrender libXt libfontconfig libpng15 libvpx libxcb

- 其中l(wèi)ibSDL,libfontconfig和libpng15三個(gè)庫不在yum源中,其實(shí)都只是因?yàn)榘e(cuò)誤,使用
yum install SDL fontconfig libpng安裝即可。(這里折騰了很久,最終回過頭才發(fā)現(xiàn)走了天遠(yuǎn)的彎路,下面小部分為彎路)。
另外倆需要我們需要手動(dòng)下載安裝,這里我們依然使用rpm安裝。
網(wǎng)頁打開`https://pkgs.org/`。分別搜索這兩個(gè)軟件,找到下載地址分別為:
- SDL和libSDL。
- http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/i586/RPMS.classic//libpng15-1.5.28-alt2.i586.rpm。
- 試著安裝png,如圖報(bào)錯(cuò)lib.so.6,該庫的軟件包名稱為glibc,安裝:`yum install glibc`提示已經(jīng)安裝。
- 這個(gè)問題在Stack Overflow上有人回答過一串英文,大概意思是從`Red Hat Enterprise Linux 6`開始,默認(rèn)只安裝主架構(gòu)所需要的包,而不安裝兼容架構(gòu)的包。
- 也就是說,64位系統(tǒng)默認(rèn)只安裝64位的軟件包。為避免這種問題,在64位系統(tǒng)中,我們要手動(dòng)安裝32位的兼容包。
- 執(zhí)行命令`yum insall glibc.i686`,expat和freetype同樣的道理,未安裝32位的軟件包。
- 執(zhí)行`yum list installed expat freetype`查看,執(zhí)行`yum install expat.i686 freetype.i686`安裝。
- 到了最后rpmlic中的SetVersions和PosttransFiletriggers兩個(gè)模塊未安裝,但到底怎么安裝呢?
- 國(guó)內(nèi)的搜索引擎幾乎沒找到這類問題,我不得不上google查找,卻依然沒找到具體的解釋。
- 到了這里我才回過頭直接yum list SDL fontconfig libpng,發(fā)現(xiàn)可以直接安裝。
-
依賴安裝完畢,直接安裝VirtualBox成功如圖:image.png
圖中提示你已經(jīng)默認(rèn)創(chuàng)建了vboxusers用戶組(
/etc/group),VM用戶必須放置在該用戶組中。通常情況你不能使用root用戶登錄服務(wù)器,我這出于學(xué)習(xí)方便考慮就把常用的root用戶加入這個(gè)用戶組吧,usermod -a -G vboxusers root,然后查看當(dāng)前用戶所在組groups root。
2. 安裝對(duì)應(yīng)版本的Vagrant
這個(gè)vagrant的RPM包下載地址為:
https://releases.hashicorp.com/vagrant/2.0.4/vagrant_2.0.4_x86_64.rpm,我們同樣在用戶家目錄下載該文件并安裝試試。-
長(zhǎng)的帥的人執(zhí)行
rpm -ivh后都是這樣的:
。image.png box是vagrant管理的一個(gè)個(gè)容器,現(xiàn)在我們需要下載一個(gè)名為homestead的box。使用命令
vagrant box add laravel/homestead,安裝過程需要選擇你服務(wù)器上使用的虛擬機(jī)。輸入3回撤即可開始漫長(zhǎng)的等待。-
如果你的服務(wù)器在國(guó)內(nèi)小作坊,這里的等待時(shí)間可能足夠你睡個(gè)覺明天早上起來繼續(xù)操作。我使用騰訊云的最低配置大概下載了15分鐘,回車后洗了個(gè)澡回來就差不多了。當(dāng)時(shí)在我本地mac上是無論如何進(jìn)度條君都是0,于是借用宿友的windows,使用了360瀏覽器下載,本地搭建的話你也可以使用迅雷下載,或者使用ftp將這個(gè)1.6G的文件上傳到服務(wù)器。
image.png 注意,使用迅雷或者其他方式下載這個(gè)文件的話,資源地址在你執(zhí)行這條命令后會(huì)出現(xiàn)在終端,請(qǐng)手動(dòng)復(fù)制粘貼下載。
上面這個(gè)操作你也可以使用另外兩種方式下載,并不一定要使用
1. vagrant box add laravel/homestead
2. vagrant init laravel/homestead && vagrant up
3. vagrant box add homestead.box(本地文件)
你也可以直接訪問 http://app.vagrantup.com
- 下面幾個(gè)是vagrant常用命令,以后遇到其他的也會(huì)在此添加:
vagrant box list 列出本地所有box
vagrant box remove boxName 刪除某個(gè)box

3. 安裝Homestead并測(cè)試訪問
-
homestead的項(xiàng)目托管在 www.github.com/laravel/homestead上,所以你要首先保證服務(wù)器上安裝了git命令行,使用
git --version查看。
image.png 如果你沒有安裝,請(qǐng)執(zhí)行
yum install git -y安裝git-1.7?;蛘邊⒖歼@篇文章手動(dòng)安裝最新版git-2.9:http://www.itdecent.cn/p/3ffcd86a8412。在服務(wù)器根目錄克隆laravel/homestead源碼,并按照順序執(zhí)行下面的操作。(應(yīng)該都看得懂吧,有疑問可以留言或者私聊我)
# cd /
# git clone https://github.com/laravel/homestead.git
# cd homestead
# bash init.sh(生成項(xiàng)目配置文件)
- image.png
生成了Homestead.yaml這個(gè)文件后,我們以后對(duì)項(xiàng)目進(jìn)行的一些配置都在這個(gè)文件中操作。下面簡(jiǎn)單說一下并編輯這個(gè)文件中的重點(diǎn)部分:
authorize是用于ssh免密碼登陸虛擬機(jī)的
folders和sites是共享目錄和站點(diǎn)代碼的映射
databases是數(shù)據(jù)庫名,可以有多個(gè),數(shù)據(jù)庫密碼在laravel配置文件中
-
這時(shí)候我們?cè)?code>/homestead/目錄下啟動(dòng)一個(gè)vagrant環(huán)境,執(zhí)行
vagrant up,第一次啟動(dòng)速度有點(diǎn)慢。如果你碰到一些問題,請(qǐng)手動(dòng)刪除~/VirtualBox VMs/目錄下的所有文件。
搞定 -
如圖,虛擬機(jī)運(yùn)行成功。然而
vagrant ssh始終無法進(jìn)入這臺(tái)虛擬機(jī)進(jìn)行操作。折騰了幾個(gè)小時(shí)后我向騰訊云技術(shù)部門發(fā)起工單,得到的回復(fù)是虛擬機(jī)中無法創(chuàng)建使用新的虛擬機(jī)。
image.png 點(diǎn)擊訪問:常見安裝錯(cuò)誤。
涼了涼了,本來打算寫下面的多站點(diǎn)配置。看來還是刪了換Docker教程吧,容器級(jí)隔離,應(yīng)該是可以在虛擬機(jī)中創(chuàng)建docker容器的??沈v訊云那邊居然電話聯(lián)系我說不知道,叫我自行測(cè)試Docker使用。
4. 域名解析和多站點(diǎn)測(cè)試,域名實(shí)名認(rèn)證及備案中,等待Docker版本更新。后續(xù)將使用LaraDock進(jìn)行教程分享,laradock幾乎就是docker版的homestead。
5. 趕緊卸載vagrant和virtualbox
rpm -qa列出本地所有rpm安裝的包,可以結(jié)合grep命令進(jìn)行過濾。rpm -qa | grep vagrant && rpm -e vagrant- image.png
rpm -qa | grep VirtualBox && rpm -e VirtualBox查找沒問題,這樣刪除會(huì)出錯(cuò),找不到這個(gè)包,使用全名的話提示有一個(gè)虛擬機(jī)正在運(yùn)行中。- image.png
關(guān)閉vbox虛擬機(jī)再刪除。
查看是誰在運(yùn)行: VboxManage list vms
關(guān)閉那個(gè)虛擬機(jī):VBoxManage controlvm homestead-7 poweroff
卸載virtualbox:rpm -e VirtualBox-5.2-5.2.8_121009_el7-1.x86_64
- image.png
參考文檔:
rpm安裝依賴問題:http://raksmart.idcspy.com/781
百度文庫:https://wenku.baidu.com/view/af83dd01bfd5b9f3f90f76c66137ee06eff94ecb.html










