1、安装 VirtualBox
虚拟机还是得依靠 VirtualBox 来搭建,免费小巧。
官网:https://www.virtualbox.org/ 下载安装最新版。
2、下载安装 Vagrant
https://www.vagrantup.com/downloads.html
3、获取官方封装好的基础镜像
搜索vagrantbox或者直接如下地址下载
http://www.vagrantbox.es/
这里选择CentOS 7.0 x64 (Minimal, VirtualBox Guest Additions 4.3.28, Puppet 3.8.1 - see here for more infos)
4、添加镜像到 Vagrant
下载的镜像存放路径是 D:\MyWorks\vagrantbox\org \centos-7.0-x86_64.box,
创建一个开发目录 D:\MyWorks\vagrantbox\centos7.0
在终端里输入:vagrant box add centos7.0 D:\MyWorks\vagrantbox\org\centos-7.0-x86_64.box
centos7.0是我们给这个box 命的名字, D:\MyWorks\vagrantbox\org\centos-7.0-x86_64.box 是 box 所在路径;
5、初始化开发环境
用 centos7.0 镜像初始化当前目录的环境。命令行下进入当前工作目录,执行下面命令进行初始化
vagrant init centos7.0
6、修改设置
Vagrant 初始化成功后,会在初始化的目录里生成一个 Vagrantfile 的配置文件,可以修改配置文件进行个性化的定制。
Vagrant 默认是使用端口映射方式将虚拟机的端口映射本地从而实现类似 http://localhost:80 这种访问方式,这种方式比较麻烦,新开和修改端口的时候都得编辑。相比较而言,host-only 模式显得方便多了。打开 Vagrantfile,将下面这行的注释去掉(移除 #)并保存:
config.vm.network :private_network, ip: "192.168.33.10"
重启虚拟机,这样我们就能用 192.168.33.10 访问这台机器了,你可以把 IP 改成其他地址,只要不产生冲突就行。
7、启动和登录
在命令行工作目录下执行下面命令进行启动虚拟机
vagrant up
你会看到终端显示了启动过程,启动完成后,我们就可以用 SSH 登录虚拟机了,剩下的步骤就是在虚拟机里配置你要运行的各种环境和参数了。
SSH 登录也可以使用客户端连接工具连接
直接ssh访问
8、打包分发
当你配置好开发环境后,退出并关闭虚拟机。在终端里对开发环境进行打包:
vagrant package
打包完成后会在当前目录生成一个 package.box 的文件,将这个文件传给其他用户,其他用户只要添加这个 box 并用其初始化自己的开发目录就能得到一个一模一样的开发环境了。
也可以指定名称:vagrant package --output centos7.0.box
D:\MyWorks\vagrantbox\centos7.0>vagrant package --output centos7.0.box
==> default: Exporting VM...
==> default: Compressing package to: D:/MyWorks/vagrantbox/centos7.0/centos7.0.box
9、常用命令
vagrant init # 初始化
vagrant up # 启动虚拟机
vagrant halt # 关闭虚拟机
vagrant reload # 重启虚拟机
vagrant ssh # SSH 至虚拟机
vagrant status # 查看虚拟机运行状态
vagrant destroy # 销毁当前虚拟机
vagrant box add <name> <url>
vagrant box list
vagrant box remove <name>
vagrant box repackage <name>
vagrant init [box-name] [box-url]
vagrant up [vm-name] [--[no-]provision] [-h]
vagrant destroy [vm-name]
vagrant suspend [vm-name]
vagrant reload [vm-name]
vagrant resume [vm-name]
vagrant halt [vm-name]
vagrant status [vm-name]
vagrant package [vm-name] [--base name] [--output name.box][--include one,two,three] [--vagrantfile file]
vagrant provision [vm-name]
vagrant ssh [vm-name] [-c command] [-- extra ssh args]
vagrant ssh-config [vm-name] [--host name]