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