我这个人比较懒,图片我就不上传了基本就说说步骤,记录下安装时遇到的坑,还有各种问题。

系统环境:win7

软件:

VirtualBox 4.2.16(坑1)

Vagrant

Laravel Homestead

Git

首先安装好 VirtualBoxVagrant,安装完成 Vagrant 后需要重启,重启后执行

vagrant -v

 说明安装完成,提示找不到命令的把 vagrant 的bin目录加入环境变量即可。

 

接下来你需要执行 vagrant box add laravel/homestead 来安装 homestead 的虚拟机文件,但是以目前来看,国内这样做是下载不来的

使用下载工具搞定后,就需要安装了

vagrant box add laravel/homestead ./homestead-0-2-6-vb.box

等待数秒即可安装完毕,add 后面两个参数,前面这个名一定要是lavavel/homestead,至于为什么我后面会讲。后面那个是你下载来的 .box 文件路径。如果提示找不到,你可以写绝对路径。如:D:/ homestead-0-2-6-vb.box.

 

接下来的操作需要用到 git bash 这个工具(或者你自己下个扩展的CMD,例如cygwin),下载安装好 git 之后打开 'git bash', 随便找个盘执行。我是在g盘执行的.

git clone https://github.com/laravel/homestead.git hs

 

然后进入g:/hs目录 下执行

bash init.sh

 

会在 C 盘生成一些 homestead 的配置文件,下面后修改这些配置。如果你是用cygwin的话,会在cygwin的安装目录下,有个home文件夹里面才有homestead的配置文件

在C:\Users\samliang\.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: g:\Code    <!-- 我的window项目地址 -->
      to: /home/vagrant/Code   <!-- 对应虚拟机的项目地址 -->

sites:
    - map: homestead.app  <!-- 添加的第一个站点名称 -->
      to: /home/vagrant/Code/laravel /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"you@homestead这里填自己的邮箱就可以了。 接下里几个 回车,完成配置。

 

接着去到g:/hs 文件夹下运行vagrant up,第一次运行时会在 C 盘创建虚拟机文件,所以耐性等待,接下来看到我们的虚拟机启动成功。

很多教程说要运行vagrant init 其实是不用的,因为你用git clone下来的已经有一个写好的Vagrantfile文件了。这个文件是homestead配置好的初始化参数,请不要随便修改除非你明白如何修改。而init命令是为了生成Vagrantfile 文件。这个文件是对虚拟机的启动时用来初始化的参数。有兴趣的同学,可以到vagrant学习,这个文件是用ruby语法写的。

上面不是说vagrant box add laravel/homestead 这个不能更改么。这是因为这个git clone下来的Vagrantfile文件是调用这个名字laravel/homestead的box,如果你前面box add没用这个名字,就会一直提示找不到。当然你可以研究下Vagrantfile文件,找下在那里有这个配置的修改。

 

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

 

接下来修改我们 windows 的host文件,在后面加上(坑3)

192.168.10.10     homestead.app

 
然后访问homestead.app可以看到同样画面。
这里要明白:配置中的

folders:
    - map: E:\Projects    <!-- 我的window项目地址 -->
      to: /home/vagrant/Code   <!-- 对应虚拟机的项目地址 -->

就是将主机与虚拟的这个两个目录共享,里面的文件更新都会同步。

 

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

这里/home/vagrant/Code/laravel/public 是homestead.app站点目录,在 g:/Code中新建一个laravel项目名称为 laravel(如何建laravel大家应该知道吧),然后在打开浏览器访问homestead.app,就是我们熟悉的画面了。

当然,你可以不建laravel项目,直接建好G:/Code/laravel/public 这些文件夹,然后在里面写php也是能直接运行的。

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

PS:

如何增加站点:

在homestead.yaml修改如下:

sites:

    - map: homestead.app

      to: /home/vagrant/Code/laravel/public

    - map: php.app

      to: /home/vagrant/Code/phplocal

    - map: lala.app

      to: /home/vagrant/Code/lala/public

修改完后,如果虚拟机未运行,你可以执行 vagrant up –provision来更新。

如果已运行,你可以执行vagrant provision更新。

 

最后总结一下各种坑:

1VirtualBox的版本选择!VirtualBox的版本选择!VirtualBox的版本选择!

为什么我在软件里只有VBOX写明是那个版本呢。是因为我在vbox4.35.0里折腾了大半天,每次vagrant up第一次启动有时成功有时失败。而且,就算第一次启动成功,如果你用vagrant  halt关机,然后再重新启动,会出现启动不了的情况!你打开vbox界面,你会看到虚拟机是异常退出状态!

所以一定要用我这个版本,当然如果不行你还是老实换版本,不要折腾了。具体怎样解决我也找不到。


2:安装intl扩展

当安装intl扩展时,会要求你sudo app-get update.

但是,执行sudo app-get update会报错的。具体是因为DNS解析问题。

解决方法如下:(我用的是第二个)

 

修改dns:

1,重启生效:

sudo vi /etc/resolvconf/resolv.conf.d/base(这个文件默认是空的)

在里面插入:
nameserver 8.8.8.8
nameserver 8.8.4.4

如果有多个DNS就一行一个

修改好保存,然后执行

sudo resolvconf -u

再看/etc/resolv.conf,最下面就多了2行:

cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 8.8.4.4

可以看到我们的设置已经加上了,然后再ping一个域名,当时就可以解析了,无需重启。

 

2,重启失效:

配置文件地址 /etc/resolv.conf

使用编辑器打开

改为如下内容:
search localdomain
nameserver 202.96.128.86 希望修改成的DNS
nameserver 202.96.128.166 备用DNS

重启网络:sudo /etc/init.d/networking restart。即可

 

3host文件修改后也不能正常访问homestead.app

这个是因为windowdns cline服务问题。到管理工具-》选择服务找到dns Cline服务将其停止掉即可。