美文网首页
快速搭建Vagrant环境配置以及报错常见问题解决

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

作者: Super三脚猫 | 来源:发表于2017-11-20 17:17 被阅读0次

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

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

相关文章

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/egovvxtx.html