Laravel致力于將整個(gè)PHP開(kāi)發(fā)體驗(yàn)變得讓人愉悅,包括本地開(kāi)發(fā)環(huán)境。
Vagrant提供了一個(gè)便捷的方式來(lái)管理和設(shè)置虛擬機(jī)盒子,該盒子提供了一流的開(kāi)發(fā)環(huán)境,有了它,我們不再需要在本地環(huán)境安裝PHP、HHVM、web服務(wù)器以及其它服務(wù)器軟件,我們也完全不用再擔(dān)心誤操作搞亂操作系統(tǒng)——因?yàn)閂agrant盒子是一次性的,如果出現(xiàn)錯(cuò)誤,可以在數(shù)分鐘內(nèi)銷(xiāo)毀并重新創(chuàng)建該Vagrant盒子!
Homestead可以運(yùn)行在Windows、Mac以及Linux系統(tǒng)上,其中已經(jīng)安裝好了Nginx、PHP5.6、MySQL、Postgres、Redis、Memcached、Node以及很多其它開(kāi)發(fā)牛逼Laravel應(yīng)用所需要的東西。
注意:如果你使用的是Windows,需要開(kāi)啟系統(tǒng)的硬件虛擬化(VT-x),這通??梢酝ㄟ^(guò)BIOS來(lái)開(kāi)啟。
Homestead目前基于Vagrant 1.7進(jìn)行構(gòu)建和測(cè)試。
在啟用Homestead環(huán)境之前,需要先安裝Virtual Box或者VMWare和Vagrant,所有這些軟件包都會(huì)常用操作系統(tǒng)提供了一個(gè)便于使用的可視化安裝器。
VirtualBox/VMWare和Vagrant安裝好了之后,在終端中使用能如下命令將laravel/homesterad
添加到vagrant安裝中。這將會(huì)花費(fèi)一些時(shí)間下載該盒子,時(shí)間長(zhǎng)短主要取決于你的網(wǎng)絡(luò)連接速度:
vagrant box add laravel/homestead
如果上述命令執(zhí)行失敗,可以使用vagrant老版本的方式,這需要輸入完整的URL:
vagrant box add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead
你還可以通過(guò)簡(jiǎn)單克隆倉(cāng)庫(kù)代碼來(lái)實(shí)現(xiàn)Homestead安裝,考慮到克隆倉(cāng)庫(kù)到home目錄下的Homestead
文件夾,Homestead盒子將會(huì)作為所有其他Laravel項(xiàng)目的主機(jī):
git clone https://github.com/laravel/homestead.git Homestead
克隆完成后,在Homestead目錄下運(yùn)行?bash init.sh?
命令來(lái)創(chuàng)建Homestead.yaml
配置文件,Homestead.yaml
配置文件文件位于?~/.homestead
目錄:
bash init.sh
如果你已經(jīng)在使用PHP 5.x版的Homestead盒子,可以輕松升級(jí)安裝到PHP 7.0。首先,克隆laravel/homestead
的php-7
分支到一個(gè)新的文件夾:
git clone -b php-7 https://github.com/laravel/homestead.git Homestead
不需要運(yùn)行init.sh
腳本來(lái)覆蓋整個(gè)Homestead.yaml
文件,你只需要簡(jiǎn)單添加該盒子到已存在的Homestead.yaml
文件頂部即可:
box: laravel/homestead-7
接下來(lái),從包含克隆laravel/homestead
倉(cāng)庫(kù)的目錄運(yùn)行vagrant up
命令即可。
Homestead.yaml
文件中的provider
鍵表示哪個(gè)Vagrant提供者將會(huì)被使用:virtualbox
、vmware_fushion
,還是vmware_workstation
,你可以將其設(shè)置為自己喜歡的提供者:
provider: virtualbox
在Homestead.yaml
文件中還要配置公共SSH key的路徑,如果沒(méi)有SSH key,那么在Mac或Linux上,可以通過(guò)如下命令來(lái)生成:
ssh-keygen -t rsa -C "you@homestead"
在Windows上,可以安裝Git然后使用Git自帶的“Git Bash”來(lái)執(zhí)行上述命令。除此之外,你還可以使用PUTTY和PUTTYgen工具來(lái)生成SSH key。
Homestead.yaml
文件中的folders選項(xiàng)
列出了所有你想要和Homestead環(huán)境進(jìn)行共享的目錄,一旦這些目錄中的文件有了修改,將會(huì)在本地和Homestead環(huán)境中保持同步,如果有需要的話,你可以配置盡可能多的共享目錄:
folders:
- map: ~/Code
to: /home/vagrant/Code
如果想要開(kāi)啟NFS,只需簡(jiǎn)單添加一個(gè)標(biāo)識(shí)到同步文件夾配置:
folders:
- map: ~/Code
to: /home/vagrant/Code
type: "nfs"
對(duì)Nginx不熟?沒(méi)問(wèn)題,sites選項(xiàng)
允許你方便的匹配“域名”到Homestead環(huán)境的某個(gè)目錄,一個(gè)示例站點(diǎn)配置已經(jīng)包含到Homestead.yaml
文件。跟共享文件夾一樣,你可以想配置多少個(gè)站點(diǎn)就配置多少個(gè)。Homestead可以為你的每個(gè)Laravel項(xiàng)目充當(dāng)方便的、虛擬化的開(kāi)發(fā)環(huán)境:
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
你可以通過(guò)設(shè)置hhvm
為true
讓所有的Homestead站點(diǎn)使用HHVM:
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
hhvm: true
默認(rèn)情況下,每個(gè)站點(diǎn)都可以通過(guò)HTTP(端口號(hào):8000)和HTTPS(端口號(hào):44300)進(jìn)行訪問(wèn)。
不要忘記把Nginx站點(diǎn)中的域名添加到本地機(jī)器上的hosts
文件,該文件會(huì)將對(duì)本地域名的請(qǐng)求重定向到Homestead環(huán)境,在Mac或Linux上,該文件位于/etc/hosts
,在Windows上,位于C:\Windows\System32\drivers\etc\hosts
,添加方式如下:
192.168.10.10 homestead.app
確保IP地址和你的Homestead.yaml文件中列出的一致,一旦你將域名放置到hosts
文件,就可以在瀏覽器中通過(guò)該域名訪問(wèn)站點(diǎn)了!
http://homestead.app
編輯好Homestead.yaml
文件后,在Homestead目錄下運(yùn)行vagrant up
命令,vagrant將會(huì)啟動(dòng)虛擬機(jī)并自動(dòng)配置共享文件夾以及Nginx站點(diǎn)。
銷(xiāo)毀該機(jī)器,可以使用vagrant destroy?--force
全局安裝Homestead將會(huì)使每個(gè)項(xiàng)目共享同一個(gè)Homestead盒子,你還可以為每個(gè)項(xiàng)目單獨(dú)安裝Homestead,這樣就會(huì)在該項(xiàng)目下創(chuàng)建Vagrantfile
,允許其他人在該項(xiàng)目中執(zhí)行vagrant up
命令,在指定項(xiàng)目根目錄下使用Composer執(zhí)行安裝命令如下:
composer require laravel/homestead --dev
這樣就在項(xiàng)目中安裝了Homestead。Homestead安裝完成后,使用make
命令生成Vagrantfile
和Homestead.yaml
文件,make
命令將會(huì)自動(dòng)配置Homestead.yaml
中的sites
和folders
屬性。
Mac/Linux:
php vendor/bin/homestead make
Windows:
vendor\bin\homestead make
接下來(lái),在終端中運(yùn)行vagrant up
命令然后在瀏覽器中通過(guò)http://homestead.app
訪問(wèn)站點(diǎn)。不要忘記在/etc/hosts
(Linux)文件中添加域名homestead.app
。
你可以在Homestead目錄下通過(guò)終端命令vagrant ssh
以SSH方式連接到虛擬機(jī),但是如果你需要以更平滑的方式連接到Homestead,可以為主機(jī)添加一個(gè)別名來(lái)快速連接到Homestead盒子。創(chuàng)建完別名后,可以簡(jiǎn)單使用vm
命令來(lái)從任何地方以SSH方式連接到Homestead機(jī)器:
alias vm="ssh vagrant@127.0.0.1 -p 2222"
默認(rèn)已經(jīng)在homestead
中為MySQL和Postgres數(shù)據(jù)庫(kù)做好了配置,更加方便的是,Laravel的local
數(shù)據(jù)庫(kù)配置已經(jīng)為使用數(shù)據(jù)庫(kù)做好了設(shè)置。
想要通過(guò)本地的Navicat或Sequel Pro連接上MySQL或Postgres數(shù)據(jù)庫(kù),可以通過(guò)新建連接來(lái)實(shí)現(xiàn),主機(jī)IP都是127.0.0.1
,對(duì)于MySQL而言,端口號(hào)是33060,對(duì)Postgres而言,端口號(hào)是54320,用戶名/密碼是homestead/secret
。
注意:只有從本地連接Homestead的數(shù)據(jù)庫(kù)時(shí)才能使用這些非標(biāo)準(zhǔn)的端口,在Homestead環(huán)境中還是應(yīng)該使用默認(rèn)的3306和5432端口進(jìn)行數(shù)據(jù)庫(kù)連接配置。
Homestead環(huán)境在運(yùn)行時(shí),你可能想要添加額外Laravel應(yīng)用到Nginx站點(diǎn),你可以在單個(gè)Homestead環(huán)境中運(yùn)行多個(gè)Laravel應(yīng)用,添加站點(diǎn)很簡(jiǎn)單,只需將站點(diǎn)添加到Homestead.yaml
文件,然后在Homestead目錄中運(yùn)行vagrant provision
命令即可。
注意:該處理是不可逆的,運(yùn)行
provision
命令時(shí),已經(jīng)存在的數(shù)據(jù)庫(kù)會(huì)被銷(xiāo)毀并重建。
默認(rèn)情況下,Homestead端口轉(zhuǎn)發(fā)配置如下:
如果你想要在Vagrant盒子添加更多端口轉(zhuǎn)發(fā),做如下轉(zhuǎn)發(fā)協(xié)議設(shè)置即可:
ports:
- send: 93000
to: 9300
- send: 7777
to: 777
protocol: udp
SensioLabs的Blackfire Profiler能自動(dòng)收集代碼執(zhí)行數(shù)據(jù),比如內(nèi)存、CPU時(shí)間、硬盤(pán)I/O等,Homestead使得在應(yīng)用中使用該profiler變得輕而易舉。
所有需要的軟件包已經(jīng)安裝到Homestead盒子,你只需要在Homestead.yaml
文件中設(shè)置Blackfire Server ID和token:
blackfire:
- id: your-server-id
token: your-server-token
client-id: your-client-id
client-token: your-client-token
配置好Blackfire的憑證之后,在Homestead目錄下使用vagrant provision
重新指配盒子。在此之前,確保你已經(jīng)查看過(guò)Blackfire文檔了解了如何為你的瀏覽器安裝相應(yīng)應(yīng)的Blackfire擴(kuò)展。
擴(kuò)展閱讀1:實(shí)例教程——在 Windows 上進(jìn)行 Laravel Homestead 安裝、配置及測(cè)試
擴(kuò)展閱讀2:實(shí)例教程——在Laravel Homestead中使用Blackfire Profiler對(duì)應(yīng)用性能進(jìn)行分析
更多建議: