Windows7系统中使用Vagrant构建Linux虚拟化开发环境

wxtyixiao 2014-07-07

一、使用虚拟化开发环境的好处:

1、保证开发环境和生产环境一致

虚拟化开发环境其实就是在本机虚拟一个生产环境,得益于硬件的低廉,开发机已经变得性能非常强劲,4核、32G内存的计算机也不需要太多的费用,跑虚拟机相当顺畅。

使用虚拟化开发环境,开发人员在本机可以使用自己喜欢或者顺手的OS(Windows、Linux、Mac OS等),而程序是运行在虚拟机中,迁移到生产环境可以避免环境不兼容导致的莫名错误。

虚拟化开发环境对于团队中开发环境OS、测试和生产环境不同的情况特别适用。

2、简化了调试环境的部署

稍微复杂的系统,部署调试环境就会是个麻烦的事情,nginx、mysql、redis、mongodb等估计都要安装,可能还有一大堆第三方的开发库......,通过虚拟化技术可以简化这些工作。

虚拟环境可以由专人制作,然后分发给开发人员、测试人员,他们可以很方便的在本机调试。

如果生产环境还是多平台(或多个OS版本)的,可以制作多个虚拟机,简单切换一下就可以调试了。

二、开始制作虚拟化开发环境

1、安装VirtualBox

VirtualBox是Oracle开源的虚拟化系统,到官方网站:https://www.virtualbox.org/wiki/Downloads/ 下载virtualbox最新的版本并安装,详细过程略过。

2、使用vagrant

vagrant是一个用Ruby开发的工具,封装了VirtualBox的一些命令,它简化了virtualbox虚拟机的操作,增加了自动化部署软件puppet/chef的支持

通过vagrant可以很方便的创建和部署、分发虚拟化开发环境。

3、安装vagrant

方法一、下载安装包,官方网站:http://downloads.vagrantup.com/

注意,尽量下载最新的程序,因为VirtualBox经常升级,升级后有些接口会变化,老的vagrant可能无法使用

方法二、vagrant是ruby开发的,如果已经安装了ruby,可以用gem安装:

gem install vagrant

4、建立环境

1)建立开发环境目录(可以跳过,使用已有的目录)

在资源管理器中建一个文件夹
本文是E:\workspace\devel_env

2)打开命令行窗口,vagrant的操作都是命令行的

进入E:\workspace\devel_env目录中
按住shift键,在空白处按鼠标右键,在弹出菜单中点“打开命令行窗口”

3) 加一个box

box是一个zip包,包含了vagrant的配置信息和VirtualBox的虚拟机镜像文件
官方提供了一个box,http://files.vagrantup.com/lucid32.box

也可以选一个团队在用的系统,http://www.vagrantbox.es/
或者自己做一个也行

我服务器都CentOS,选了CentOS 6.3 x86_64 minimal

添加box的命令:

vagrant box add base 远端的box url或者本地的box文件名
vagrant box add 是添加命令
base 是box的名称,也可以任意的标题,base是默认名称

例子:

vagrant box add base http://files.vagrantup.com/lucid32.box
vagrant box add base https://dl.dropbox.com/u/7225008/Vagrant/CentOS-6.3-x86_64-minimal.box
vagrant box add base e:/vbox/CentOS-6.3-x86_64-minimal.box
vagrant box add "CentOS 6.3 x86_64 minimal" e:/vbox/CentOS-6.3-x86_64-minimal.box

安装过程的信息

[vagrant] Downloading with Vagrant::Downloaders::File...
[vagrant] Copying box to temporary location...
[vagrant] Extracting box...
[vagrant] Verifying box...
[vagrant] Cleaning up downloaded box...

文件被放到C:\Users\当前用户名.vagrant.d\boxes\目录下

通过vagrant box add 这样的方式安装远程的box,可能很慢,可以先用下载工具把box下到本地

4)初始化

vagrant init

如果你添加的box名称不是base,要在初始化的时候指定,例如

vagrant init "CentOS 6.3 x86_64 minimal"

初始化过程的信息

A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.  
  5)修改Vagrantfile,加一些项目需要的路径和端口映射
  config.vm.forward_port 虚拟机内端口, 本机端口
  config.vm.forward_port 80, 80
  config.vm.forward_port 5000, 5000
    config.vm.share_folder "标识", "虚拟机内路径", "本机路径"
  config.vm.share_folder "v-data", "/data", "e:/workspace/data"
  config.vm.share_folder "v-work", "/work", "e:/workspace/work"

我的生产环境有/data、/work两个目录,所以做了映射

相关推荐