1.Vagrant
Vagrant是一个虚拟机管理和配置工具,所以虚拟机系统还得靠专门的虚拟化软件,Vagrant它底层支持VirtualBox、VMware甚至AWS作为虚拟机系统。通常情况下,如果你的Vagrant环境需要封装给其他小伙伴们用,最好使用VirtualBox这个支持OSX/Linux/Win三大宿主系统的免费软件作为后端。而且,Vagrant默认已经内置了VirtualBox Provider用来跟 VirtualBox交互,所以安装完Vagrant再去VirtualBox官网下载并安装VirtualBox就可以正式开始使用了。
总之,Vagrant是通常用于构建及配置虚拟开发环境的软件。
Vagrant并不提供虚拟化技术,本质上是一个虚拟机外挂,通过虚拟机的管理接口来管理虚拟机。说白了vagrant就是一个普普通通的装了一个Linux的VirtualBox虚拟机,配以vagrant团队为之开发的一系列套件,辅助完成诸如安装初始化、文件同步、ssh、部署环境升级、功能插件安装等等一些列问题的开发环境部署套件。
vagrant虚拟开发环境搭建好之后,在Virtualbox中可以看到被vagant创建出来的新虚拟机。
2.Vagrant虚拟工作环境的搭建
以下是在Windows10系统下亲测通过:
(1)安装virtualbox,官网下载,很好安装
下载地址:https://www.virtualbox.org/wiki/Downloads
(2)安装Vagrant,官网下载,很好安装,最新版
下载地址:http://downloads.vagrantup.com/
(3)下载box(box是一个后缀为 box 的文件,实际上它就是一个包含了虚拟机配置、虚拟机硬盘镜像和Vagrant 配置的压缩包),这个灰常重要哦
备注:可以到http://www.vagrantbox.es/上下载box,但是国内会灰常慢。
Vagrant是非常好的本地开发环境搭建工具。通常使用官方下载都会比较慢,而国内box下载地址较少,所以我特别下载了几个传到百度网盘。
Vagrant box的百度网盘下载地址
Vagrant box Ubuntu 16.04 百度网盘下载地址
https://pan.baidu.com/s/1kVlAz59
Vagrant box Centos 7 百度网盘下载地址
http://pan.baidu.com/s/1gfNCud1
Vagrant box Debian 8 百度网盘下载地址
http://pan.baidu.com/s/1mhAuONu
下载后的使用方法
添加vagrant box到box list,此处可以从vagrant官网下载.box文件,但是都非常慢,建议从国内镜像下载相应box,复制到自己的项目目录里使用。
d:
mkdir box
cd box
vagrant box add ubuntu ./ubuntu-server-16.04-amd64-vagrant.box
初始化一个虚拟机使用刚才添加的vagrant box
vagrant init ubuntu
启动vagrant box虚拟机
vagrant up
启动的虚拟机可以在virtualbox中看到。(此处网上说各种版本坑,高了也看不到,低了也看不到,本文用的都是当时最新的两个版本,没遇到坑)
其中如果出错: 控制面板 -》 程序和功能 -》启用和关闭windows-> hyper-V 则需要开启
"Windows Features" control panel and try again.
7)登录虚拟机
vagrant ssh
备注:windows系统上要安装OpenSSH(http://sourceforge.net/projects/opensshwindows/)之后且为openssh配置了PATH环境变量之后才可以的。不然因为找不到ssh命令,vagrant ssh会执行失败。
至此完成了跨平台的系统环境环境搭建。
Vagrant 环境创建并启动后,可以通过 vagrant ssh 进入这个虚拟机环境。通常不需要输入帐号密码就可以登录,登录之后的用户名是 vagrant,密码也是 vagrant。这个帐号执行 sudo 不需要输入密码,因为封装 Boxes 时已经做了相应处理。
高级应用
1)端口转发
说明:点击 设置->网络->高级-端口转发 就可以看到各个转发的端口配置情况。
官网文档位置:https://www.vagrantup.com/docs/networking/forwarded_ports.html
##############配置代码#################################
Vagrant.configure("2") do |config|
config.vm.network "forwarded_port", guest: 80, host: 8888
end
########################################################
配置说明:
将虚拟机的80端口转发到宿主机的8888
config.vm.network "forwarded_port", guest: 80, host: 8888
2)共享目录
说明:同步宿主主机文件到虚拟机:
官网文档位置:https://www.vagrantup.com/docs/synced-folders/basic_usage.html
Windows配置用SMB配置共享目录
官网文档位置:https://www.vagrantup.com/docs/synced-folders/smb.html
Linux系列系统用NFS配置共享目录
官网文档位置:https://www.vagrantup.com/docs/synced-folders/nfs.html
将写代码目录映射到虚拟机服务器目录【Windows机配置示范】:
##############配置代码#################################
Vagrant.configure("2") do |config|
config.vm.synced_folder "D://workspace/", "/data/wwwroot/web", type: "smb"
end
########################################################
3)ip配置
###########重要提示!################
# 公有ip不能共享目录 #
#####################################
1)私有IP配置
##############配置代码#################################
Vagrant.configure("2") do |config|
config.vm.network "private_network", ip: "192.168.50.4"
end
########################################################
好处说明:配置私有ip好处。直接访问私有ip
2)共有ip配置
查看宿主机ip: 192.168.1.37
##############配置代码#################################
Vagrant.configure("2") do |config|
config.vm.network "public_network", ip: "192.168.1.17"
end
########################################################
和宿主主机一样通过DHCP分配
##############配置代码#################################
Vagrant.configure("2") do |config|
config.vm.network "public_network",use_dhcp_assigned_default_route: true
end
########################################################
常规配置优化
1)虚拟机名称配置
config.vm.provider "virtualbox" do |vb|
vb.cpus = 2 #虚拟机核数
vb.memory = "1024" #虚拟机内存
vb.name = "centos7_lnmp" #虚拟机名称
end
2)主机名称配置
Vagrant.configure("2") do |config|
config.vm.hostname = "dh2y"
end
3)nginx和apache同步延时配置
官网文档位置:https://www.vagrantup.com/docs/synced-folders/virtualbox.html
In Nginx: sendfile off;
In Apache: EnableSendfile Off #默认已经关闭
修改virutalbox和vagrant的默认目录
virtualbox和vagrant默认都是放到系统C盘中,如果安装的box比较多,很容易打满C盘。这个目标路径的配置是可以修改的:
(1)更改VirtualBox虚拟机映像文件的位置
打开 VirtualBox 程序,点击管理/全局设定菜单项(Ctrl+G), 将常规栏里的默认虚拟电脑位置(M)改为其他磁盘下的路径
将原路径 C:\Users\user_name\.VirtualBox\VirtualBox VMs 下的文件移动到新路径下。
重新启动VirtualBox程序,在虚拟机列表里,以前建立的虚拟机虽然都还在,但已经不可用了,将他们全部删除。
双击打开新路径各个文件夹里的vbox文件,将建立的虚拟机重新导入。
(2)更改vagrant配置文件的位置
将 C:\Users\user_name\.vagrant.d 移动到新的位置
新建环境变量VAGRANT_HOME,并指向新路径
参考:
https://imququ.com/post/vagrantup.html
https://github.com/astaxie/go-best-practice/blob/master/ebook/zh/01.1.md