环境准备

virtualbox是免费,不必要费劲去找破解,下载就可以用。 使用virtualbox每次安装虚拟机,需要你去下载iso,然后设置虚拟机硬件配置,使用iso创建虚拟器。一系列的手工操作,如果你只创建一两个虚拟机练练手,是足够的。 如果需要创建10个虚拟机,就需要重复10次。这时候,vagrant就派上用场了。

Vagrant基于配置文件,一键创建N台设备。

1)Virtualbox

下载:https://www.virtualbox.org/wiki/Downloads

根据自己的环境选择下载不同的软件版本

下载之后的安装:

2)vagrant(官网

下载:https://www.vagrantup.com/downloads

根据本地环境选择需要的版本进行下载

安装成功之后:

3)vagrant使用

概念:

box:虚拟机镜像

provider:虚拟服务提供者, 例如virtualbox,VMware

box获取:

官网镜像库检索

直接配置所需要的box名称即可,当启动虚拟机时候, 会从官网镜像库下载镜像后创建虚拟机

但是一般box包默认都是走的国外的地址, 速度真的是感人,于是我们使用国内镜像

国内镜像:mirrors.ustc.edu.cn/

vagrant镜像一般在vagrant目录下的box文件,例如centos的一般路径:https://mirrors.ustc.edu.cn/centos-cloud/centos/7/vagrant/x86_64/images/

a)

box下载之后, 添加到本地的box库

vagrant box add centos7  F:/CentOS-7.box

前面的参数:是应用的名称
后面的参数:是需要使用的具体box(具体路径)

b)初始化项目

vagrant init

在目录下会初始化一个VagrantFile文件

修改配置如下:

# -*- mode: ruby -*-
# vi: set ft=ruby : # All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com. # Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = "centos7" config.vm.define "web1" do |web|
web.vm.hostname = "web1"
web.vm.box = "centos7"
web.vm.network "private_network", ip: "192.168.56.10"
end config.vm.define "web2" do |web|
web.vm.hostname = "web2"
web.vm.box = "centos7"
web.vm.network "private_network", ip: "192.168.56.11"
end
end

该配置文件, 使用centos7配置了两个虚拟机,ip分别是:192.168.56.10,192.168.56.11

c)启动虚拟机

vagrant  up

如果想单独启动一个服务

vagrant up web1
or
vagrant up web2

服务启动之后 初始化了root和vagrant用户, 密码都是vagrant, 默认不允许使用密码进行登录

d)进入虚拟机

vagrant ssh web1

登录之后, 默认是vagrant用户, 使用su root可切换到root用户, 密码是vagrant

当然也可以使用ssh连接工具进行链接登录, 用户名使用vagrant,publicKey的方式进行登录,可查看公钥地址

vagrant ssh-config web1
or
vagrant ssh-config web2 如果要看全部的
vagrant ssh-config

e)文件同步

默认vagrant将当前vagrant工程目录(VagrantFile文件所在目录)映射到/vagrant目录

当时这种映射并不是实时的, 在虚拟机启动的时候  会进行一次同步操作,如果要在虚拟机运行期间进行文件的同步, 需要执行命令:

vagrant rsync

最佳实践

可以使用Provision,为每一个虚拟机配置一套初始化脚本,来加强虚拟机的初始化。

VagrantFile放到开发工程中,提交到git,其他开发小伙伴也可以下载后,一键启动虚拟机环境,就可以和你拥有一样的虚拟机环境。

扩展:

1.更换yum源

cd /etc/yum.repos.d 目录下,CentOS-Base.repo为全局镜像源配置,将其进行更换
mv CentOS-Base.repo CentOS-Base.repo.bak # 查看centos版本
[root@localhost yum.repos.d]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core) # 配置为阿里镜像源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 设置缓存
yum makecache # 更新镜像配置,可以看到阿里镜像源
[root@localhost yum.repos.d]# yum -y update
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.njupt.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com

2.如果想要文件同步需要进行配置

