1

Vagrant是一款用于创建与配置轻量级,跨平台开发环境的工具

需求情况

哪些情况下可能会需要使用Vagrant来搭建开发环境:

  • 项目本身需要在linux/Mac上跑(比如Ruby项目),而开发者使用的是windows (当然这种情况也可以不通过vagrant,自己搭建虚拟机)

  • 项目开发者使用的系统不一,但希望统一开发环境

  • 搭建项目环境是一个较为麻烦的过程,新手可能需要花费较多时间,但是需要所有开发者快速投入开发工作

使用场景

  • 自己初始化一个box, 从零开始搭建环境

  • 团队其他人制作好了项目环境的box, 让你在项目中初始化

box是什么

boxvagrant中的一个概念,指的是一个环境。box中包含了操作系统和项目运行所需要的其他环境,比如一个Ruby and Rails项目封装好的box,可能是Ubuntu系统+git+Ruby/Bundle+Rails+Nodejs+MySQL)。官方提供了一些box供选择,可以在vagrant官网导航的Boxes进入。

vagrant的常用命令

在vagrant官网导航进入Docs,可以找到命令的说明。这里列出一些我认为较常用的。

vagrant init {|box}  # box如:ubuntu/trusty64,不添加的话则会用vagrant提供的基本box
vagrant box add {box} # 也可以vagrant init后再添加想要的box
vagrant up --provider virtualbox # 启动vagrant,设置虚拟机,不加--provider的话,会默认用virtualbox
vagrant ssh # ssh连接到虚拟机,windows需要借助第三方SSH工具如XShell
vagrant reload # 重启vagrant
vagrant halt # 关闭vagrant
vagrant provision # 在vagrant已启动的情况下,修改了Vagrantfile,加载新的设置
vagrant up --provision 
vagrant reload --provision
vagrant destroy # 删除虚拟机

Vagrantfile

当运行vagrant init命令后,会生成一个无后缀名的Vagrantfile文件,这个是vagrant的配置文件,启动vagrant的时候,会按这个文件的设置来启动,可以设置network, timeout, shared_fold等,还可以在这个文件里设置好项目运行环境的安装,配置的方式有SHELL, Chef Solo, Chef Aero, Docker等,你可以用你熟悉的方式来设置,详细可以查看官网文档之provisioning

.vagrant文件夹

这个文件夹在vagrant up后生成,放的是根据Vagrantfile的配置生成的相关环境文件,在第一次启动的时候可能需要稍微比较长的时间,因为是第一次生成这个文件,当再次启动的时候,需要的时候会明显降低。如果修改了Vagrantfile的配置,在启动的时候可以使用--provision来使其加载新的配置。

具体操作

准备工作:安装VirtualBoxVagrant

VirtualBox下载
vagrant官网

确定box

box的获取大概有几种方式,其一,团队其他成员分发的,其二,vagrant官网提供的官方版本,如ubuntu/trusty64(ubuntu14.04), laravel/homestead 或其他开发者上传的,如leopard/rwtrusty64(rails,ubuntu14.04),其三,自己制作好打包,当然也是可以依赖于官网提供的基础版本,再安装项目需要的环境,然后打包box

初始化box启动项目

确定好box后,在项目下初始化然后启动:

vagrant init {box}
vagrant up
vagrant ssh # windows需要借助第三方工具如```XShell```

ssh连接后启动项目,在宿主机浏览器访问。
若是需要自己安装环境,有2种方式,其一,在ssh连接后手动进行安装。第二种方式,可以配置Vagrantfile后重新启动,具体的配置方式,前面有提到过,vagrant提供了SHELL, Chef solo等方式,详细可查看官网文档

bug list

TODO: 记一下自己遇到的问题及找到的解决方法

我的小结

使用vagrant开发的步骤:
①初始化box
②启动虚拟机(vagrant up)
③连接进入虚拟机系统(vagrant ssh
④启动项目
⑤最后在宿主机浏览器里访问虚拟机里的项目(其实是虚拟机系统把项目访问权限开放给了宿主机).
可以看到,vagrant在这其中的角色其实是提供了一种方式,使得开发者可以使用已经搭建好的项目环境,从而快速启动项目进行开发,而这种方式,就是通过分发box,借助vagrant在虚拟机中启动项目环境,并且把访问权限开放给宿主机,从而开发者可以在自己主机上通过浏览器访问项目,不必再花费时间在搭建项目环境上。
使用vagrant搭建项目环境的具体操作,其实理解了vagrant在做什么,再来搭建环境就明朗很多了,根据自己的项目类型(PHP/Ruby/Python/Java),找到对应的教程/文章,通读后进行实操即可.其实过程都是差不多的,除了项目需要的启动环境不一样(比如Ruby项目需要bundle, PHP项目需要Composer)。

Tips

这里补充几点需要留意的:

  • 注意先安装VirtualBox,再安装Vagrant

  • VirtualBox安装好后,像一般的软件,可以添加快捷图标到桌面;而vagrant不是,可以在命令行键入vagrant -v检测是否已安装

  • box:可以在 https://atlas.hashicorp.com/boxes/search 找需要的box

  • vagrant的所有配置信息其实都在Vagrantfile文件里,这是一个没有后缀名的文件,是vagrant的配置文件;当在项目下vagrant init时,就会生成此文件,文件中已包含基本的配置信息,且每一项配置都有详细的注释说明,建议通读一遍,其他配置可以查看官网文档

相关链接

VirtualBox下载
vagrant官网
官方vagrant box查询
使用Vagrant打造跨平台开发环境

vagrant打造开发环境教程链接

使用Vagrant打造跨平台开发环境
Rails的vagrant搭建教程:
Using Vagrant for Rails Development
使用Vagrant部署Rails项目(上面那篇的翻译版)
使用Vagrant快速搭建rails开发环境


bolelee
1.2k 声望52 粉丝

事不过三,消除重复