Windows11下载安装nacos(2.3.0)详解

一、环境要求

windows7以上

jdk8及以上版本,并且配置了JAVA_HOME环境变量

二、nacos下载解压

release版本地址:Releases · alibaba/nacos · GitHub

 下载后解压即可,上面的tar.gz是linux版本 

 解压后如下

 nacos自己内置有数据库derby,我用的是自己本机安装的mysql数据库

先在本地mysql服务器创建有一个名字为nacos的数据库

然后打开脚本/conf/mysql-schema.sql,复制到nacos数据库中执行

 执行完后,一共有12张表

接着需要改下配置文件

找到文件/conf/application.properties,用notepad++或记事本打开

### If use MySQL as datasource:
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
spring.datasource.platform=mysql
spring.sql.init.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456

这几行配置本来是注释的,前面有#,放开,配置上的 user和password是你本机mysql的用户名和密码

编辑/bin/startup.cmd,注意不要双击,右键编辑,启动模式改成单机模式

三、启动nacos

双击starup.cmd

四、nacos鉴权详细探索

到这里nacos已经可以启动使用了,之前用过老版nacos的同学知道,nacos是要输入用户名和密码的,默认都是nacos,但是上面启动却直接打开了页面

查看nacos官方文档:什么是 Nacos

找到一段话

2.2.2版本之前的Nacos默认控制台,无论服务端是否开启鉴权,都会存在一个登录页;这导致很多用户被误导认为Nacos默认是存在鉴权的。在社区安全工程师的建议下,Nacos自2.2.2版本开始,在未开启鉴权时,默认控制台将不需要登录即可访问,同时在控制台中给予提示,提醒用户当前集群未开启鉴权。

在用户开启鉴权后,控制台才需要进行登录访问。 同时针对不同的鉴权插件,提供新的接口方法,用于提示控制台是否开启登录页;同时在2.2.3版本后,Nacos可支持关闭开源控制台,并引导到用户自定义的Nacos控制台,详情可查看Nacos鉴权插件-服务端插件及控制台手册-关闭登录功能

由此知道,2.2.2版本以后默认没有鉴权,不需要输入登录就能直接打开访问

这在生产上是绝对不允许的,所以我们要配置登录鉴权

还是找到文件/conf/application.properties,用notepad++或记事本打开

### If turn on auth system:
nacos.core.auth.enabled=true

这个是鉴权开关,默认false,修改为true

### The default token (Base64 String):
nacos.core.auth.plugin.nacos.token.secret.key=os7crpEmDgyDDsYckyNFP8CrdjkF4HVcD6wAr16rZScOS   

这个是鉴权的token,官方要求至少32位 

有一个工具生成:随机字符串生成 - 程序员工具箱 - 在线工具

 

 注意:这里官方要求是不低于32位,但如果写32位生成的配置上去仍然报错,具体不知道为啥,也许源码判断不止32位吧,总之是搞大一点吧

nacos.core.auth.plugin.nacos.token.secret.key=os7crpEmDgyDDsYckyNFP8CrdjkF4HVcD6wAr16rZScOS 

### The two properties is the white list for auth and used by identity the request from other server.
nacos.core.auth.server.identity.key=
nacos.core.auth.server.identity.value=

注意:这两个值默认是没有的,如果不设置这两个配置,打开鉴权开关后,启动nacos,发现报错如下:

扒了源码下来看看,这两个配置在nacos启动的时候就会有校验

 @Postconstruct注解大家应该知道什么意思吧,启动类启动时会自动调用的方法,要求是void,具体解释可自行百度查看用法

里面是一个枚举类定义的错误信息

 按照官方文档给的默认值配置

### The two properties is the white list for auth and used by identity the request from other server.
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security

这两个配置值是官方文档给的默认值,可以自己定义,官方文档解释如下

开启鉴权功能后,服务端之间的请求也会通过鉴权系统的影响。考虑到服务端之间的通信应该是可信的,因此在1.2~1.4.0版本期间,通过User-Agent中是否包含Nacos-Server来进行判断请求是否来自其他服务端。

但这种实现由于过于简单且固定,导致可能存在安全问题。因此从1.4.1版本开始,Nacos添加服务身份识别功能,用户可以自行配置服务端的Identity,不再使用User-Agent作为服务端请求的判断标准。

配置好鉴权后打开如下地址:

 http://192.168.0.108:8848/nacos/index.html,可以替换为http://localhosy:8848/nacos/index.html,192.168.0.108是我本机的ip地址,打开地址如下

我用火狐浏览器打开控制台找到报错的请求,选择重发了一下,在请求头header中添加了 

nacos.core.auth.server.identity.key=serverIdentity和nacos.core.auth.server.identity.value=security组成的键值对,发现请求成功了

