使用 Vagrant 搭建开发环境

做Web开发少不了要在本地搭建好开发环境,虽然说目前各种脚本都有对应的Windows版,甚至是一键安装包,但很多时候和Windows环境的相性并不是那么好,各麻烦的问题是实际部署的环境通常是Linux,常常还要面临着开发和部署环境不一致,上线前还要大量的调试。更要命的是,如果有很多机器需要装的话,那就真是一个灾难了。

Windows下玩Linux少不了虚拟机,但装系统依旧是相当费事。在现在什么都在自动化的今天,Vagrant就是这么一个神器,基于Ruby开发,使用开源 VirtualBox 作为虚拟化支持,可以轻松的跨平台部署。

今天试着把几台机器的环境都换成Vagrant,很爽很顺畅,于是就试着整理了一下使用小结:

如何使用vagrant在虚拟机安装Hadoop集群

Vagrant 中高效的 Puppet 模块管理

使用 Vagrant 和 Fabric 用于集成测试

使用 Vagrant 搭建开发环境

Windows 下配置 Vagrant 环境

目前所选用的是当前的最新版本Vagrant 1.2.7 (对应的Vagrantfile V2版),VirtualBox 使用的是 4.2.16

准备工作:

下载安装 VirtualBox :https://www.virtualbox.org/

下载安装 Vagrant :

下载需要使用的 box :

官方提供的范例:

还可以在 这里下载更多不同系统甚至是已经配置好环境直接可以用的box,虽然可以直接在Vagrant直接使用网址,由Vagrant自动下载安装,但是考虑到网络情况,还是建议自行先下载好。

由于习惯用CentOS,于是我就下了CentOS 6.3 x86_64 minimal,这个Box根据个人情况进行选择即可。

设置环境:

安装完成并且重启好系统之后就可以开始设置环境了。

首先在本地创建好工作目录,并在命令行下切换到对应目录

vagrant box add base CentOS-6.3-x86_64-minimal.box

base 表示指定默认的box,也可以为box指定名称,比如 centos63 ,使用base时,之后可以直接使用 vagrant init 进行初始化,如果自行指定名称,则初始化的时候需要指定box的名称。

CentOS-6.3-x86_64-minimal.box 是box对应的文件名,这里可以是本地保存box的路径,也可以是可以下载box的网址,如果是网址的话,Vagrant会自动启动下载。


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

设置好box之后,在当前工作目录运行

vagrant init

生成对应的Vagrantfile。通过文本编辑器打开Vagrantfile可以进行一些进一步的常用配置:

网络配置:

Vagrant的网络有三种模式

1、较为常用是端口映射,就是将虚拟机中的端口映射到宿主机对应的端口直接使用 ,在Vagrantfile中配置:

config.vm.network :forwarded_port, guest: 80, host: 8080

guest: 80 表示虚拟机中的80端口, host: 8080 表示映射到宿主机的8080端口。

2、如果需要自己自由的访问虚拟机,但是别人不需要访问虚拟机,可以使用private_network,并为虚拟机设置IP ,在Vagrantfile中配置:

config.vm.network :private_network, ip: "192.168.1.104"

192.168.1.104 表示虚拟机的IP,多台虚拟机的话需要互相访问的话,设置在相同网段即可

3、如果需要将虚拟机作为当前局域网中的一台计算机,由局域网进行DHCP,那么在Vagrantfile中配置:

config.vm.network :public_network

目录映射:

既然是开发环境,那么开发工作肯定还是需要在本地完成,而不是都要进到虚拟机中去完成,虚拟机就好好在后台运行服务就好了,不然就本末倒置了,所以这里就需要使用目录映射功能,将本地的目录映射到虚拟机的对应目录。

默认情况下,当前的工作目录,会被映射到虚拟机的 /vagrant 目录,当前目录下的文件可以直接在 /vagrant 下进行访问,当然也可以在通过 ln 创建软连接,如

ln -fs /vagrant/wwwroot /var/www

前面的参数 “wwwroot/” 表示的是本地的路径,这里使用对于工作目录的相对路径,这里也可以使用绝对路径,比如: “d:/www/”

后面的参数 “/var/www” 表示虚拟机中对应映射的目录。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/17793.html