一、简介
Vagrant
介绍:vagrant是一款虚拟机管理工具
作用:
1、统一开发环境。一次配置打包,统一分发给团队成员,统一团队开发环境,解决诸如“编码问题”,“缺少模块”,“配置文件不同”带来的问题;
2、避免重复搭建开发环境。新员工加入,不用浪费时间搭建开发环境,快速加入开发,减少时间成本的浪费;
3、多个相互隔离开发环境。可以在不用box里跑不同的语言,或者编译安装同一语言不同版本,搭建多个相互隔离的开发环境,卸载清除时也很快捷轻松。
安装配置:
查看官网 https://www.vagrantup.com
virtualBox
介绍:开源免费的虚拟机工具,号称最好的虚拟机工具
安装配置:
查看官网 https://www.virtualbox.org/
二、使用vagrant创建本地虚拟开发环境指南
参考官网文档 https://www.vagrantup.com/intro/getting-started/index.html
1、创建vagrant环境
$ mkdir ~/VagrantHome # 创建虚拟环境目录
$ cd ~/VagrantHome # 切换目录
$ vagrant init hashicorp/precise64 # 加载官方box(hashicorp/precise64),需要等待下载,初始化生成Vagrantfile文件
$ vagrant up # 启动环境
$ vagrant ssh # 登录到虚拟系统
其他box下载: https://app.vagrantup.com/boxes/search
注意:盒子文件都比较大,有时候下载比较慢,为了安装时方便,可以先把盒子文件(*.box)下载下来,然后使用下面的命令:
$ vagrant box add centos-box /path/to/centos.box
$ vagrant init centos-box
$ vagrant up
$ ...
2、配置指南
Vagrantfile 配置文件中注释的很清楚,默认配置文件主要是网络配置,
需要其他配置可查看官方文档,由于vagrant更新较多,网上搜索的不够准确,尽量参考官方文档
https://www.vagrantup.com/docs/virtualbox/configuration.html
配置示例:
网络配置
virtualbox虚拟机安装后默认使用nat网络,可通过端口映射与主机通信,这里就是将http的80和mysql3306分别映射到主机,便于访问
# accessing "localhost:8080" will access port 80 on the guest machine.
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 3306, host: 33060
virtualbox有多个网卡,对应不同的网络设置,这里配置通过host-only网络便于主机访问
直接通过192.168.10.10也可以访问虚拟机
# Create a private network, which allows host-only access to the machine
# using a specific IP.
config.vm.network "private_network", ip: "192.168.10.10"
网桥的方式,给虚拟机分配一个内部网络,可以让局域网内其他主机访问
# Bridged networks make the machine appear as another physical device on
# your network.
config.vm.network "public_network"
其他配置:
配置加载的盒子名称,这里是默认的官方的盒子
# Every Vagrant development environment requires a box. You can search for
# boxes at https://atlas.hashicorp.com/search.
config.vm.box = "hashicorp/precise64"
给虚拟机改个名字,默认的虚拟机名字很长后面带一串符号不太好看,我们可以给他命名
config.vm.provider "virtualbox" do |v|
v.name = "Ubuntu12.0.4"
end
3、常用命令
$ vagrant init # 初始化
$ vagrant up # 启动虚拟机
$ vagrant halt # 关闭虚拟机
$ vagrant reload # 重启虚拟机
$ vagrant ssh # SSH 至虚拟机
$ vagrant status # 查看虚拟机运行状态
$ vagrant destroy # 销毁当前虚拟机
exit 退出 ssh
vagrant reload 重启