让 VAGRANT 启动并运行起来 已翻译 100%

oschina 投递于 2014/06/22 16:21 (共 13 段, 翻译完成于 06-26)
阅读 50812
收藏 128
14
加载中

这是一个帮助你快速入门Vagrant的初级教程。官方文档也可以很好的帮助你入门,但是本文更针对完全零基础的初学者并且会对某些问题直接切入正题。

本文在任何方面都不会取代官方文档,而且我建议读完本文的人马上阅读官方文档。因此,如果你符合以下条件即可阅读本文:

  • 你想知道Vagrant是什么,它有什么作用。

  • 你想对为什么Vagrant会使你的开发环境增压又一个初步的理解。

  • 你想快速地在本地搭建一个PHP 5.4开发环境。

注意! 如果你在寻找一个在Chef或者是Puppet中配置Vagrant的教程,本文并不适合你。本文也希望读者对命令行和git有基本的理解。最后,本文是针对Mac用户的,但是对PC用户和Linux用户也基本相同。

wulathink
翻译于 2014/06/22 19:50
2

Vagrant 是一个可创建轻量级、高复用性和便于移植的开发环境的工具。

在非专业人士眼里,这意味着Vagrant抛弃开发环境中所有让人头痛的设置代之为了一个单一的配置文件,你可以选择你的服务器所需要的特性予以保留。你将不会再被XAMMP,手动配置虚拟环境,或者使用FTP远程编辑所卡住。

