使用vagrant+VirtualBox搭建虚拟开发环境

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容