在 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镜像

防止原贴被删除,故转发到这里

相关文章
相关标签/搜索