1.Vagrant的配置步骤
1.首先下载 Vagrant 安装
2.再下载 VirtualBox 安装 (根据Windows版本不同会有坑在里面,详情请见最下面的报错解决)
(Win7防止不入坑建议下载vagrant1.9.6 VirtualBox-4.3.12)
安装
//安装完后查看一下是否 vagrant安装成功 cmd 下
C:\Users\Administrator>vagrant -v
//然后我们需要添加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命令
如果没有
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
启动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名称
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
3.不明觉厉【坑】VirtualBox注册Com对象失败
【恶心系数】:★★★★
启动VirtualBox可能会报这个错误
解决方法: 注册VBoxC.dll
控制台cmd切换到VirtualBox目录
E:\VirtualBox>VBoxSVC /ReRegServer
E:\VirtualBox>regsrv32 VBoxC.dll
后弹出注册成功对话框,然后去启动VirtualBox就解决了
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,正常运行,问题解决。
5.疑难杂症【坑】Nginx文件同步导致css缓存无法修改样式
(虽然不是Vagrant问题,也放这里提醒自己吧)
【恶心系数】:★★
开始以为是浏览器的缓存,但是更换浏览器,强刷,清缓存都无效果。
然后以为又是编辑器问题换成 notepad++ 和 PhpStorm依旧不行。
排除了浏览器 和 编辑器的问题,那就是环境问题了查阅了一下nginx得出:
原来是nginx文件同步的问题,nginx.conf文件的sendfile on;改为 off
还有一种可能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
后直接选择虚拟化-开启
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-位处理器,从而无法启动。
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
9.网段冲突【坑】同一网段,你的虚拟机ip
最后几位数被别人使用后也会导致打不开
【恶心系数】:★★★★★
同上
8
号问题,网站打不开,vagrant up
不报错正常启动,但是如果你是public_network
外网访问的话,这种情况就会存在网段冲突
【查看网络ip地址】ifconfig
【重启网络】sudo service network restart
如果解决了问题,记得点赞关注,谢谢。