热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

vagrantspringcloudjava镜像:制作详解(带下载地址)

狂创客圈经典图书:《NettyZookeeperRedis高并发实战》面试必备面试必备面试必备【博客园总入口】疯狂创客圈经典图书:《SpringClou
  • 狂创客圈 经典图书 : 《Netty Zookeeper Redis 高并发实战》 面试必备 + 面试必备 + 面试必备 【博客园总入口 】

  • 疯狂创客圈 经典图书 : 《SpringCloud、Nginx高并发核心编程》 大厂必备 + 大厂必备 + 大厂必备 【博客园总入口 】

  • 入大厂+涨工资必备: 高并发【 亿级流量IM实战】 实战系列 【 SpringCloud Nginx秒杀】 实战系列 【博客园总入口 】




《SpringCloud Nginx 高并发核心编程》 环境搭建 - 系列
组件链接地址
【必须】 虚拟机Linux 开发环境准备
Linux openresty 安装Linux openresty 安装
【必须】Linux Redis 安装(带视频)Linux Redis 安装(带视频)
【必须】Linux Zookeeper 安装(带视频)Linux Zookeeper 安装, 带视频
Windows Redis 安装(带视频)Windows Redis 安装(带视频)
RabbitMQ 离线安装(带视频)RabbitMQ 离线安装(带视频)
ElasticSearch 安装, 带视频ElasticSearch 安装, 带视频
Nacos 安装(带视频)Nacos 安装(带视频)
【必须】EurekaEureka 入门,带视频
【必须】springcloud Config 入门,带视频springcloud Config 入门,带视频
【必须】SpringCloud 脚手架打包与启动SpringCloud脚手架打包与启动
Linux 自启动 假死自启动 定时自启Linux 自启动 假死启动



什么是vagrant

必先利其器,开发环境 和 开发工具 就是 我们开发人员的剑,所以我们需要一个快并且好用的剑

**Vagrant:**是一个比较流行的虚拟机管理软件,使用Vagrant 可以让我们用命令直接从云上下载虚拟机的镜像,然后进行创建和管理等。

刚开始做开发的时候的都是把开发环境 配置在 自己的电脑上,随着后面我们接触的东西越来越多,慢慢的电脑上都是各种环境了,php,java,python,nodejs等等,非常麻烦,并且经常由于某种原因就把电脑重装了,ORZ,所以环境都要重来。所以打造一个属于自己并且可以移动的环境是非常重要的。

vagrant就是一款构建虚拟开发环境的工具,支持window,linux,mac,总有一款适合你。并且vagrant 可以把配置好的环境打包成一个box,分享给其他人直接使用,非常方便

vagrant 是一个很适合开发者的虚拟环境部署工具,本身集成了主流的虚拟器管理工具,支持 vmvare 和 virtualbox。

vagrant 的精髓在一个 Vagrantfile 里面,和 docker 的 Dockerfile 功能上一样。我们只需要把需要安装部署的步骤写在 Vagrantfile 里面,便可以实现轻松部署。vagrant 还支持把当前系统做成一个.box 后缀命名的镜像,类似 docker 的 image,可轻松实现环境的移植。

所以,使用vagrant可以在运行着多台vm的系统上定义复杂的虚拟框架。可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员。成员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行,非常霸气。是不是很酷?

准备工作:

下载安装 VirtualBox ,下载安装 Vagrant ,下载更多不同系统甚至是已经配置好环境直接可以用的box,虽然可以直接在Vagrant直接使用网址,由Vagrant自动下载安装,但是考虑到网络情况,还是建议自行先下载好。

还可以在 http://www.vagrantbox.es/ 这里下载更多不同系统甚至是已经配置好环境直接可以用的box,虽然可以直接在Vagrant直接使用网址,由Vagrant自动下载安装,但是考虑到网络情况,还是建议自行先下载好。

  • virtualbox 官网地址

    虚拟机还是得依靠 VirtualBox 来搭建,免费小巧。下载地址 https://www.virtualbox.org/

  • vagrant2.2.7 官网地址

    https://www.vagrantup.com/downloads.html

  • 下载需要使用的 box :

