大家开发同一个东西,以前每个人都要自己搭建一套开发环境,容易造成兼容性问题,而且测试环境与用户环境的差异甚至导致上线失败,所以最好使用一致的开发环境和测试环境。
Vagrant是搭建一致环境的简单工具。
经验:注意vagrant的安装目录,vgrant的工作目录 这两个目录一定要设置不同目录,特别要重视工作目录,这个目录存放设置文件,并且要与虚拟机共享。
1、安装准备
准备virtualbox、vagrant,去官网下载。
去http://www.vagrantbox.es/网站下载centos box文件,也可根据需要下载其他系统包。
2、安装virtualbox
3、安装vagrant
4、环境设置
安装完成并且重启好系统之后就可以开始设置环境了。
首先在本地创建好工作目录(存储设置文件、与虚拟机共享),并在命令行下切换到对应目录。
vagrant box add base *\*\CentOS-***.box
base 表示指定默认的box,也可以为box指定名称,比如 centos6 ,使用base时,之后可以直接使用 vagrant init 进行初始化,如果自行指定名称,则初始化的时候需要指定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
5、使用vagrant
配置好后,就可以启动虚拟机并连接到 Vagrant 了。
首先,执行vagrant up,等待片刻,vagrant 就启动好了。
如果你vagrant up后又修改了 Vagrantfile,要使之生效,需要执行vagrant reload
基本使用命令
- vagrant box list 查看当前虚拟机
- vagrant box add 添加一个虚拟机
- vagrant box remove 移除虚拟机
- vagrant init 初始化一个虚拟机
- vagrant up 开启虚拟机
- vagrant ssh 登录虚拟机
- vagrant suspend 挂起虚拟机
- vagrant reload 重启虚拟机
- vagrant halt 关闭虚拟机
- vagrant status查看虚拟机状态
- vagrant destory 删除虚拟机
6、打包分发
按照上面的流程,我们基本的环境已经搭建好了,就是将虚拟机打包出去,方便以后或者别人直接使用。
使用vagrant package [--output xxx.box] 不添加后面参数,默认打包为package.box的镜像文件,如果后面参数添加了,则输出xxx.box的镜像文件。
当别人拿到我们打包后的镜像文件,直接使用vagrant init即可使用,此时同样的会生成一个Vagrantfile配置文件,我们需要对虚拟机进行操作,直接在配置文件修改即可。