#使用Vagrant打造你的虚拟环境

因为要做mongDB的replication+sharding的实验,领导给我推荐Vagrant来模拟虚拟环境做部署实践,稍微了解够大为震惊,因网上文档不是特别容易理解,留下一份以备后用

vagrant的强大在于是一个镜像,配置完以后镜像可以放到任何地方去,真正做到了一劳永逸了。

总结一下自己使用vagrant的一点笔记,以免以后忘记还得再去翻官方文档。

vagrant的官方网站:http://www.vagrantup.com/ 现在又改版了,挺漂亮的。

vagrant的一些镜像:http://www.vagrantbox.es/ 各种linux都有。 然后按照官方说的,执行这三部,然后一个虚拟机就起来了。 注:先要安装VirtualBox

##配置box

1
2
3
$ vagrant box add debian http://ergonlogic.com/files/boxes/debian-current.box  #增加一个box,debian就是box的title 后面跟vagrant上的virtualbox镜像地址
$ vagrant init debian #初始化debian
$ vagrant up   #这个是真正的启动

注意国内网速访问很慢 这里可以先去 http://www.vagrantbox.es/ 下载你需要的镜像 然后把http那行直接换成你本地镜像的路径就ok比较方便和快捷

###连接虚拟主机

你会看到终端显示了启动过程,启动完成后,我们就可以用 SSH 登录虚拟机了,剩下的步骤就是在虚拟机里配置你要运行的各种环境和参数了。

1
$ vagrant ssh  # SSH 登录 ssh的后面可以跟你的title来连接不同的vm主机

###打包分发

当你配置好开发环境后,退出并关闭虚拟机。在终端里对开发环境进行打包:

1
$ vagrant package

打包完成后会在当前目录生成一个 package.box 的文件,将这个文件传给其他用户,其他用户只要添加这个 box 并用其初始化自己的开发目录就能得到一个一模一样的开发环境了。

###常用命令

1
2
3
4
5
6
7
$ vagrant init  # 初始化
$ vagrant up  # 启动虚拟机
$ vagrant halt  # 关闭虚拟机
$ vagrant reload  # 重启虚拟机
$ vagrant ssh  # SSH 至虚拟机
$ vagrant status  # 查看虚拟机运行状态
$ vagrant destroy  # 销毁当前虚拟机

box管理

1
2
3
$vagrant box list
$vagrant box add
$vagrant box remove

更多内容请查阅官方文档 http://docs.vagrantup.com/

###Multi-VM 多虚拟机

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
VAGRANTFILE_API_VERSION = "2"    #定义版本
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|  #使用内部2版本
  config.vm.define :debian1 do |debian1|   #定义第一台虚拟机,||里面就类似一个变量设置参数时使用 
     debian1.vm.box = "debian1"             #设置box名为debian1
     debian1.vm.host_name = "debian1"      #设置hostname为debian1
     debian1.vm.network :private_network, ip: "192.168.1.11" #设置网络为内部网络 ip为192.168.1.11
  end
  config.vm.define :debian2 do |debian2|
     debian2.vm.box = "debian2"
     debian2.vm.host_name = "debian2"
     debian2.vm.network :private_network, ip: "192.168.1.12"
  end
  config.vm.define :debian3 do |debian3|
     debian3.vm.box = "debian3"
     debian3.vm.host_name = "debian3"
     debian3.vm.network :private_network, ip: "192.168.1.13"
  end

end

注意语法格式就好,配置前关闭虚拟机,配置完后打开虚拟机。

注意事项

使用 Apache/Nginx 时会出现诸如图片修改后但页面刷新仍然是旧文件的情况,是由于静态文件缓存造成的。需要对虚拟机里的 Apache/Nginx 配置文件进行修改:

Apache 配置添加:

1
EnableSendfile off

Nginx 配置添加:

1
sendfile off;