Vagrant 是一个强有力的工具,它的功能和价值超出这篇文章所覆盖的范围以及我的理解所能到达之处。这篇文章将介绍Vagrant中一些相当酷的事情,比如:

  • 在你的机器中使用PHP5.4版本的LAMP。

  • 如何在你的虚拟机中便捷访问数据库。

  • 如何自动更新你的hostfile,使用URL引用虚拟服务器(developing on http://localhost:8080 versus http://myprojectname.local)。

  • 一些必要的Vagrant命令。

  • 最好和最有用的Vagrant插件。

  • 链接到更多资源和预建的Vagrant书库。

白文
翻译于 2014/06/26 09:09
2

什么是Vagrant和为何我要甚为关注?

简单的原因:

在本地开发爽。用Vagrant快,简单,并可帮助你同时管理多个开发环境。

更长的原因:

想象一下,你正在和据说15人的团队开发一个应用程序。这个程序真是狂棒!它使用Laravel的PHP框架,Redis和Memcached,ImageMagick和GD的PHP模块,curl,MySQL和PostgreSQL, 甚至MongoDB。 另外,Laravel明确依赖PHP版本5.3.7或更高版本,以及mcrypt的PHP扩展。 

理想情况下,你会希望团队所有的15人在开发这个应用程序时,都是相同的开发环境。 但是不是所有的开发团队,都有系统管理的专家或者培养一个系统管理。获得相同设置的开发环境可能是一个非常艰巨的任务。 最重要的是,有些人使用的是Mac,而其他人则使用Linux或Windows。在它之前,开发人员会纠结在无尽的配置中,用电脑扔墙而筋疲力尽。

AndyLam
翻译于 2014/06/25 21:03
1

Vagrant将会替你管理好环境设置的种种,让你将精力用在业务代码的开发.

再来看一个场景,项目开发了一大半了发现需要安装Beanstalkd以便处理队列问题. 通常情况下,大家会停下来重新配置环境并期望 Bean stalkd能正常运行. 有了Vagrant, 只需要将更新文件推送到配置文件上即可, 所有人只需要刷新 Vagrant就行了.太棒了!接下来大家就能使用队列功能了. 这跟操作系统更没什么关系,不管是 Windows, Linux, 或是Mac,因为大家的操作环境都是一样的.

petert
翻译于 2014/06/22 20:26
2

服务提供者和服务消费者

我提到了Vargrant会帮你打点环境配置的一切问题,这不能以偏概全. Vagrant工作需要服务提供者和消费者的配合来管理环境配置. 提供者, 像是 VirtualBox, VMWare, Amazon AWS, 和Digital Ocean, 就是你的虚拟环境的宿主.假设这些环境是 VirtualBox 或VMWare, 又或者是,  Amazon亦或Digital Ocean都能方便的部署环境到云端.

   

petert
翻译于 2014/06/22 20:29
2

供应者 Provisioners 就是一些帮助你实现环境具体配置的工具软件. 这在管理繁琐的服务器配置方面发挥巨大作用. 有关服务器的配置基本都能被管理起来. 比如说 PHP, PHP Modules, Apache, Git, Vim, databases, logins, Xdebug, 等等. Vagrant最常使用的消费者是 PuppetChef. 使用消费者管理环境配置的优势就是,在以后的环境配置时都可以使用先前的配置模板,不论是部署,发布和生产过程中都可以方面的使用起来.

petert
翻译于 2014/06/22 20:33
2

好了! 开始使用LAMP 

下面将分步介绍在Mac上使用Vagrant 。我发现在在使用不同的OS, Vagrant 版本, Chef 版本, 以及virtual box 版本时会出现一些报错.这方面我也不是专家,也没办法解答所有的报错问题. 也许看起来每个问题都会等导致使用的失败,但奇怪的是所有组件合起来后却能正确的运行. 另外, Vagrant support 确实提供了坚强的后盾,开发团队 (beast developer?) 也在高频率的发布补丁版本.我建议在使用Vagrant时不要轻易升级软件,尤其是之前已经很顺畅的运行在你们系统上的 . 开发环境就像是你的孩子一样,不管有多么不尽人意都得接受!

petert
翻译于 2014/06/22 20:40
2

安装插件

Note: 写这篇文章时 Vagrant版本是1.4, VirtualBox版本 4.3.4, Ruby版本 1.9  Mac OS X Mavericks 10.9.

Vagrant安装后,系统会弹出控制台窗口来验证. 可以直接键入下面命令:

vagrant -v

 Vagrant安装程序会自动添加相关路径到 PATH. 安装成功后,你会看到下面类似的图片.

    Vagrant Version Command Line

之前说到过 Chef 消费者. 这里我们就是用Chef来替代 Puppet. 有个工具 Berkshelf用来管理 Chef’s 的组件(PHP, PHP Modules, Apache, Git, Vim, databases, logins, Xdebug, 等等.).本例中也是如此. Vagrant 或是Chef 并不一定要安装 Berkshelf, 但最好安装一下,以便后面Vagrant需要使用. 在 Mac上安装使用下面命令:

gem install berkshelf
petert
翻译于 2014/06/22 20:45
2

安装Vagrant 插件

需要安装的插件如下 Vagrant Berkshelf, Vagrant Hostmanager, 和Vagrant Omnibus.

 Vagrant Berkshelf 插件可以实现和 Berkshelf cookbook manager 的通信.

Vagrant Hostmanager插件可以自动更新绑定IP的配置文件. 我个人很喜欢这个插件,它使得开发过程更清晰 ,URL像是 “http://myproject.local” 比直接使用IP“172.22.22.22″ 好得多.

 Vagrant Omnibus插件检查Chef 安装版本是否匹配. 本例中没用到这个插件,但在排查Chef相关问题时,这个插件非常有用.我相信有天这个功能会被直接添加到Vagrant核心模块里.

安装Vagrant插件十分简单,在控制台直接输入命令即可:

vagrant plugin install vagrant-berkshelf
vagrant plugin install vagrant-hostmanager
vagrant plugin install vagrant-omnibus
petert
翻译于 2014/06/22 20:49
3

Clone a Vagrant LAMP Stack

你完全可以构建自己的LAMP环境,但基于本教程的间接性,我们使用一套现成的环境. 我已经 做了一些修改,可以配合我的 Vagrant, Mavericks, 和VirtualBox来使用.

定位到工作目录键入下面命令:

git clone https://github.com/scotch-io/Vagrant-LAMP-Stack.git myfirstvagrantproject

进入刚才的目录,启动 vagrant:

cd myfirstvagrantproject
vagrant up

这时候Vagrant会基于 “Vagrantfile”文件构建虚拟开发环境. 如果你还需要一些额外的配置,这个时候可以进行配置. 我一般会做如下操作:

vagrant plugin install vagrant-berkshelf
vagrant plugin install vagrant-hostmanager
vagrant plugin install vagrant-omnibus# IP Address for the host only network, change it to anything you like
# but please keep it within the IPv4 private network range
ip_address = "172.22.22.22"

# The project name is base for directories
# Will also be the hostname for your project (e.g.: http://projectname.local)
project_name = "projectname"

Vagrant安装完成以后,从浏览器访问 http://projectname.local 或是172.22.22.22 会连接到你的工作环境(下面图片上的url是之前老版本的,请注意):

    Vagrant LAMP Stack

这就完事了!现在 Vagrant已经起来了. 进入公共目录下,就可以开始码字了. 任何公共文件夹上的更改都会同步到你的虚拟环境里.

    Vagrant LAMP stack public folder in sublime.

也可以打开 VirtualBox查看刚刚创建的虚拟环境和vagrant. 下面截图是我写本文时候的:

    Vagrant and VirtualBox

petert
翻译于 2014/06/22 20:58
2
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(14)

不避风云
不避风云
是有点老
g
gaoweili
请问我用securecrt+centos+vagrant 第一次安装好了 配置了正常 后来我shutdown了机器 之前没保存 现在vagrant up 后 在securecrt上连接127.0.0.1后是connection closed
quanpower
quanpower
恩,用vagrant+docker更爽!
tsl0922
tsl0922

引用来自“neo-chen”的评论

Vagrant 与 docker 有什么不同?

引用来自“Feng_Yu”的评论

实现方式不同,docker使用LXC技术,实现的容器虚拟化。而Vagrant则直接调用的虚拟机,相当于对不同的虚拟机进行了上层的封装,底层操作的是虚拟机。虚拟机的隔离性会更好一些,但是开销也更大。
最新版本的 vagrant 已经有 docker 的 provider 了,可以直接使用 vagrant 操作 docker 了!
netkiller-
netkiller-

引用来自“neo-chen”的评论

技术大爆炸,学不完。累死了。

引用来自“首祚”的评论

虽然在爆炸,但还是有规律可循的。学海无涯苦作舟了。
学海无涯终有岸,直挂云帆济沧海:)
小美玲
小美玲
有点意思,不过我这边全是windows共享至linux.
然后直接开发.
首祚
首祚

引用来自“neo-chen”的评论

技术大爆炸,学不完。累死了。
虽然在爆炸,但还是有规律可循的。学海无涯苦作舟了。
netkiller-
netkiller-
技术大爆炸,学不完。累死了。
Feng_Yu
Feng_Yu

引用来自“neo-chen”的评论

Vagrant 与 docker 有什么不同?
实现方式不同,docker使用LXC技术,实现的容器虚拟化。而Vagrant则直接调用的虚拟机,相当于对不同的虚拟机进行了上层的封装,底层操作的是虚拟机。虚拟机的隔离性会更好一些,但是开销也更大。
帖子列表
帖子列表
要不是拿php做例子我还真不会看
返回顶部
顶部