故事
想必大家的童年都看过《七龙珠》吧,里面的布尔玛家族发明的万能胶囊,可谓是高科技产品啊,一个小小的胶囊,什么摩托、汽车、床、房子只要打一响指就变出来了。好处当然是很多啦,这么高科技的东西要是在现实中要是存在的话就牛B了,理想是好的,现实是在未来几十年或者根本不可能开发出这样的胶囊,但是在程序员的世界里,不可能往往是可能的。这个“万能胶囊”就是Vagrant。

基本介绍
Vagrant 是一个用来构建和管理虚拟机环境的工具。Vagrant 有着易于使用的工作流,并且专注于自动化,降低了开发者搭建环境的时间,提高了生产力。解决了“在我的机器上可以工作”的问题。 Vagrant 是为了方便的实现虚拟化环境而设计的,使用 Ruby 开发,基于 VirtualBox 等虚拟机管理软件的接口,提供了一个可配置、轻量级的便携式虚拟开发环境。使用 Vagrant 可以很方便的就建立起来一个虚拟环境,而且可以模拟多台虚拟机,这样我们平时还可以在开发机模拟分布式系统。
选择的原因
作为一个php后端开发者,最麻烦的最基础的那就是安装部署开发环境了,一个服务器的环境设计LNMP、redis、mongo等等需要的一些服务支撑,而每一次入职的新员工都要重新花费半天甚至一天时间来安装开发环境。而有了Vagrant,只需要直接将已经打包好的 package(里面包括开发工具,代码库,配置好的服务器等)拿过来就可以工作了,这对于提升工作效率非常有帮助。
准备工作
VirtualBox的安装
下载地址:https://www.virtualbox.org/wiki/Downloads
Vagrant的安装
下载地址:https://www.vagrantup.com/downloads.html
PS:安装完后就可以在终端输入 vagrant 命令了。
版本兼容性
VirtualBox:自版本4.3.12后启动虚拟机会存在各种问题,因此建议安装4.3.12版本。
Vagrant:从1.0.x可以直接升级到1.x版本,Vagrant向后兼容Vagrant1.0.x,但是1.1+版本不在支持1.0.x版本的插件,因此插件也要做相应升级。
使用Vagrant
box介绍
box 是一个打包好的操作系统(万能胶囊),是一个后缀名为 .box 的文件,其实是一个压缩包,里面包含了 Vagrant 的配置信息和 VirtualBox 的虚拟机镜像文件。vagrant up 启动虚拟机是基于 box 文件的,因此在启动虚拟机前必须得把 box 文件准备好。或者也可以在启动的时候指定远程 box 地址,在这里我把 box 文件下载下来,然后启动时指定该文件。
教程
1、在你的操作系统上新建一个目录,在当前目录下执行目录: 要是你本地有打包好的box(例:test.box),要是没有你可以执行远程的box文件地址(例:vagrant开源社区提供了很多box的下载地址)
vagrant box add test.box
查看box是否创建成功
vagrant box list
2、初始化上面的box
vagrant init test.box
初始化后就会产生一个vagrantfile的文件,这个可以说是“万能胶囊”说明书,里面是vagrant虚拟机的配置内容。 3、启动vagrant
vagrant up
4、连接vagrant
vagrant ssh
vagrantfile“万能胶囊说明书”介绍
config.vm.box = "text.box",连接的box文件
config.vm.network "forwarded_port", guest: 80, host: 80,端口映射,前置是虚拟机端口,后者是本地开发端口
config.vm.network "private_network", ip: "192.168.33.10",更改访问ip地址
config.vm.synced_folder "E:/www", "/home/vagrant/Code/WWW",目录共享,前置本地,后者虚拟机
Vagrant 常用命令
vagrant box add 添加box
vagrant init 初始化 box
vagrant up 启动虚拟机
vagrant ssh 登录虚拟机
vagrant box list 列出 Vagrant 当前 box 列表
vagrant box remove 删除相应的 box
vagrant destroy 停止当前正在运行的虚拟机并销毁所有创建的资源
vagrant halt 关机
vagrant package 把当前的运行的虚拟机环境进行打包为 box 文件
vagrant plugin 安装卸载插件
vagrant reload 重新启动虚拟机,重新载入配置文件
vagrant resume 恢复被挂起的状态
vagrant status 获取当前虚拟机的状态
vagrant suspend 挂起当前的虚拟机
vagrant global-status 查看当前 vagrant 管理的所有 vm 信息

欢迎扫码关注




