快速搭建Vagrant环境配置以及报错常见问题解决

1.Vagrant的配置步骤

Vagrant.jpg

1.首先下载 Vagrant 安装
2.再下载 VirtualBox 安装 (根据Windows版本不同会有坑在里面,详情请见最下面的报错解决)
(Win7防止不入坑建议下载vagrant1.9.6 VirtualBox-4.3.12)

安装
//安装完后查看一下是否 vagrant安装成功 cmd 下
C:\Users\Administrator>vagrant -v
vagrant-v.png
//然后我们需要添加box文件,刚开始是没有的可以用命令查看一下
C:\Users\Administrator>vagrant box list           //查看box命令
C:\Users\Administrator>vagrant box add (box起个名) E:/box/ubuntu.box  (注意这个是/不是\)
C:\Users\Administrator>vagrant box remove (box名称)   //删除box命令
查看并添加box.png

如果没有vagrant package打过包,可以执行下面的命令远程下载安装。
VagrantBox下载地址 Vagrant box 国内镜像对应上面语法去添加自己的box
或者Vagrant box 官网镜像
如果打不开国内镜像:打开cmd 清理 DNS :ipconfig/flushdns

【远程添加CentOS-7.0的box地址】
vagrant box add CentOS-7 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
初始化
/*
    随便找个盘,然后创建你的 Vagrant 镜像文件夹
    鼠标对着Vagrant文件夹 按住shift + 右键 ‘在此处打开命令窗口’
*/
E:\Vagrant>vagrant init     //然后在找个空文件夹里生成一个文件Vagrantfile
1.把Vagrantfile里的config.vm.box = "laravel"    //对应刚才添加的box名称
2.把config.vm.network "private_network", ip: "192.168.33.10"//这行代码打开注释这是虚拟机IP
Vagrantfile文件配置.png
启动Vagrant
vagrant up         启动虚拟机
vagrant halt       关闭虚拟机
vagrant reload     重启虚拟机
vagrant package    打包运行中的Box虚拟环境成一个可重复使用的box
vagrant suspend    挂起虚拟机
vagrant resume     唤醒虚拟机
vagrant status     查看虚拟机运行状态
vagrant destroy    销毁当前虚拟机
Xshell直接连接服务器

【主机地址】127.0.0.1【端口】2222
【默认用户名】vagrant【默认密码】vagrant

Vagrantfile配置文件 · 有哪些功能?
  • 打开1GB运存
config.vm.provider "virtualbox" do |vb|
  #   # Display the VirtualBox GUI when booting the machine
  #   vagrant up启动时,是否自动打开virtual box的窗口,缺省为false
  #   vb.gui = true
  #
  #   # Customize the amount of memory on the VM:
      # 指定vm内存,单位为MB
      vb.memory = "1024"
      # 设置CPU个数
      vb.cpus = "2"
end
  • 打开外网访问
// private_network 就是把保护改成public
config.vm.network "public_network", ip: "192.168.33.10"
  • 开放端口(端口转发)
# guest 外网连接端口   host 映射自己的端口
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 3306, host: 3306
config.vm.network "forwarded_port", guest: 22, host: 2222
  • 映射项目目录路径
# 主机目录 , VM目录
config.vm.synced_folder "../Laravel55", "/home/wwwroot/defalut"
  • 定义分布式系统

建立多台虚拟机,并使它们保持通信。假设其中一台是应用服务器,另一台是DB服务器,第三台是缓存服务器。这个结构在Vagrant中非常简单,我们只需要通过config.vm.define定义不同的角色,设置如下

Vagrant.configure("2") do |config|

  # 定义应用服务器
  config.vm.define :web do |web|
    web.vm.provider "virtualbox" do |v|
          v.customize ["modifyvm", :id, "--name", "web", "--memory", "512"]
    end
    web.vm.box = "centos7"
    web.vm.hostname = "web"
    web.vm.network :private_network, ip: "11.11.1.1"
  end

  # 定义DB服务器
  config.vm.define :db do |db|
    db.vm.provider "virtualbox" do |v|
          v.customize ["modifyvm", :id, "--name", "db", "--memory", "512"]
    end
    db.vm.box = "centos7"
    db.vm.hostname = "db"
    db.vm.network :private_network, ip: "11.11.1.2"
  end

  # 定义缓存服务器
  config.vm.define :redis do |redis|
    redis.vm.provider "virtualbox" do |v|
          v.customize ["modifyvm", :id, "--name", "redis", "--memory", "512"]
    end
    redis.vm.box = "centos7"
    redis.vm.hostname = "redis"
    reids.vm.network :private_network, ip: "11.11.1.2"
  end
end

2.Vagrant的报错解决(入坑巨坑TAT)

