Vagrant 是一个可创建轻便、可复用的虚拟开发环境的跨平台工具,通过打包分可使所有开发成员使用统一的开发环境。
下面是我自己记录配置 Vagrant 的过程。
1、安装 VirtualBox
略。(Vagrant 也支持 VMware,不过需要收费)
2、安装 Vagrant
略。安装完成后在 CMD 输入 vagrant --version 可输出版本。
* 更改 Vagrant Box 镜像存储位置
当镜像文件较多或C盘空间较少时,就需要更改它的存放位置。默认存放在 C:\User\%USERNAME%\.vagrant.d
将 .vagrant.d 移到新位置,打开 CMD,输入
setx VAGRANT_HOME "X:/your/path/to/.vagrant.d"
将 VAGRANT_HOME 添加到用户环境变量。如果要对所有用户生效,那么可以添加到系统环境变量,在末尾加 /M 参数。
重新打开 CMD,输入 echo %VAGRANT_HOME%,将输出设置好的路径。
另外 VirtualBox 虚拟机文件默认也保存在系统盘,可以在 VirtualBox 设置中更改路径。
这里要区分两个概念:Box(镜像) 和 Machine(虚拟机)。他们的关系如同类与对象之间的关系,前者是模板,后者是实例。
3、下载 Box 镜像
我们需要一个基础 Box 镜像来构建 Vagrant 开发环境。
在这里查找你需要的系统镜像:https://atlas.hashicorp.com/boxes/search
我选择的是 ubuntu/trusty64,在 CMD 输入 vagrant box add ubuntu/trusty64 即可下载。
由于某些网络环境因素,下载速度可能很慢,可以选择搭*或到这里(https://github.com/chef/bento)用下载工具下载。
下载完成后,导入下载好的 Box 镜像到 Vagrant,等待一段时间。
vagrant box add ubuntu14. K:\YourPath\ubuntu-14.04.box
这里的 ubuntu14.04 是 Box 名称,配置 Vagrantfile 要用到。
输入 vagrant box list 可列出已导入的 Box 镜像。
4、初始化开发环境
新建一个虚拟开发环境的工作目录,CMD 切换到该路径(当没有切换路径时,部分 Vagrant CLI 命令需要附加虚拟机 ID 或 Name)。输入
vagrant init
将在文件夹下创建一个 Vagrantfile,是一个配置文件,用文本编辑器打开。
Vagrantfile 是用 Ruby 写的,不过我们没必要专门去了解它的语法知识,要修改的只是一些简单的变量赋值语句。
简单说明一下其中一些参数。
config.vm.box: Box 名称,必须是一个已导入的 Box 或公共 Box 镜像的简称。
config.vm.hostname: 虚拟机的主机名,注意命名规范。
config.vm.synced_folder: 主机与虚拟机的同步目录,可以共享文件。
config.vm.synced_folder "./data", "/vagrant_data"
第一个参数是主机的目录路径,这里是相对路径。第二个是虚拟机的目录路径,必须是绝对路径。
config.vm.network: 网络相关设置,主要有三种方式:端口映射(FORWARDED PORTS),私有网络(PRIVATE NETWORKS),公共网络(PUBLIC NETWORKS)。详细信息参见 Vagrant 文档。
config.vm.network "forwarded_port", guest: , host:
表示将虚拟机的80端口映射到宿主机的8080端口。
配置完成后,用 vagrant up 启动虚拟机。
注意输出信息中有一行:
default: (guest) => (host) (adapter )
表示将虚拟机的 22 端口映射到宿主机的 2222 端口,这个是 SSH 连接的端口号。这个端口号可以在 Vagrantfile 中配置。
最后找个ssh客户端连接到虚拟机:
ssh vagrant@127.0.0.1 -p
vagrant halt 关闭虚拟机。
5、日常使用
打开 CMD,任意目录下输入 vagrant global-status 即可列出所有虚拟机。
>vagrant global-status
id name provider state directory
-------------------------------------------------------------------------
3d51pc7 default virtualbox poweroff K:/YourPath/ubuntu14.04
启动输入 vagrant up 虚拟机id
id 不必完整,但要求标识有唯一性,类似 git 的 commit id 的作用。由于我只有一个虚拟机,所以 id 部分输入 3d 即可。
>vagrant up 3d
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
(后面省略)
日常使用时,慎用 apt-get update、yum update 等更新系统,可能会导致无法挂载共享文件夹,需重装 VirtualBox Guest Additions 。