其实是因为有鉴权没通过,跳转到登录页面了,我通过手动添加header请求头添加身份验证信息,成功跳过鉴权

但是,实际应该打开的是登陆页面地址: http://localhost:8848/nacos/#/login,这里我认为nacos处理是有瑕疵的,startup.cmd启动窗口给的console应该是

console: http://localhost:8848/nacos/#/login,而不是index.html

输入用户名/密码:nacos/nacos 

 

发现左上角没有当前集群没有开启鉴权的提示了 。

五、总结思考

关于nacos.core.auth.server.identity.key和nacos.core.auth.server.identity.value配置的思考

这俩个配置先解释下

在Nacos中,nacos.core.auth.server.identity.key和nacos.core.auth.server.identity.value这两个配置项用于设置Nacos服务器的身份验证信息。
具体来说:
     nacos.core.auth.server.identity.key:这个配置项用于设置身份验证的关键字,通常是一个字符串,例如"nacos"。
     nacos.core.auth.server.identity.value:这个配置项用于设置与关键字对应的身份验证值,通常也是一个字符串,例如"admin"。


这两个配置项的作用是,当客户端尝试连接到Nacos服务器时,服务器会检查请求中的这些信息,如果请求中的关键字和值与服务器的配置匹配,那么服务器就会接受这个请求,否则就会拒绝这个请求。这样可以实现对Nacos服务器的访问控制,保护敏感信息的安全。
以下是一个示例:
假设我们有一个Nacos集群,其中有三个节点,它们的IP地址分别为192.168.0.1、192.168.0.2和192.168.0.3。我们希望只有IP地址为192.168.0.1和192.168.0.2的客户端才能访问Nacos集群。
首先,我们需要在每个节点上分别设置nacos.core.auth.server.identity.key和nacos.core.auth.server.identity.value的值。对于节点192.168.0.1,我们可以将其设置为"nacos",将其对应的值设置为"admin";对于节点192.168.0.2,我们可以将其设置为"nacos",将其对应的值设置为"admin";对于节点192.168.0.3,我们可以将其设置为"nacos",将其对应的值设置为"user"。
然后,我们需要在Nacos的配置文件(application.properties或application.yml)中添加以下配置:


nacos:
  core:
    auth:
      server:
        identity:
          key: nacos
          value: admin

这两个配置是nacos集群之间通信用到的,用于跳过鉴权,且多个集群这两个配置必须保持一致,防止数据错乱 ,或者其他第三方想要访问nacos服务,则需要在请求头header带上配置的key和value

前文已通过火狐浏览器重发请求带上这两个验证了(至于为什么用火狐,因为火狐是中文的,chrome浏览器英文的,我没找到重发按钮在哪。。。)

而我这里是单机模式启动,我认为是不强制需要判断这两个值是否 填写,我已经提了官方issue建议,判断单机模式不需要这个判断

不知道对不对,看看官方是怎么回复的吧

六、nacos注册为windows服务

请看我这篇文章: Nacos注册为windows服务详解_nacos注册成为windows系统服务-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/302708.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国产编程语言炫彩,界面库ui dll,有人了解吗

中文编程: 中英文双语编程, 中英一键切换, 中英对照, 中文为主, UNICODE/ANSI编码都支持; 完全免费: 炫语言免费, 调试器免费, IDE绿色版无需安装; 纯文本: 纯文本格式代码, 随意复制粘贴, GIT代码托管, 多人合作开发; PY风格: PY风格代码, 通过代码缩进确定作用域 非 大花括…

腾讯面试总结

腾讯 一面 mysql索引结构?redis持久化策略?zookeeper节点类型说一下;zookeeper选举机制?zookeeper主节点故障,如何重新选举?syn机制?线程池的核心参数;threadlocal的实现&#xff…

RFID传感器|识读器CNS-RFID-01/1S在AGV小车|搬运机器人领域的安装与配置方法

AGV 在运行时候需要根据预设地标点来执行指令,在需要 AGV 在路径线上位置执行某个指令时候,则需要在这个点设置 命令地标点,AGV 通过读取不同地标点编号信息,来执行规定的指令。读取地标点设备为寻址传感器,目前&#…

【MIT 6.S081】2020, 实验记录(1),Lab: Xv6 and Unix utilities

目录 实验准备TasksTask 1: Boot xv6Task 2: sleepTask 3: pingpongTask 4: primesTask 5: findTask 6: xargs 实验准备 这个 lab 用来学习尝试如何通过 system call 来实现常见的 shell 命令行程序,比如 ls、sleep、xargs 等。 实验官网 可以使用 docker 搭建实…

JetPack组件学习ViewModel