config.vm.define "web1" do |web|
web.vm.hostname = "web1"
web.vm.box = "centos7"
web.vm.network "private_network", ip: "192.168.56.10"
web.vm.synced_folder "web1", "/vagrant_data"
# web.ssh.insert_key = false
# web.ssh.username = "vagrant"
# web.ssh.password = "vagrant"
end config.vm.define "web2" do |web|
web.vm.hostname = "web2"
web.vm.box = "centos7"
web.vm.network "private_network", ip: "192.168.56.11"
web.vm.synced_folder "web2", "/vagrant_data"
# web.ssh.insert_key = false
# web.ssh.username = "vagrant"
# web.ssh.password = "vagrant"
end

synced_folder

常见问题:

1.虚拟机中出现一个命令无法使用  No package xxx available

原因:

软件包默认不在yum仓库中,因此需要配置epel仓库

1.配置阿里云网络源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 或者使用curl
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

配置epel源

yum install -y epel-release

说明:  Centos-7.repo提供了centos7官方发行版提供的软件包, epel源提供了除了官网之外的软件包

2.无法挂载目录Vagrant挂载目录失败mount: unknown filesystem type ‘vboxsf’

可以安装插件:http://download.virtualbox.org/virtualbox/6.1.24/VBoxGuestAdditions_6.1.24.iso

使用命令安装:

vagrant plugin install vagrant-vbguest

如果太慢的话
vagrant plugin install 插件名称 --plugin-clean-sources --plugin-source https://gems.ruby-china.com/ vagrant plugin install vagrant-vbguest --plugin-clean-sources --plugin-source https://gems.ruby-china.com/

如果还是报错, 尝试使用其他版本:

  config.vm.box = “centos/7” to –> config.vm.box = “generic/centos7” and uninstall the plugin using this command “vagrant plugin uninstall vagrant-vbguest” after that run command “vagrant up”

  vagrant plugin uninstall vagrant-vbguest
vagrant plugin install vagrant-vbguest --plugin-version 0.21

或者虚拟系统中需要安装依赖:

uname -r
yum install kernel-devel-x.x.x
yum install kernel-devel-3.10.0 centos yum install kernel-devel-xxx debian apt-get install kernel-headers-xxx

  

本地环境搭建Virtualbox+Vagrant的更多相关文章

  1. Laravel系列之环境搭建 — VirtualBox+Vagrant+Homestead

    一.为啥需要搭建环境 为了解决环境不统一问题,所以要搭建这么个玩意儿 二.步骤  Laravel对环境有所要求(不使用Homestead情况下),具体参考官网 使用Homestead步骤 1. Hom ...

  2. Sonar本地环境搭建

    一个新项目准备上线提测了,为了在提测之前做一下代码走查,同时了解项目目前的质量情况,就在本地搭建了一套sonar环境.搭建的过程中遇到了很多问题,sonar官方已不再维护Eclipse的svn插件,所 ...

  3. Docker下kafka学习三部曲之二:本地环境搭建

    在上一章< Docker下kafka学习,三部曲之一:极速体验kafka>中我们快速体验了kafka的消息分发和订阅功能,但是对环境搭建的印象仅仅是执行了几个命令和脚本,本章我们通过实战来 ...

  4. Laravel本地环境搭建:Homestead开发环境的部署

    Laravel框架在php开发过程是不断进行优化的,当然也包括了本地环境的开发,下面我们就来具体看看laravel框架中的Homestead 开发环境的部署内容. 首先白以下几个概念 VirtualB ...

  5. AngularJS2之本地环境搭建

    前言:本来准备初探AngularJS2,结果成了复习git和再探node git的两个常见问题:一.github上传时出现error: src refspec master does not matc ...

  6. .NET Exceptionless 日志收集框架本地环境搭建

    一.简介 Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,ASP.NET Core,Web Api,Web Forms,WPF,Console,MVC 等 ...

  7. Flink从入门到放弃(入门篇2)-本地环境搭建&构建第一个Flink应用

    戳更多文章: 1-Flink入门 2-本地环境搭建&构建第一个Flink应用 3-DataSet API 4-DataSteam API 5-集群部署 6-分布式缓存 7-重启策略 8-Fli ...

  8. 以太坊remix-ide本地环境搭建

    remix-ide简介 ​ remix-ide是一款以太坊官方solisity语言的在线IDE,可用于智能合约的编写.测试与部署,不过某些时候可能是在离线环境下工作或者受限于网速原因,使用在线remi ...

  9. jekyll本地环境搭建(Windows)

    序:最近一直在搞Github建站,所以一直没机会写文章,那边的环境虽然搞好了,但是网站的界面却是个问题,不想用别人的,总想自己设计个,却感觉没经验吧,就一直耽搁了.所以也就没心情在那边写文章,很久没写 ...

  10. CC2B本地环境搭建步骤及部署问题解决

    由于最近的项目是之前没接触过的netbeans+glassfish,记录一下最近在工作中搭建本地环境的步骤及遇到的一些问题解决方法: 1.配置java jdk 此过程中遇到一个问题就是在配置系统环境变 ...

