[教程] Windowsss 下的 Homestad 环境部署
最近因为一些原因需要转移到 Homestead 上开发,折腾了差不多一天,Windows下总算是装部署好了 Homestead,总体来说,windows下相比 mac/linux 安装要复杂那么一点点。想要安装的同学也不用慌,坑也被我踩的差不多了,只需要跟着下面一步步的做就可以了。
下面是我详细的安装过程:
硬件:
Window7/Window8
软件:
VirtualBox
Vagrant
Laravel Homestead
Git
首先安装好 VirtualBox 和 Vagrant,安装完成 Vagrant 后需要重启,重启后执行
vagrant -v

说明安装完成,提示找不到命令的把 vagrant 的bin目录加入环境变量即可。
接下来你需要执行 vagrant box add laravel/homestead 来安装 homestead 的虚拟机文件,但是以目前来看,国内这样做是下载不来的,这是下载链接
https://atlas.hashicorp.com/laravel/boxes/homestead/versions/0.2.6/providers/virtualbox.box
使用下载工具搞定后,就需要安装了,在同一目录下执行
vagrant box add laravel/homestead ./homestead-0-2-6-vb.box
等待数秒即可安装完毕,add 后面两个参数,前面的自己随便取个名称,后面的是下载来的 .box 文件。

接下来的操作需要用到 git bash 这个工具(下面全部命令都将在 bash 下执行),下载安装好 git 之后打开 'git bash',
随便找个目录下(这里假定在桌面),执行
git clone https://github.com/laravel/homestead.git Homestead
接在在 Homestead 下执行 bash init.sh

会在 C 盘生成一些 homestead 的配置文件,下面后修改这些配置。
在 C:\Users\li.homestead 找到 Homestead.yaml,下面是我的配置
---
ip: "192.168.10.10" <!-- 虚拟机 ip -->
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: E:\Projects <!-- 我的window项目地址 -->
to: /home/vagrant/Code <!-- 对应虚拟机的项目地址 -->
sites:
- map: laravel.dev <!-- 添加的第一个站点名称 -->
to: /home/vagrant/Code/laravel-dev/public <!-- 该站点对应的虚拟机文件 -->
databases:
- homestead
variables:
- key: APP_ENV
value: local
现在配置 SSH ,也就是上面配置中看到 ~/.ssh/id_rsa.pub 和 ~/.ssh/id_rsa
在 git bash中运行 ssh-keygen -t rsa -C "you@homestead" ,这里填自己的邮箱就可以了。 接下里几个 回车,完成配置。
去我们的 E 盘中创建 Projects 文件夹,接着来我们的 Homestead 文件夹下运行 vargrant init 初始化,得到 Vagrantfile 文件。然后运行 vagrant up,第一次运行时会在 C 盘创建虚拟机文件,所以耐性等待,接下来看到我们的虚拟机启动成功。

在浏览器中打开 localhost:8000,看到以下画面说明,homestead已经搭建成功。

接下来修改我们 windows 的host文件(不知道的同学自行百度),在后面加上
192.168.10.10 laravel.dev
然后访问可以看到同样画面。
这里要明白:配置中的
folders:
- map: E:\Projects <!-- 我的window项目地址 -->
to: /home/vagrant/Code <!-- 对应虚拟机的项目地址 -->
就是将主机与虚拟的这个两个目录共享,虚拟机中的目录是站点目录,可以认为是我们之前所用的 www 目录和 htdocs 目录。好了,在 Projects中新建一个laravel项目名称为 laravel-dev (这里是为什么请自行理解),然后在打开浏览器访问 laravel.dev,就是我们熟悉的画面了。

接下来可以进入我们的虚拟机看看环境什么的。通过 vagrant ssh 进入到虚拟机

最后,安装参考这篇文章 link,貌似国内进不去,需要参考的同学自行解决!
文章地址发表在我的博客。
补充
添加新的站点, homestead edit 添加新的目录和数据库名,如下
folders:
- map: E:/Projects
to: /home/vagrant/Code
sites:
- map: crud.dev
to: /home/vagrant/Code/crud-dev/public
- map: laravel.dev
to: /home/vagrant/Code/laravel-dev/public
- map: oshare.dev
to: /home/vagrant/Code/oshare-dev/public
databases:
- homestead
- curd
- oshare
一目了然吧,不过每次添加之后需要在项目文件目录下执行
composer require laravel/homestead
php vendor/bin/homestead make
然后在 Homestead 目录下 vagrant provision
以上参考官方文档,有不足之处可以提出改进
关于 LearnKu
An error occurred while downloading the remote file. The error
message, if any, is reproduced below. Please fix this error and try
again.
Couldn't open file /E:/Laravel-Projects/base
我出现了这个错误
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'hashicorp/precise32' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
default: The guest additions on this VM do not match the installed version o f
default: VirtualBox! In most cases this is fine, but in rare cases it can
default: prevent things such as shared folders from working properly. If you see
default: shared folder errors, please make sure the guest additions within t he
default: virtual machine match the version of VirtualBox you have installed on
default: your host and reload your VM.
default:
default: Guest Additions Version: 4.2.0
default: VirtualBox Version: 5.1
==> default: Mounting shared folders...
default: agrant => D:/homestead/Homestead
==> default: Machine already provisioned. Run
vagrant provisionor use the-- provision==> default: flag to force provisioning. Provisioners marked to run always will still run.