在 Windows 上進行 Laravel Homestead 安裝、配置及測試

 軟件環境:在 Windows 10 上基於 VirtualBox 4.3.24 + Vagrant 1.7.1 使用 Laravel Homestead。php

一、準備

先下載安裝VirtualBoxVagranthtml

安裝完成後須要將vagrant/vagrant.exe所在目錄放到系統路徑中(這個須要根據Vagrant安裝目錄來,好比個人是D:\HashiCorp\Vagrant\bin)。laravel

二、安裝及配置

2.1 安裝

使用Vagrant安裝Homestead盒子數據庫

在控制檯中執行以下命令:瀏覽器

vagrant box add laravel/homestead

安裝過程須要較長時間(取決於你的網絡鏈接速度),若是網絡中斷,直接再次執行上面的命令會報錯:網絡

HTTP server doesn't seem to support byte ranges. Cannot resume.

意思是說不支持斷點下載,不能從上次中斷的地方恢復下載,解決辦法是去~/.vagrant.d/tmp(Windows上須要將~替換成當前用戶目錄,好比你當前用戶名是test,則對應目錄爲C:\Users\test\.vagrant.d\tmp)目錄中刪除下載的部分文件。而後再執行上面的命令便可從新開始下載:app

添加Homestead盒子

這種方式是全局安裝,即同一主機上全部項目共享該Homestead盒子,固然你也能夠爲每一個項目單獨指定Homestead盒子,可參考Laravel Homestead相應的文檔,這裏再也不贅述。composer

使用Composer全局安裝Homestead包ssh

composer global require "laravel/homestead=~2.0"

使用Composer全局安裝Homestead包

2.2 配置

安裝完Homestead盒子後,默認配置文件位於~/.homestead/Homestead.yaml(Windows下用戶名爲test的話對應目錄是C:\Users\test\.homestead\Homestead.yaml)。該配置文件內容以下所示:ide

Homestead.yaml默認配置及註釋

2.2.1 SSH KEY

因爲咱們在安裝Homestead盒子時已經指定了provider,因此這裏沒有該選項。若是系統沒有配置過公共SSH KEY路徑,能夠參考Homestead文檔設置SSH KEY部分去生成。

2.2.2 共享文件夾

接下來,咱們來配置主機和虛擬機之間的共享文件夾,這個經過folders選項來配置。配置完成後,主機上對應文件夾下的任何文件修改都會實時同步到虛擬機相應的文件夾下。若是要開啓NFS,只需在folders選項下新增一個type配置:

folders:
    - map: E:/xampp/htdocs/laravel
      to: /vagrant/laravel
      type: 'nfs'

這裏咱們將其修改成前一篇文章中已經安裝好的Laravel應用目錄laravelapp

folders:
    - map: E:/xampp/htdocs/laravelapp
      to: /vagrant/laravelapp
2.2.3 Nginx配置

而後咱們來進行Nginx站點配置,該配置容許咱們在Homestead.yaml文件中經過sites選項進行簡單域名解析,而沒必要去虛擬機上對Nginx進行復雜配置,就能夠完成域名與Homestead上相應目錄的映射。Homestead.yaml默認已經爲咱們配置了一個示例站點homestead.app,該域名映射到Homestead上的/vagrant/laravel/public目錄,這裏咱們相應將目錄修改成/vagrant/laravelapp/public

sites:
    - map: homestead.app
      to: /vagrant/laravelapp/public
      hhvm: true

這裏咱們設置hhvmtrue以讓該站點使用HHVM。

配置完域名解析後,不要忘了在hosts中添加對應的IP地址映射:

127.0.0.1 homestead.app

多站點配置

多站點配置很簡單,只須要在sites選項中新增匹配便可:

sites:
    - map: homestead.app
      to: /vagrant/laravelapp/public
    - map: laravel.app
      to: /vagrant/laravelapp/public

注意:配置多站點後須要使用homestead provision重啓homestead虛擬機。

若是你使用ssh登陸到Homestead的話,還能夠經過以下命令新增站點:

serve laravel.app /vagrant/laravelapp/public 80
2.2.4 數據庫配置

Homestead.yaml中默認已經配置好了一個數據庫配置示例,該配置示例對應新安裝的Laravel應用中的.env數據庫配置:

