【Nacos】Nacos最新版的安装、配置过程记录和踩坑分享

Nacos是什么?有什么功能?大家可以自行联网(推荐 https://cn.bing.com/)搜索,这里就不做介绍了。

简单的看了下官网,安装最新版的Nacos(v2.3.2)需要使用到JDK(1.8.0+)和MySQL(5.6.5+)。

首先,安装配置JDK,这里使用的JDK版本为官方最新的1.8.0_401版本。

将JDK的安装包上传到/usr目录下,解压,目录授权,配置环境变量。

  • 解压和目录授权
# cd /usr
# tar -xzf jdk1.8.0_401-linux-b35.tar.gz
# rm -f ./jdk1.8.0_401-linux-b35.tar.gz
# chmod -R 744 ./jdk1.8.0_401
  • 配置环境变量

将下面的信息配置到/root/.bash_profile中,然后source .bash_profile生效。

JAVA_HOME=/usr/jdk1.8.0_401
export JAVA_HOME

CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export CLASSPATH

PATH=$JAVA_HOME/bin:$PATH:/usr/local/bin:$HOME/bin
export PATH

安装配置MySQL,这里给大家推荐我之前写的一篇文章,里面有详细的步骤说明。

【MySQL】CentOS 7.9安装、使用MySQL-5.7.39二进制版_mysql 5.7.39-log-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/cnskylee/article/details/125989553MySQL数据库安装完成后,还需要导入nacos的表,不过第一步还得去官网下载最新版的安装包,sql脚本在安装包里面。这里直接提供安装包的下载地址。

https://download.nacos.io/nacos-server/nacos-server-2.3.2.zip

下载完成后,用Linux系统自带的 rz 命令或者 WinSCP 这样的SSH工具,将安装包上传到服务器的/data目录下,然后用unzip解压即可。

  • bin目录:启停脚本目录
  • conf:配置文件目录
  • target:nacos的主程序包目录

进入conf目录下,可以发现有个叫 mysql-schema.sql 的脚本文件。

登录到mysql,导入这个脚本文件。

# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.44-enterprise-commercial-advanced MySQL Enterprise Server - Advanced Edition (Commercial)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> use mysql;
Database changed

mysql> source /data/nacos/conf/mysql-schema.sql

mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| config_info               |
| config_info_aggr          |
| config_info_beta          |
| config_info_tag           |
| config_tags_relation      |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| group_capacity            |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| his_config_info           |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| permissions               |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| roles                     |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| tenant_capacity           |
| tenant_info               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
| users                     |
+---------------------------+
43 rows in set (0.00 sec)

导入完成后,exit 退出 mysql 数据库即可。

回到 nacos 的配置目录,编辑 application.properties,完善 nacos 连接 mysql 数据库的配置字段。

放开字段注释,修改url里面的IP和端口配置,设置MySQL的数据库连接用户名和密码。

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

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

除了以上配置,我还修改了Nacos的默认端口为9011(8848听着很不爽^.^),另外还修改了 standalone 模式下的JVM参数。

# conf/application.properties
server.port=9011

# bin/startup.sh 
JAVA_OPT="${JAVA_OPT} -Xms1024m -Xmx1024m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m"

启动Nacos

# cd /data/bin
# ./startup.sh -m standalone
# ps -ef| grep nacos| grep -v grep
root      43785      1  3 15:00 pts/0    00:01:25 /usr/jdk1.8.0_401/bin/java -Djava.ext.dirs=/usr/jdk1.8.0_401/jre/lib/ext:/usr/jdk1.8.0_401/lib/ext -Xms1024m -Xmx1024m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -Dnacos.standalone=true -Dnacos.member.list= -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -Xloggc:/data/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dloader.path=/data/nacos/plugins,/data/nacos/plugins/health,/data/nacos/plugins/cmdb,/data/nacos/plugins/selector -Dnacos.home=/data/nacos -jar /data/nacos/target/nacos-server.jar --spring.config.additional-location=file:/data/nacos/conf/ --logging.config=/data/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288 nacos.nacos

通过浏览器访问9011端口,上下文路径为/nacos

http://192.168.223.198:9011/nacos

第一次登录没有配置用户鉴权,访问上面的URL即可打开页面。

但是,在生产环境,这样裸奔肯定是不被允许的,因此还是要配置登录用户的。但是,没想到官方文档写的太xxx,导致踩了一些坑,浪费了几个小时的时间,查阅了一些资料,偶然修改了一处配置,才发现原来是这样……

下面给大家分享下鉴权配置的坑!

按照官方文档(写的简直WTF)写看起来的高大上,但是估计也只有作者自己能看明白是什么意思。我这里就直接上配置了,把坑给大家展示下。

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

### Since 1.4.1, worked when nacos.core.auth.enabled=true and nacos.core.auth.enable.userAgentAuthWhite=false.
### 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
nacos.core.auth.server.identity.value=passwordIselfdefine

### The default token (Base64 String):
nacos.core.auth.plugin.nacos.token.secret.key=aXQnc215c2VjcmV0dGVzdG9mYmFzZTY0Y2hhcnNldC4=
  • nacos.core.auth.enabled=true // 配置为true
  • nacos.core.auth.server.identity.key=nacos // 我以为的默认用户名
  • nacos.core.auth.server.identity.value=passwordIselfdefine // 我以为的自定义用户密码
  • nacos.core.auth.plugin.nacos.token.secret.key // 这个配置比较烧脑,官方文档的意思是需要将一个不低于32个字符长度的字符串,转换为base64后的编码。大家可以在网上找到这样的网站,随便输入一个32个字符的字符串,转换为base64后的编码,然后配置到后面即可。如下图所示:

好了,上面的配置好以后,第一个坑就出来了,重启是看到登录页面,但是会在登陆页面看到【没有 命名空间的访问权限】的报错,另外,使用配置的nacos用户名和密码登录,一直提示用户名和密码不正确。

查阅了一些资料,说需要在nacos的界面里面配置什么命名空间,好吧!

将nacos.core.auth.enabled设置为false以后,重启nacos,然后在不需要登录的状态下,自定义了一个命名空间,如下所示:

然后再次将nacos.core.auth.enabled设置为true,重启nacos,发现报错依旧。

后来又查阅了一些资料,突然萌生一个想法,将 nacos.core.auth.server.identity.key 和 acos.core.auth.server.identity.value 都设置为nacos,重启,这次发现可以登录成功了。然后我突然就明白了,原来nacos是这个控制台的默认用户名和密码(机制和grafana相似,默认用户名和密码都是admin,只不过grafana在首次登录时会强制用户修改默认密码),不知道官方为什么不在文档里面明确说明这个密码问题!

登录成功后,可以在左边的权限控制-用户列表菜单,或者通过右上角的nacos菜单来修改用户的密码。

修改后登出,使用新密码登录成功。

下面为nacos这个用户来绑定权限,如下所示,为【角色名】配置指定【资源】的【动作】。

配置好,如下所示

再次登出,刷新页面,发现还是有访问权限的报错弹框,然后我手动在默认的 URL 里面将namespace指定为我之前创建的mynamespace,然后再刷新,弹框提示没有了。

奇葩!真的奇葩!这个设计!

为什么使用 http://192.168.223.198:9011/nacos 登录,会自动添加后面这些参数:

http://192.168.223.198:9011/nacos/#/login?namespace=&pageSize=&pageNo=

但是用这个 http://192.168.223.198:9011/nacos/#/login 登录,就不会增加后面的红色字体参数。

给官方的建议(如果官方开发人员能看见的话):建议将在普通用户登录时,查询用户的角色以及应用的命名空间,普通用户只能看到自己用户名绑定的命名空间。管理员登录无需指定和判断命名空间,可以默认看见所有的命名空间以及用户。

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

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

相关文章

【数据结构】——八大排序(详解+图+代码详解)看完你会有一个全新认识

创作不易,给一个免费的三连吧?! 前言 排序在生活中是非常重要的,所以排序在数据结构中也占有很大的地位,相信大家可能被这些排序弄得比较混淆或者对某个排序原理没有弄清,相信看完本篇会对你有所帮助&…

力扣HOT100 - 41. 缺失的第一个正数

解题思路: 原地哈希 就相当于,让每个数字n都回到下标为n-1的家里。 而那些没有回到家里的就成了孤魂野鬼流浪在外,他们要么是根本就没有自己的家(数字小于等于0或者大于nums.size()),要么是自己的家被别…

【报错】AttributeError: ‘NoneType‘ object has no attribute ‘pyplot_show‘(已解决)

【报错】AttributeError: ‘NoneType’ object has no attribute ‘pyplot_show’ 问题描述:python可视化出现下面报错 我的原始代码: import matplotlib.pyplot as pltplt.figure() plt.plot(x, y, bo-) plt.axis(equal) plt.xlabel(X) plt.ylabe…

了解何为vue-cli及其作用

Vue CLI是一个由Vue.js官方提供的命令行工具,用于快速搭建基于Vue.js的项目。它可以帮助开发者快速搭建项目结构、配置构建工具、添加插件等,从而更加高效地进行Vue.js项目的开发。 注:在创建工程前需要 先使用命令行:npm instal…

实战项目——智慧社区(三)之 门禁管理

1、人脸识别 实现思路 ①查询出所有的小区信息,下拉列表显示,用于后续判断人脸信息是否与所选小区匹配 ②人脸识别:调用腾讯人脸识别的API接口,首先判断传入图片是否为一张人脸;其次将这张人脸去服务器的人员库进行…

拥有一台阿里云服务器可以做什么?

阿里云ECS云服务器可以用来做什么?云服务器可以用来搭建网站、爬虫、邮件服务器、接口服务器、个人博客、企业官网、数据库应用、大数据计算、AI人工智能、论坛、电子商务、AI、LLM大语言模型、测试环境等,云服务器吧yunfuwuqiba.com整理阿里云服务器可以…

SpringBoot 中的日志原来是这么工作的

在有些场景,能通过调整日志的打印策略来提升我们的系统吞吐量,你知道吗? 我们以Springboot集成Log4j2为例,详细说明Springboot框架下Log4j2是如何工作的,你可能会担心,如果是使用Logback日志框架该怎么办呢&#xff1…

langchain-chatchat指定一个或多个文件回答,不允许回答内容有其他文件内容,即屏蔽其他文件内容

1.找到langchain-chatchat中的knowledge_base_chat.py 2.knowledge_base_chat.py的api内容加上一个flie_name参数,即传过来你需要指定一个文件名称,或多个文件名称,同时也可以不指定,加上以下代码: flie_name: List …

2024-4-10 群讨论:JFR 热点方法采样实现原理

以下来自本人拉的一个关于 Java 技术的讨论群。关注公众号:hashcon,私信拉你 什么是 JFR 热点方法采样,效果是什么样子? 其实对应的就是 jdk.ExecutionSample 和 jdk.NativeMethodSample 事件 这两个事件是用来采样的&#xff0c…

[SystemVerilog]Simulation and Test Benches

Simulation and Test Benches 测试语言中有很大一部分专门用于测试台和测试。在本章中,我们将介绍为硬件设计编写高效测试台的一些常用技术。 6.1 How SystemVerilog Simulator Works 在深入研究如何编写适当的测试台之前,我们需要深入了解模拟器的工作原…

git查看单独某一个文件的历史修改记录

git查看单独某一个文件的历史修改记录 git log -p 文件具体路径 注意,Windows下默认文件路径分隔符是 \,在git bash 里面需要改成 /。 git基于change代码修改与提交_git change-CSDN博客文章浏览阅读361次。git cherry-pick:复制多个提交comm…

使用 Citavi 和 NVivo 简化您的文献综述和研究分析

NVivo 是一款支持定性研究方法和混合研究方法的软件。它可以帮助您收集、整理和分析访谈、焦点小组讨论、问卷调查、音频等内容。NVivo(1.0版)是Windows和Mac的主要版本。遵循最新的主要版本NVivo 12(Windows和Mac)。 NVivo 强大…

Java Reflection(从浅入深理解反射)

本节的代码链接:reflection 1. 反射的由来 反射机制允许程序执行期借助于Reflection API取得任何类的内部信息,如成员变量、构造器、成员方法等,并能操作对象的属性及方法,在设计模式和框架底层都会用到。 1.1 引入需求 编写框…

Scala实战:打印九九表

本次实战的目标是使用不同的方法实现打印九九表的功能。我们将通过四种不同的方法来实现这个目标,并在day02子包中创建相应的对象。 方法一:双重循环 我们将使用双重循环来实现九九表的打印。在NineNineTable01对象中,我们使用两个嵌套的fo…

sql注入之宽字节注入

1.1 宽字节注入原理 宽字节注入,在 SQL 进行防注入的时候,一般会开启 gpc,过滤特殊字符。 一般情况下开启 gpc 是可以防御很多字符串型的注入,但是如果数据库编码不 对,也可以导致 SQL 防注入绕过,达到注入…

7、Qt--QLabel使用小记

前言:QLabel作为QT中基础的控件,功能简单使用方便频繁,主要用于显示文本、图片等信息。笔者这里记录下一些开发使用心路,方便小白快速入手。 一、添加背景图片 首先需要在资源中添加好图片资源,图片资源的添加参考4.1…

ArcGIS Desktop使用入门(三)图层右键工具——组织要素模板

系列文章目录 ArcGIS Desktop使用入门(一)软件初认识 ArcGIS Desktop使用入门(二)常用工具条——标准工具 ArcGIS Desktop使用入门(二)常用工具条——编辑器 ArcGIS Desktop使用入门(二&#x…

每日一练(力扣)

我的思路是暴力枚举: 情况1:相同&#xff0c;就让子串和原串同时后移继续比较 情况2:不相同&#xff0c;就只让原串后移 public int strStr(String haystack, String needle) {if (haystack.length() < needle.length()){return -1;}for (int i 0; i < h…

PointNet++函数square_distance(src, dst):计算两组点之间的欧式距离(代码详解)

文章目录 一、计算两组点之间的欧式距离二、举例三、中间结果输出 一、计算两组点之间的欧式距离 def square_distance(src, dst):"""Calculate Euclid distance between each two points.src^T * dst xn * xm yn * ym zn * zm&#xff1b;sum(src^2, dim-1…

Qt | 对象树与生命期(对象的创建、销毁、擦查找)

一、组合模式与对象树 1、组合模式指的是把类的对象组织成树形结构,这种树形结构也称为对象树,Qt 使用对象树来管理 QObject 及其子类的对象。注意:这里是指的类的对象而不是类。把类组织成树形结构只需使用简单的继承机制便可实现。 2、使用组合模式的主要作用是可以通过…