什么是 Vargrant ?
Vagrant 是一个简单易用的部署工具,用英文说应该是 Orchestration Tool 。它能帮助开发人员迅速的构建一个开发环境,帮助测试人员构建测试环境, Vagrant 基于 Ruby 开发,使用开源 VirtualBox 作为虚拟化支持,可以轻松的跨平台部署。
通俗的来说,就是在本地部署一个和Linux 虚拟机上的同步文件夹,这样所有的操作都方便了许多
准备工作
- 下载 VirtualBox 虚拟器 : https://www.virtualbox.org/
- 下载安装 Vagrant : http://www.vagrantup.com/
- 下载使用的 box (这里的 box 指的是系统) : http://www.vagrantbox.es/
- 在本地建立一个工作文件夹
部署环境
1.进入工作文件夹
![](https://dn-phphub.qbox.me/uploads/images/201608/11/4430/qi010UncMt.png)
2.把下载的Box 镜像包放到工作目录下-这里我以 **ubuntu 14.04 **为例
![](https://dn-phphub.qbox.me/uploads/images/201608/11/4430/j14Lh8LDgK.png)
3.打开终端进入工作目录, 或者你可以在当前目录按住 shift+鼠标右键 可快速打开当前目录的终端
![](https://dn-phphub.qbox.me/uploads/images/201608/11/4430/FRVTwWoc4P.png)
4.我们执行 vagrant box list 可查看当前添加进 vagrant 的镜像
5.如果没有添加 box 镜像, 我们执行 vagrant box add 系统名字 box镜像
![](https://dn-phphub.qbox.me/uploads/images/201608/11/4430/3hQEn4BqQV.png)
6.这时候我们执行 vagrant box list 就可以查看我们添加的 box 镜像
![](https://dn-phphub.qbox.me/uploads/images/201608/11/4430/WhLy9V3xik.png)
7.box 镜像添加到 vagrant 里面后我们就可以执行 vagrant init 系统名 初始化, 初始成功后我们可以看见当前工作目录下会生成一个 Vagrantfile 的配置文件
![](https://dn-phphub.qbox.me/uploads/images/201608/11/4430/2UtfqriRoR.png)
8.因为我们虚拟机默认只分配一个访问外网的 IP, 项目使用的 IP 得手动设置打开 Vagrantfile 找到29行(我的配置文件在29行)设置一个私有 IP
![](https://dn-phphub.qbox.me/uploads/images/201608/11/4430/BEgwMVAG4n.png)
9.到这里所有配置工作都完成了, 我们可以 vagrant up 正式启动了, 启动成功后会在当前目录生成一个 .vagrant 的隐藏文件夹
![](https://dn-phphub.qbox.me/uploads/images/201608/11/4430/3rs87g3cVZ.png)
10.在工作目录中, 使用了 vagrant up 命令, 我们虚拟机会自动的帮我们配置一个系统, 然后自动后台启动, 以后都无须管理虚拟机 让虚拟机在后台玩儿去吧
![](https://dn-phphub.qbox.me/uploads/images/201608/11/4430/yNXl032dCw.png)
11.我们可以在当前目录使用 vagrant ssh 直接连接到虚拟机里面, 也可以使用第三方工具进行连接如 Putty, Xshell, IP 为我们刚刚在 Vagrantfile 配置文件中设置的私有 IP
![](https://dn-phphub.qbox.me/uploads/images/201608/11/4430/AA5qv9pGyc.png)
特别注意: 如果是第三方工具连接, 用户名和密码都是 vagrant
12.虚拟机里面的 /vagrant 这个文件夹是和我们本地同步的文件夹
![](https://dn-phphub.qbox.me/uploads/images/201608/11/4430/twIE9fRXrY.png)
13.下面我们就来看看vagrant神奇的地方, 我们在 /vagrant 同步文件夹里面创建一个文件 a, 看看我们本地发生了什么....., 同样我们在本地把这个 a 文件删除, 看看虚拟机里面发生了什么...
![](https://dn-phphub.qbox.me/uploads/images/201608/11/4430/OBmfGKxVN1.png)
14.这样我们以后从服务器拉取下来的项目, 就可以直接在同步文件夹操作, 操作本地文件, 就相当于操作虚拟机, 目前已经有很多大型公司使用 vagrant, 因为这可以提升他们的开发效率
最后附上vagrant一些常用的命令, 希望这能帮助你们, 别忘记点赞哟!
- $ vagrant box add NAME URL #添加一个box
- $ vagrant box list #查看本地已添加的box
- $ vagrant box remove NAME virtualbox #删除本地已添加的box,如若是版本1.0.x,执行$ vagrant box remove NAME
- $ vagrant init NAME #初始化,实质应是创建Vagrantfile文件
- $ vagrant up #启动虚拟机
- $ vagrant halt #关闭虚拟机
- $ vagrant destroy #销毁虚拟机
- $ vagrant reload #重启虚拟机
- $ vagrant package #当前正在运行的VirtualBox虚拟环境打包成一个可重复使用的box
- $ vagrant ssh #进入虚拟环境