Vagrant
是一款用于创建与配置轻量级,跨平台开发环境的工具
需求情况
哪些情况下可能会需要使用Vagrant
来搭建开发环境:
项目本身需要在
linux/Mac
上跑(比如Ruby项目),而开发者使用的是windows
(当然这种情况也可以不通过vagrant,自己搭建虚拟机)项目开发者使用的系统不一,但希望统一开发环境
搭建项目环境是一个较为麻烦的过程,新手可能需要花费较多时间,但是需要所有开发者快速投入开发工作
使用场景
自己初始化一个box, 从零开始搭建环境
团队其他人制作好了项目环境的box, 让你在项目中初始化
box是什么
box
是vagrant
中的一个概念,指的是一个环境。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
来使其加载新的配置。
具体操作
准备工作:安装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开发环境
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。