此外,还得下载官方封装好的基础镜像:
Ubuntu precise 32 VirtualBox http://files.vagrantup.com/precise32.box
Ubuntu precise 64 VirtualBox http://files.vagrantup.com/precise64.box如果你要其他系统的镜像,可以来这里下载:http://www.vagrantbox.es/网友提供的centos 7.2网盘地址:https://pan.baidu.com/s/15S2OZq37FcL9RWWSTWntIw 提取码:3xb0

  • GitBash
    GitBash是windows下的Unix shell,方便向Vagrant输入指令。(一般的java开发,都会使用git进行代码同步,所以此工具默认是已经安装了的)
    https://git-scm.com/download/win

空间:

15G 的硬盘空间

什么是:springcloud.box镜像


疯狂创客圈网盘,为大家准备了springcloud.box镜像,里边预装了java 、 redis 、zookeeper、kafka、Eureka、springcloud config 等必须的组件。网盘地址请参见【博客园总入口 】

在这里插入图片描述

使用vagrant制作Java开发环境

第一步,新建目录

E:\virtual\work

选择新建立的文件夹作,右键 —> Git Bash Here,在Git Bash打开当前目录

在 Git Bash 中可以看到,当前的linux 格式目录,执行指令如下:

$ pwd
/e/virtual/work


第二步,添加镜像到 Vagrant

vagrant box add centos /e/virtual/vagrant-centos-7.2.box
centos 表示指定名称,如果使用base,之后可以直接使用

$ vagrant box add centos /e/virtual/vagrant-centos-7.2.box
==> box: Box file was not detected as metadata. Adding it directly…
==> box: Adding box ‘centos’ (v0) for provider:
box: Unpacking necessary files from: file:///E:/virtual/vagrant-centos-7.2.box
box:
==> box: Successfully added box ‘centos’ (v0) for ‘virtualbox’!

$

vagrant-centos-7.2.box是box的文件名,这里是本地保存box的路径。也可以是可以下载box的网址,如果是网址的话,Vagrant会自动启动下载。

第三步,初始化虚拟机

设置好box之后,在当前工作目录运行

$ vagrant init centos

centos为初始化的时候需要指定box的名称。执行的结果如下:

$ vagrant init centos
A Vagrantfile has been placed in this directory. You are now
ready to vagrant up your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
vagrantup.com for more information on using Vagrant.

你也可以使用已有的目录,切换到开发目录里,用 centos 镜像初始化当前目录。初始化镜像之后,在当前目录生成一个虚拟机的配置文件 Vagrantfile,通过该配置文件,可以配置端口映射、虚拟机的IP、目录映射等。通过文本编辑器打开Vagrantfile可以进行一些进一步的常用配置,如果配置登录用户名称和密码,虚拟机的ip如下:

config.ssh.username = "root"
config.ssh.password = "vagrant"config.vm.network :private_network, ip: "192.168.68.128"

重启虚拟机,这样我们就能用 192.168.233.128 访问这台机器了,你可以把 IP 改成其他地址,只要不产生冲突就行。

具体的配置,稍后介绍。

第四步,启动虚拟机

使用如下命令:

$ vagrant up # 启动虚拟机

你会看到终端显示了启动过程,启动完成后,我们就可以用 SSH 登录虚拟机了,剩下的步骤就是在虚拟机里配置你要运行的各种环境和参数了。

$ vagrant ssh # SSH 登录
$ cd /vagrant # 切换到开发目录,也就是宿主机上的 E:\virtual\work

Windows 用户注意:Windows 终端并不支持 ssh,所以需要安装第三方 SSH 客户端,比如:Putty、Cygwin 、Git Bash等。

有关初始账户和密码:

账户密码
vagrantvagrant
rootvagrant

可以使用其他的终端工具,通过root访问虚拟机了

打包分发

当你配置好开发环境后,退出并关闭虚拟机。在终端里对开发环境进行打包:

$ vagrant package

打包完成后会在当前目录生成一个 package.box 的文件,将这个文件传给其他用户,其他用户只要添加这个 box 并用其初始化自己的开发目录就能得到一个一模一样的开发环境了。

vagrant package -hUsage: vagrant package [options] [name]

Options:
–base NAME virtualbox程序里面的虚拟机的名称,不是box的名字也不是Vagrantfile里面的虚拟机名称.默认是打包当前目录下面的虚拟机。
–output NAME 要打包成的box名称,不会自动添加.box后缀,要手动加.默认值package.box