1.粗心马虎【坑】
【恶心系数】:★
Vagrantfile文件中box名称的 config.vm.box = "ewmzc"    //对应上你的box名称
下载远程文件时发生错误.png
2.指桑骂槐【坑】错误代码E_FAIL(0x80004005)
【恶心系数】:★★★★★
报的错是驴唇不对马嘴的,
直接使用VirtualBox开启一个vm也会失败,基本上可以确定是VirtualBox版本的问题
遇到过安装了VirtualBox-5.0.22-108108-Win.exe的版本在win7下用不了,卸载重装低版本的VirtualBox
VirtualBox-4.3.12-93733-Win.exe
下载地址:http://download.virtualbox.org/virtualbox/4.3.12/VirtualBox-4.3.12-93733-Win.exe
错误代码E_FAIL(0x80004005).png
3.不明觉厉【坑】VirtualBox注册Com对象失败
【恶心系数】:★★★★
启动VirtualBox可能会报这个错误
解决方法: 注册VBoxC.dll
控制台cmd切换到VirtualBox目录
E:\VirtualBox>VBoxSVC /ReRegServer
E:\VirtualBox>regsrv32 VBoxC.dll
后弹出注册成功对话框,然后去启动VirtualBox就解决了
VirtualBox对象失败.png
后弹出注册成功对话框.png
4.自食其果【坑】VirtualBox兼容性问题
【恶心系数】:★★★

报错:Bringing machine 'default' up with 'virtualbox' provider...There was an error while executing VBoxManage, a CLI used by Vagrantfor controlling VirtualBox. The command and stderr is shown below.Command: ["list", "hostonlyifs"]Stderr: VBoxManage.exe: error: Failed to create the VirtualBox object!VBoxManage.exe: error: Code E_NOINTERFACE (0x80004002) - No such interface supported (extended info not available)VBoxManage.exe: error: Most likely, the VirtualBox COM server is not running orfailed to start.

VirtualBox兼容性问题,在VirtualBox安装目录中找到VBoxManage.exe,
右击选择属性,设置Windows Server 2008兼容模式运行。
再执行vagrant up,正常运行,问题解决。
VBoxManage.exe兼容性Win7.png
5.疑难杂症【坑】Nginx文件同步导致css缓存无法修改样式

(虽然不是Vagrant问题,也放这里提醒自己吧)

【恶心系数】:★★
开始以为是浏览器的缓存,但是更换浏览器,强刷,清缓存都无效果。
然后以为又是编辑器问题换成 notepad++ 和 PhpStorm依旧不行。
排除了浏览器 和 编辑器的问题,那就是环境问题了查阅了一下nginx得出:
原来是nginx文件同步的问题,nginx.conf文件的sendfile on;改为 off
nginx文件同步问题.png
还有一种可能nginx解析问题:
注释的是用来nginx解析php,如果是vue就需要用下面的html
    location / {
        #try_files $uri $uri/ /index.php?$query_string;
        try_files $uri $uri/ /index.html =404;
    }
6.微软的锅【坑】Vagrant启动冲突
【恶心系数】:★

控制面板->程序功能-> 启用或关闭Windows功能 -> 将Hyper-V的勾选去掉 ,重启电脑
Hyper-V是微软自带的虚拟机,不管是Vagrant或者docker这俩分别需要这个东西会报错。

7.固件支持【坑】固件中的虚拟化支持被禁用
【恶心系数】:★★

入这个坑解决了我两个下午的时间 使用Vagrant配置本地开发环境
这是别人写的,这也是最后的那一根救命草。这是由于在BOIS中没有开启cpu虚拟化支持,重启F2或F10等进入BIOS设置Virtualization为Enable(我的Thinkpad是Security=>Virtualizatio设置为Enable)
由于我的BIOS是中文所以我再电脑重启启动中F2进入BIOS后直接选择虚拟化-开启

Vagrant超时.png
If the box appears to be booting properly, you may want to increase
the timeout ("config.vm.boot_timeout") value.   // 超时
将Vagrantfile配置文件中vb.gui = true的注释去掉 // 这个测试了没有用,就是进入BOIS开启虚拟化就好了
报错会提示:VT-x/AMD-V硬件加速在您的系统中不可用。您的64-位虚拟机将无法检测到 64-位处理器,从而无法启动。
VT关闭中.png
Hyper-V.png
8.端口冲突【坑】无法访问 Vagrant (不管是ip访问还是域名访问)
【恶心系数】:★★★★★

有时候需要 Vagrant 多个项目就需要开几个端口去指定访问项目,然后就 Vagrantfile 多添加了下面这几行代码,坑爹的是里面有端口冲突,但是也能 vagrant up 不会报任何错误。

然后就会发现不管是用ip访问vagrant 还是 本地域名访问vagrant 都会解析不出来。

config.vm.network "forwarded_port", guest: 3306, host: 3306
config.vm.network "forwarded_port", guest: 8000, host: 8000
config.vm.network "forwarded_port", guest: 6379, host: 6379
无法访问虚拟机.png
9.网段冲突【坑】同一网段,你的虚拟机ip最后几位数被别人使用后也会导致打不开
【恶心系数】:★★★★★

同上8号问题,网站打不开,vagrant up不报错正常启动,但是如果你是 public_network外网访问的话,这种情况就会存在网段冲突

【查看网络ip地址】ifconfig
【重启网络】sudo service network restart

如果解决了问题,记得点赞关注,谢谢。

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

推荐阅读更多精彩内容