開始 ―― Laravel Homestead

2018-02-24 15:38 更新

開始 —— Laravel Homestead

1、簡介

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)建和測試。

1.1 包含軟件

  • Ubuntu 14.04
  • PHP 5.6 / PHP 7.0
  • HHVM
  • Nginx
  • MySQL
  • Postgres
  • Node (With PM2, Bower, Grunt, and Gulp)
  • Redis
  • Memcached(只支持PHP 5.x)
  • Beanstalkd
  • Laravel Envoy
  • Blackfire Profiler

2、安裝 & 設(shè)置

2.1 首次安裝

在啟用Homestead環(huán)境之前,需要先安裝Virtual Box或者VMWareVagrant,所有這些軟件包都會常用操作系統(tǒng)提供了一個便于使用的可視化安裝器。

2.1.1 安裝Homestead Vagrant 盒子

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

2.1.2 克隆已有的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

2.1.3 升級到PHP 7.0

如果你已經(jīng)在使用PHP 5.x版的Homestead盒子,可以輕松升級安裝到PHP 7.0。首先,克隆laravel/homesteadphp-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命令即可。

2.2 配置Homestead

2.2.1 設(shè)置Provider

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

provider: virtualbox

2.2.2 設(shè)置SSH key

Homestead.yaml文件中還要配置公共SSH key的路徑,如果沒有SSH key,那么在Mac或Linux上,可以通過如下命令來生成:

ssh-keygen -t rsa -C "you@homestead"

在Windows上,可以安裝Git然后使用Git自帶的“Git Bash”來執(zhí)行上述命令。除此之外,你還可以使用PUTTYPUTTYgen工具來生成SSH key。

2.2.3 配置共享文件夾

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"

2.2.4 配置Nginx站點

對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è)置hhvmtrue讓所有的Homestead站點使用HHVM

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public
      hhvm: true

默認情況下,每個站點都可以通過HTTP(端口號:8000)和HTTPS(端口號:44300)進行訪問。

2.2.5 Hosts文件

不要忘記把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

2.3 啟動Vagrant Box

編輯好Homestead.yaml文件后,在Homestead目錄下運行vagrant up命令,vagrant將會啟動虛擬機并自動配置共享文件夾以及Nginx站點。

銷毀該機器,可以使用vagrant destroy?--force

2.4 為指定項目安裝Homestead

全局安裝Homestead將會使每個項目共享同一個Homestead盒子,你還可以為每個項目單獨安裝Homestead,這樣就會在該項目下創(chuàng)建Vagrantfile,允許其他人在該項目中執(zhí)行vagrant up命令,在指定項目根目錄下使用Composer執(zhí)行安裝命令如下:

composer require laravel/homestead --dev

這樣就在項目中安裝了Homestead。Homestead安裝完成后,使用make命令生成VagrantfileHomestead.yaml文件,make命令將會自動配置Homestead.yaml中的sitesfolders屬性。

Mac/Linux:

php vendor/bin/homestead make

Windows:

vendor\bin\homestead make

接下來,在終端中運行vagrant up命令然后在瀏覽器中通過http://homestead.app訪問站點。不要忘記在/etc/hosts(Linux)文件中添加域名homestead.app

3、日常使用

3.1 通過SSH連接

你可以在Homestead目錄下通過終端命令vagrant ssh以SSH方式連接到虛擬機,但是如果你需要以更平滑的方式連接到Homestead,可以為主機添加一個別名來快速連接到Homestead盒子。創(chuàng)建完別名后,可以簡單使用vm命令來從任何地方以SSH方式連接到Homestead機器:

alias vm="ssh vagrant@127.0.0.1 -p 2222"

3.2 連接到數(shù)據(jù)庫

默認已經(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ù)庫連接配置。

3.3 添加更多站點

Homestead環(huán)境在運行時,你可能想要添加額外Laravel應(yīng)用到Nginx站點,你可以在單個Homestead環(huán)境中運行多個Laravel應(yīng)用,添加站點很簡單,只需將站點添加到Homestead.yaml文件,然后在Homestead目錄中運行vagrant provision命令即可。

注意:該處理是不可逆的,運行provision命令時,已經(jīng)存在的數(shù)據(jù)庫會被銷毀并重建。

3.4 端口轉(zhuǎn)發(fā)配置

默認情況下,Homestead端口轉(zhuǎn)發(fā)配置如下:

  • SSH:?2222 → Forwards To 22
  • HTTP:?8000 → Forwards To 80
  • HTTPS:?44300 → Forwards To 443
  • MySQL:?33060 → Forwards To 3306
  • Postgres:?54320 → Forwards To 5432

3.4.1 轉(zhuǎn)發(fā)更多端口

如果你想要在Vagrant盒子添加更多端口轉(zhuǎn)發(fā),做如下轉(zhuǎn)發(fā)協(xié)議設(shè)置即可:

ports:
    - send: 93000
      to: 9300
    - send: 7777
      to: 777
      protocol: udp

4、使用Blackfire?Profiler進行性能分析

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)用性能進行分析

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號