您的位置:首页 > 其它

window下的homestead部署

2015-08-17 09:56 155 查看
我这个人比较懒,图片我就不上传了基本就说说步骤,记录下安装时遇到的坑,还有各种问题。

系统环境:win7

软件:

VirtualBox 4.2.16(坑1)

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 后面两个参数,前面这个名一定要是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服务将其停止掉即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: