准备工作
1.下载安装VirtualBox:https://www.virtualbox.org/
2.下载安装 Vagrant :http://www.vagrantup.com/
3.下载需要使用的 box :
官方提供的范例:http://files.vagrantup.com/precise32.box
还可以在 http://www.vagrantbox.es/ 这里下载更多不同系统甚至是已经配置好环境直接可以用的box,虽然可以直接在Vagrant直接使用网址,由Vagrant自动下载安装,但是考虑到网络情况,还是建议自行先下载好。
设置环境
第一步:新建目录
mkdir -p vagrant/xunayue
cd vagrant/xuanyue
第二步:添加盒子
vagrant box add 别名 要添加的盒子的路径
如:vagrant box add xdl ~/cxs/ubuntu14.04.box
第三步:初始化文件
vagrant init 盒子别名
第四步:配置网络
公有网络
除了主机以外,你还想让网络里面的其它设备也可以使用虚拟机上提供的服务,比如你可能想用手机或者平板访问搭建在虚拟机上的 Web 服务,这就需要去配置一下虚拟机的公有网络(public_network),这样虚拟机会被分配一个内部的 IP 地址,使用这个 IP 地址,就可以访问到虚拟机上的服务了。
先确定你的电脑在一个局域网环境里,并且网络里有路由器,这个路由器会在你的虚拟机启动的时候,分配给虚拟机一个内网的 IP 地址。
打开 Vagrantfile,搜索:
config.vm.network "public_network"
上面这上行代码就是用来配置 公有网络 用的,去掉代码最前面的 # 号,可以让这条配置生效。保存文件,然后启动或重启虚拟机,你可能会看到类似下面这样的提示:
==> default: Available bridged network interfaces:1) en1: Wi-Fi (AirPort)2) en0: 以太网3) en2: Thunderbolt 14) en3: Thunderbolt 25) p2p06) awdl07) bridge0==> default: When choosing an interface, it is usually the one that is==> default: being used to connect to the internet. default: Which interface should the network bridge to?
上面列出的选项是我的电脑上可用的一些上网方式,你看到的可能跟这个不一样,你要选择的就是你自己电脑的连接互联网的方式,我的电脑是用 Wi-Fi 上网的,所以,这里要选择 1 ,然后回车。
==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat default: Adapter 2: bridged...
启动以后,SSH 到虚拟机上,然后查看一下虚拟机的网络配置:
ifconfig
你应该会看到在 eth1 里面,inet addr 后面的值就是这台虚拟机的外部的 IP 地址,我这里是 192.168.1.136 ,因为我的路由器配置的就是用 192.169.1.x 这个网段的 IP ,所以,它再给虚拟机分配 IP 地址的时候,也会使用这个网段上的私有的 IP 地址。
eth1 Link encap:Ethernet HWaddr 08:00:27:1F:52:74 inet addr:192.168.1.136 Bcast:192.168.1.255 ...
现在,启动之前安装在虚拟机上的 httpd 服务:
sudo service httpd start
然后打开你自己电脑上的浏览器,输入虚拟机的外部 IP 地址,我这里是 192.168.1.136,所以就是:http://192.168.1.136 。不出意外,你可以看到之前用测试端口转发的时候,打开的那个 Apache 的测试页面。再试一下,在同一网络里面,用其它的设备,打开虚拟机的这个 IP 地址,比如你的手机或者平板,应该同样可以看到这个 Apache 的测试页面。
配置虚拟主机的公有网络
私有网络
你打算创建一个虚拟机与主机之间的私有网络,可以配置一下 private_network ,你可以为虚拟机手工指定一个 IP 地址,这个 IP 地址只有主机能访问到。打开 Vagrantfile,先注释掉之前配置公有网络用的代码:
config.vm.network "public_network"
然后搜索下面的代码,找到以后去掉代码最前面的 # 号,:
config.vm.network "private_network", ip: "192.168.33.10"
这里的 private_network 就是配置私有网络用的,注意后面手工指定了这台虚拟机在这个私有网络上的 IP 地址,默认是 192.168.33.10 ,你可以修改成任何的为私有网络保留的地址段里的 IP 地址,不过不能使用跟电脑内网一样的地址段,比如我的路由器上设置的内网的 IP 地址段是 192.168.1.x ,这样为这个虚拟机配置私有网络地址的时候,就不能用 192.168.1.x 这个地址段上的 IP 地址。
保存 Vagrantfile ,然后启动或重启虚拟机,可以让这个配置生效。启动时,会有这样的显示:
==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat default: Adapter 2: hostonly
启动虚拟机以后,SSH 到虚拟机上,然后查看一下系统的网络配置:
ifconfig
返回的内容里可以找到:
eth1 Link encap:Ethernet HWaddr 08:00:27:1F:52:74 inet addr:192.168.33.10
在主机(你的电脑) 上可以使用 192.168.33.10 访问到这台虚拟机,测试一下,先启动之前安装的 httpd 服务:
sudo service httpd start
然后在自己的电脑上打开浏览器,输入地址:
http://192.168.33.10
第五步:启动
vagrant up
Vagrant管理
1、启动
vagrangt up
2、暂停
vagrant suspend
3、恢复启动
vagrant resume
4、关机
vagrant halt
5、删除虚拟机
vagrant destroy
6、查看可用的盒子列表
vagrant box list
7、删除指定的盒子
vagrant box remove 你的box名称
补充:
mac上进入虚拟机:vagrant ssh
windows上用xshell连接或者用gitbash客户端执行 vagrant ssh