​ --include FILE… 打包时包含的文件名,你可以把.box文件理解为一个压缩包
​ --vagrantfile FILE 打包时包含的Vagrantfile文件,原理和上面类似
​ -h, --help Print this help
例子:vagrant package –base virtualbox_vm_name –output newbox_name.box


通过Vagrantfile进行虚拟机配置:

网络配置:

Vagrant的网络有三种模式

1、较为常用是端口映射,就是将虚拟机中的端口映射到宿主机对应的端口直接使用 ,在Vagrantfile中配置:

config.vm.network :forwarded_port, guest: 80, host: 8080

guest: 80 表示虚拟机中的80端口, host: 8080 表示映射到宿主机的8080端口。

2、如果需要自己自由的访问虚拟机,但是别人不需要访问虚拟机,可以使用private_network,并为虚拟机设置IP ,在Vagrantfile中配置:

config.vm.network :private_network, ip: "192.168.1.104"

192.168.1.104 表示虚拟机的IP,多台虚拟机的话需要互相访问的话,设置在相同网段即可

3、如果需要将虚拟机作为当前局域网中的一台计算机,由局域网进行DHCP,那么在Vagrantfile中配置:

config.vm.network :public_network

目录映射:

既然是开发环境,那么开发工作肯定还是需要在本地完成,而不是都要进到虚拟机中去完成,虚拟机就好好在后台运行服务就好了,不然就本末倒置了,所以这里就需要使用目录映射功能,将本地的目录映射到虚拟机的对应目录。

默认情况下,当前的工作目录,会被映射到虚拟机的 /vagrant 目录,当前目录下的文件可以直接在 /vagrant 下进行访问,当然也可以在通过 ln 创建软连接,如

ln -fs /vagrant/wwwroot /var/www

来进行目录映射,当然,从自动化配置的角度,能不进系统就不需要进系统,所以在Vagrant也可以进行目录映射的操作:

config.vm.synced_folder "wwwroot/", "/var/www"

前面的参数 “wwwroot/” 表示的是本地的路径,这里使用对于工作目录的相对路径,这里也可以使用绝对路径,比如: “d:/www/”

后面的参数 “/var/www” 表示虚拟机中对应映射的目录。

当在启动Vagrant后,对于虚拟机有进行过安装环境相关的配置,如果并不希望写在Vagrant的启动shell里面每次都重新安装配置一遍,可以将当前配置好的虚拟机打包成box,

注:如果网络模式中使用 private_network 的话,在打包之前需要清除一下private_network的设置,避免不必要的错误:

sudo rm -f /etc/udev/rule.d/70-persistent-net.rules

制作完成之后直接将box文件拿到其他计算机上配置即可使用。

更多信息可以参考官方文档:http://docs.vagrantup.com/v2/

附:我本机上的vagrantfile文件

Vagrant.configure(2) do |config|config.ssh.username = "root"config.ssh.password = "vagrant"config.vm.box = "centos"config.vm.network "private_network", ip: "192.168.68.128"config.vm.synced_folder "/home/wangkongming/files/works/code/kfz-pm", "/data/webroot/pmv2"end

vagrant 基本命令

官网文档:https://docs.vagrantup.com/v2/getting-started/index.html

vagrant init 初始化vagrantfile

vagrant add box 添加box,自动帮你生成vagrantfile

vagrant halt 关闭虚拟机

vagrant destroy 销毁虚拟机

vagrant ssh 连接虚拟机

vagrant reload 重新加载vagarntfile文件

vagrant suspend 暂时挂起虚拟机

vagrant status 查看虚拟机运行状态

vagrant package 打包 box文件

回到◀疯狂创客圈▶

疯狂创客圈 - Java高并发研习社群,为大家开启大厂之门


推荐阅读
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • Jmeter对RabbitMQ压力测试
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Jmeter对RabbitMQ压力测试相关的知识,希望对你有一定的参考价值。Jm ... [详细]
  • rabbitmq杂谈
    rabbitmq中的consumerTag和deliveryTag分别是干啥的,有什么用?同一个会话,consumerTag是固定的可以做此会话的名字,deliveryTag每次接 ... [详细]
author-avatar
圣峰冰寒_869
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有