APP_ENV=local
APP_DEBUG=true
APP_KEY=8PGeOBuLcDBHSvjBL19fGw5aySbb9M3d

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

.env中配置就是爲Homestead準備的。這意味着咱們在Homestead上能夠經過homestead/secret鏈接上數據庫,且該數據庫中有一個名爲homestead的數據庫。

對數據庫配置咱們不作任何更改。

2.2.5 端口轉發

默認狀況下,Homestead端口轉發配置以下:

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

若是要添加更多端口轉發,能夠經過在Homestead.yaml中新增ports選項配置:

ports: - send: 93000 to: 9300

小貼士:想要對Homestead虛擬機有更多的自定義配置,能夠去修改~/AppData/Roaming/Composer/vendor/laravel/homestead/scripts/homestead.rb文件,該文件對Homestead有更加細粒度的配置,而後被~/AppData/Roaming/Composer/vendor/laravel/homestead/Vagrantfile引用。

三、啓動及測試

3.1 啓動報錯及解決方法

完成上述配置後,咱們可使用homestead up啓動Homestead虛擬機了,若是啓動時報錯:

There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["hostonlyif", "create"]

Stderr: 0%...
Progress state: E_FAIL
VBoxManage.exe: error: Failed to create the host-only adapter
VBoxManage.exe: error: Code E_FAIL (0x80004005) - Unspecified error (extended in
fo not available)
VBoxManage.exe: error: Context: "int __cdecl handleCreate(struct HandlerArg *,in
t,int *)" at line 66 of file VBoxManageHostonly.cpp

則對應的解決方案以下:

1)去C:\Users\test\AppData\Roaming\Composer\vendor\laravel\homestead\scripts(假定你的Windows用戶名爲test)而後打開homestead.rb

2)在homestead.rb中註釋第17行:

# config.vm.network :private_network, ip: settings["ip"] ||= "192.168.10.10"

3)去D:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-1.7.1\plugins\providers\virtualbox(相關目錄取決於你安裝Vagrant的目錄及版本)打開action.rb

4)在action.rb中註釋掉第64行:

# b.use ClearNetworkInterfaces

5)以管理員權限打開VirtualBox,去管理->全局設定->網絡界面,點擊第二個選項卡「僅主機(Host-only)網絡」,選擇一個適配器進行編輯(將IP設爲與Homestead.yaml中一致即192.168.10.10)並保存:

設置VirtualBox全局網絡配置

6)接下來設置VirtualBox中homestead的網絡配置,選擇其鏈接方式爲:僅主機(Host-only)適配器「:

設置Homestead網絡配置

7)再次運行homestead up

啓動Homestead

3.2 測試

3.2.1 SSH鏈接測試

而後咱們能夠經過homestead ssh鏈接到虛擬機,固然也可使用其餘工具如putty鏈接:

使用putty鏈接到homestead

putty鏈接配置信息以下:

IP:127.0.0.1
端口號:2222
用戶名:vagrant
密碼:vagrant
3.2.2 瀏覽器站點訪問測試

接下來咱們火燒眉毛去瀏覽器中測試下吧(爲區分咱們將視圖中文字略做修改):

Homestead站點訪問測試

3.2.3 本地數據庫鏈接測試

咱們使用Navicat For MYSQL對Homestead上的MySQL數據庫鏈接作了測試:

本地鏈接Homestead數據庫測試

數據庫鏈接信息與上面數據庫配置.env中的配置信息同樣。

固然,在安裝啓動Homestead的過程還有各類其它小問題,這裏只作了一個簡單測試,在具體操做過程當中有任何問題,歡迎在下面的評論框中提出,咱們來一塊兒探討。

附:Homestead命令大全

命令 解釋
up 啓動homestead
halt 中止homestead
init 建立初始化的homestead.yaml
edit 編輯homestead.yaml
suspend 掛起homestead
resume 繼續掛起的homestead
ssh 經過ssh登陸homestead
run 經過ssh在homestead上運行命令
status 獲取homestead的狀態
list 列表命令
help 顯示命令的幫助
provision 從新配置homestead
destory 銷燬homestead
update 更新homestead鏡像

防止原貼被刪除,故轉發到這裏

相關文章
相關標籤/搜索