Use Vagrant and Virtualbox to build your environment

Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它使用Oracle的开源VirtualBox虚拟化系统,使用Chef创建自动化虚拟环境。Vagrant可以节省开发者搭建环境的时间,并解决了开发环境不一致问题,有了Vagrant,可以导出box文件分发给团队其它开发者使用。

一、下载及安装所需应用程序

二、安装连接虚拟机环境

Now, everything is ready,open your git bash.
1.新建开发目录(如D:/dev/)

1
2
$ cd /d
$ mkdir dev

2.进入开发目录(D:/dev/),并添加box

1
2
$ cd dev
$ vagrant box add myCentos7 centos7.box

执行完添加box命令后,box中的镜像文件被放到了/Users/astaxie/.vagrant.d/boxes/
在Window系统中是放到了C:\Users\当前用户名.vagrant.d\boxes\目录下
3.初始化

1
$ vagrant init myCentos7

此时开发目录会多一个Vagrantfile文件(虚拟机配置文件)
4.启动虚拟机

1
$ vagrant up

5.通过ssh登录本地环境所在虚拟机

1
$ vagrant ssh

如果是用Xshell登录(默认: IP:172.0.0.1 user:vagrant pwd:vagrant port:2222)
如果使用密钥登录使用当前开发目录(D:\dev.vagrant\machines\default\virtualbox\private_key)
此时Linux(centos)环境已经安装完毕

三、配置Vagrantfile

1.box设置

1
config.vm.box = "myCentos7"

该名称是初使化vagrant init后面跟的名称
2.hostname设置

1
config.vm.hostname = "centos7"

如果我安装了两台虚拟机一台为centos7,另一台为ubuntu16.04,启动时可以使用vagrant up centos7指定某一台启动
3.虚拟机网络设置
1).端口映射(端口转发)

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

虚拟机中的端口映射到宿主机对应的端口使用
guest: 80 表示虚拟机中的80端口,host: 8080 表示映射到宿主机的8080端口
表示请求宿主机的8080端口转发请求到虚拟机中的80端口
2).设置IP地址

1
config.vm.network "private_network", ip: "192.168.1.28"

4.设置同步(共享)目录
新建项目(代码)目录(D:/dev/project/)

1
$ mkdir project

1
config.vm.synced_folder "./project", "/usr/share/nginx/html"

(/usr/share/nginx/html为虚拟机目录,设置之后两个目录会互相同步)
5.配置完成后需要重新启动虚拟机使配置文件生效

1
$ vagrant reload

如需增加其它配置,请查询Vagrantfile配置文件详解

四、打包分发环境

当配置好开发环境后,退出并关闭虚拟机,运行如下命令对环境进行打包

1
$ vagrant package

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

五、vagrant 常用操作命令

命令 作用
vagrant box add 添加box的操作
vagrant init 初始化box的操作,会生成vagrant的配置文件Vagrantfile
vagrant up 启动本地环境
vagrant ssh 通过 ssh 登录本地环境所在虚拟机
vagrant halt 关闭本地环境
vagrant suspend 暂停本地环境
vagrant resume 恢复本地环境
vagrant reload 修改了 Vagrantfile 后,使之生效(相当于先 halt,再 up)
vagrant destroy 彻底移除本地环境
vagrant box list 显示当前已经添加的box列表
vagrant box remove 删除相应的box
vagrant package 打包命令,可以把当前的运行的虚拟机环境进行打包
vagrant plugin 用于安装卸载插件
vagrant status 获取当前虚拟机的状态
vagrant global-status 显示当前用户Vagrant的所有环境状态