ViewModel的使用 1.需要先创建ViewModel类,继承自ViewModel重写onclear方法,使得页面销毁的时候能够走到自定义的onClear方法中 class MyViewModel : ViewModel() {//共享数据的核心在于拿到同一个LiveData实例,也就是拿到同一个ViewModel实…

Windows10升级到Windows11 Office未激活解决方案

Windows11出了很久了,昨天才升级,今天打开Word发现激活不了,我的是2019的版本,然后发现是Windows系统的注册表的问题,想要找到解决方案还不简单,所以记录一下。 解决方案: Win r打开输入rege…

进程间通信之匿名管道和命名管道的理解和实现【Linux】

进程间通信之匿名管道和命名管道的理解和实现 进程间通信什么是管道匿名管道代码实现管道的读写规则管道特点 命名管道创建命名管道代码实现 进程间通信 进程间通信的目的 数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同…

Unity 利用UGUI之Slider制作进度条

在Unity中使用Slider和Text组件可以制作简单的进度条。 首先在场景中右键->UI->Slider,新建一个Slider组件: 同样方法新建一个Text组件,最终如图: 创建一个进度模拟脚本,Slider_Progressbar.cs using System.C…

php实现支付宝商户转账

目录 一:背景介绍 一:准备工作 三:代码实现 一:背景介绍 最近工作中,要用到支付宝的商家转账功能,用php代码实现,网上找的内容,有些是老版本的实现,有些是调用sdk&am…

代码随想录二刷 |二叉树 | 验证二叉搜索树

代码随想录二刷 |二叉树 | 验证二叉搜索树 题目描述解题思路递归法迭代法 代码实现递归法迭代法 题目描述 98.验证二叉搜索树 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子…

解决:Unity : Error while downloading Asset Bundle: Couldn‘t move cache data 问题

目录 问题: 尝试 问题得到解决 我的解释 问题: 最近游戏要上线,发现一个现象,部分机型在启动的时候闪退或者黑屏,概率是5%左右,通过Bugly只有个别机型才有这个现象,其实真实情况比这严重的多…

Async In C#5.0(async/await)学习笔记

此文为Async in C#5.0学习笔记 1、在async/await之前的异步 方式一:基于事件的异步Event-based Asynchronous Pattern (EAP). private void DumpWebPage(Uri uri) {WebClient webClient new WebClient();webClient.DownloadStringCompleted OnDownloadStringCo…

VMware安装与CentOS8安装与配置

VMware安装与CentOS8安装与配置 话不多说,咱们开始干,文末附资料哦~ 一、安装VMware 1、双击安装包 2、如提出什么重启,重启就是了 3、按照提示下一步 4、选择安装目录,下一步 5、取消勾选,下一步 安装完成后&…

【FPGA】分享一些FPGA数字信号处理相关的书籍

在做FPGA工程师的这些年,买过好多书,也看过好多书,分享一下。 后续会慢慢的补充书评。 【FPGA】分享一些FPGA入门学习的书籍【FPGA】分享一些FPGA协同MATLAB开发的书籍 【FPGA】分享一些FPGA视频图像处理相关的书籍 【FPGA】分享一些FPGA高速…

【愚公系列】2023年12月 HarmonyOS教学课程 054-Web组件(基本使用和属性)

🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主&#xf…

【python】使用fitz包读取PDF文件报错“ModuleNotFoundError: No module named ‘frontend‘”

【python】使用fitz包读取PDF文件报错“ModuleNotFoundError: No module named ‘frontend’” 正确解决过程 在读取PDF文件时,我使用了fitz包,当使用代码import fitz导入该包时,出现了报错: 于是我直接使用以下代码安装fronten…

Vmware安装windowsServer2022版本

虚拟机配置 文件->新建虚拟机 典型安装与自定义安装 典型安装:VMware会将主流的配置应用在虚拟机的操作系统上,对于新手来很友好。 自定义安装:自定义安装可以针对性的把一些资源加强,把不需要的资源移除。避免资源的浪费。…

二叉树的直径,力扣

目录 题目地址: 题目: 我们直接看题解吧: 审题目事例提示: 解题方法: 难度分析: 解题方法分析: 解题分析: 补充说明: 代码优化: 题目地址: 543. 二…

设计模式的艺术P1基础—2.2 类与类的UML图示

设计模式的艺术P1基础—2.2 类与类的UML图示 在UML 2.0的13种图形中,类图是使用频率最高的两种UML图之一(另一种是用于需求建模的用例图),它用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解…

指针传参误区

C语言中指针作为形参传递时,func(*a, *b) 这种形式的话,是无法通过简单的 ab来修改的,在函数体内a的地址确实被修改成b的地址了,但是当函数执行结束时,a的地址会重新回到原本的地址里面&#xf…