随机推荐

  1. Redis、Nginx、SQLite、Elasticsearch等开源软件成功的原因及他们对IT技术人员的启示

    引言 这些年在自研产品,对于如何做好产品进行了一些思考.随着开源软件的蓬勃发展,许多开源项目已经成为IT行业的核心组成部分.像Redis.Nginx.SQLite.Elasticsearch这些知名的 ...

  2. Angular – Language Service

    介绍 Angular Language Service 是一个针对 Angular 项目的程序静态分析 (Program Static Analysis) 工具,它的作用是提升开发体验. 很多 IDE ...

  3. ASP.NET Core – Work with X509

    前言 这篇主要是说如何用 ASP.NET Core 读写系统里的证书 Store 和创建一个证书, 还有使用证书做加密, 解密, 签名. 主要参考: C#数字证书编程总结 (读写证书 Store) E ...

  4. java 线程、进程及相关知识点 《笔记一》

    一.线程.进程 线程,就是是进程的一个单位,程序最小执行单位. 进程,就是一个执行中的应用程序:由此可见,进程是由很多线程组成的: 线程生命周期,就是管杀也管埋的过程,生老病死: 线程的5个状态: 新 ...

  5. 使用Navicat Premium 将数据库导入、导出方法

    数据库导出 1.双击要导出的数据库,右键选转储SQL文件-,选择要保存的文件夹. 2.点击开始后,开始导出. 数据库导入 1.新建数据库,数据库的名字必须和导入的数据库文件一致. 2.在新建的数据库右 ...

  6. WiFi基础(五):802.11帧结构与WiFi控制帧、管理帧、数据帧

    liwen01 2024.09.22 前言 前面介绍了 WiFi 的工作原理和 WiFi 的接入过程,这里将通过分析 WiFi 具体数据包结构,让你对 WiFi 工作原理和接入过程有一个更进一步的了解 ...

  7. vue前端开发仿钉图系列(2)左侧图层列表的开发详解

    项目开发前还是特别说明一下组件库的重要性,谢谢饿了么团队分享的element组件库,大大节省了页面的开发成本.左侧图层列表核心功能有1.根据图层类型展示点线面2.开关控制右侧地图上点线面的展示和隐藏3 ...

  8. iOS开发中UITextView使用小结

    最近项目开发中用到了多行文本框限制文字输入个数限制,之前的话在textViewDidChange方法中截取超出字数就可以.测试人员发现在拼音转汉字的过程中,YYTextView不会二次确认textVi ...

  9. C# Webapi Filter 过滤器 - 生命周期钩子函数 - Exception Filter 基础

    什么是Filter ? 1. 切面编程机制,在 ASP.NET Core 特定的位置执行我们自定义的代码: 2. ASP.NET Core 中的Filter五种类型,Authorization ,fi ...

  10. JDBC连接数据库(mysql)基本实现-七步

    // 包名 package com.zhulx; import java.sql.DriverAction; import java.sql.DriverManager; import java.sq ...