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

news2024/11/26 13:36:07

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 登录,就不会增加后面的红色字体参数。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JS原生DOM操作 - 获得元素/网页大小/元素宽高

文章目录 获得元素的方法获取页面元素位置宽高概念方法获得网页/元素宽高clientHeight和clientWidth:scrollHeight和scrollWidth:window.innerWidth:element.style.width: offsetXXX 获得网页元素的宽高和相对父元素位置&#xff…

关于运行阿里云直播Demo pub get 报的错

flutter --version dart --version 如何使用Flutter框架推流_音视频终端 SDK(Apsara Video SDK)-阿里云帮助中心MediaBox音视频SDK下载指南_音视频终端 SDK(Apsara Video SDK)-阿里云帮助中心 终端输入 dart pub --trace get --no-precompile 打印详细报错信息 详细咨…

⭐Unity 里调用弹出电脑系统文件选择窗 (选择图片/文件)

今天遇到的需求要从Uinty里调用选择程序外的图片,类似手机环境下拿图库的照片一样。 效果如下: 话不多说 直接上代码! 1.编辑器模式下 using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; using Syst…

Android Studio开发学习(六)———TableLayout(表格布局)、FrameLayout(帧布局)

目录 前言 一、Tablelayout (一)Tablelayout的相关简介 (二)TableLayout使用方法 1. 当TableLayout下面写控件、则控件占据一行的大小。(自适应一行,不留空白) 2.多个组件占据一行,则配合TableRow实现…

RocketMQ之Topic和Tag最佳实践

一、Topic是什么?它的作用? Topic即主题,是消息队列中用于对消息进行分类和组织的一种机制,它有以下三种作用: 标识消息分类:RocketMQ的主题用于对消息进行分类和组织。通过为不同类型的消息分配不同的主题…

FireProx:一款功能强大的AWS API网关管理与IP地址轮换代理工具

关于FireProx FireProx是一款功能强大的AWS API网关安全管理工具,该工具可以帮助广大研究人员创建实现唯一IP地址轮换的实时HTTP转发代理。 在发送网络请求或进行网络交互时,实现源IP地址轮换是一个非常复杂的过程,虽然社区中也有相关的工具…

ShardingSphere再回首

概念: 连接:通过协议 方言及库存储的适配,连接数据和应用,关注多模数据苦之间的合作 增量:抓取库入口流量题提供重定向, 流量变形(加密脱敏)/鉴权/治理(熔断限流)/分析等 可插拔:微内核 DDL:cr…

皮具5G智能制造工厂数字孪生可视化平台,推进企业数字化转型

皮具5G智能制造工厂数字孪生可视化平台,推进企业数字化转型。随着信息技术的快速发展,数字化转型已成为企业提升竞争力、实现可持续发展的关键路径。皮具行业,作为一个传统的手工制造业,正面临着巨大的市场变革和技术挑战。如何在…

(Java)数据结构——图(第十节)AOE网以及关键路径

目录 前言 AOE网 AOE网的两个性质: AOE网的五个时间 事件的最早发生时间Ve[k] 活动的最早开始时间E[i] 事件的最迟发生时间Vl[k] 活动的最晚开始时间L[i] 活动的时间余量 关于关键路径的缩短 代码实现思路 前言 本博客是博主用于复习数据结构以及算法的博…

蓝桥杯备赛刷题——css

新鲜的蔬菜 这题需要使用grid 我不会 去学一下 一.什么是grid Grid 布局与 Flex 布局有一定的相似性,都可以指定容器内部多个项目的位置。但是,它们也存在重大区别。 Flex 布局是轴线布局,只能指定"项目"针对轴线的位置&#…

(非技术) 基因遗传相关知识学习笔记

目录 一、基因遗传名词解释 二、什么叫显性遗传和隐性遗传? 三、如何确定遗传性质呢?是显性还是隐性? 四、常规例子1: 五、常规例子2: 六、实际案例: 七、思考题: 八、参考: …

【Redis深度解析】揭秘Cluster(集群):原理、机制与实战优化

Redis Cluster是Redis官方提供的分布式解决方案,通过数据分片与节点间通信机制,实现了水平扩展、高可用与数据容灾。本文将深入剖析Redis Cluster的工作原理、核心机制,并结合实战经验分享优化策略,为您打造坚实可靠的Redis分布式…

Qt QProcess详解

1.简介 QProcess提供了在 Qt 应用程序中启动外部程序的方法。通过QProcess,你可以启动一个进程,与它通信(发送输入和读取输出),检查它的状态,以及等待它完成。这个类在执行系统命令、运行其他程序或脚本时…

铸铁试验平台和铸铁实验平台的主要区别在哪——北重制造厂家

铸铁试验平台和铸铁实验平台的主要区别在于其使用目的、实验内容和功能。 首先,铸铁试验平台主要用于铸铁工艺试验和工艺参数优化。通过模拟铸铁工艺过程,对不同工艺参数进行试验,从而得到最佳的铸铁工艺参数。铸铁试验平台一般具有温度控制、…

DL00295-基于AirSim仿真环境的无人机深度强化学习算法路径规划完整实现含详细说明文档

-创建了一个开放的AI Gym环境,包括多旋翼和固定翼无人机的运动学模型。 -提供了一些UE4环境来训练和测试深度强化学习DRL导航策略。 -基于AirSim和SB3。 完整代码链接见文末。 DL00295-基于AirSim仿真环境的无人机深度强化学习算法路径规划完整实现含详细说明文档

如何在前端项目中使用opencv.js | opencv.js入门

系列文章目录 如何在前端项目中使用opencv.js | opencv.js入门如何使用tensorflow.js实现面部特征点检测tensorflow.js 如何从 public 路径加载人脸特征点检测模型tensorflow.js 如何使用opencv.js通过面部特征点估算脸部姿态并绘制示意图tensorflow.js 使用 opencv.js 将人脸…

docker 部署最新版 MySQL 实战

文章目录 前言简介第一步:搜索并拉取镜像1.1 搜索镜像1.2 拉取MySQL镜像1.3 查看MySQL镜像 第二步:生成MySQL容器2.1 运行MySQL镜像2.2 查看运行容器 第三步:验证服务可用性3.1 关闭防火墙3.2 连接MySQL 总结 前言 请各大网友尊重本人原创知…

独家原创 | Matlab实现INFO-BiTCN-BiGRU-Attention多输入单输出回归预测

独家原创 | Matlab实现INFO-BiTCN-BiGRU-Attention多输入单输出回归预测 目录 独家原创 | Matlab实现INFO-BiTCN-BiGRU-Attention多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现INFO-BiTCN-BiGRU-Attention向量加权算法优化双向时间卷积…

蓝桥杯 迷宫(bfs)

0迷宫 - 蓝桥云课 (lanqiao.cn) 思路 : 最后一定要倒数输出路径,因为从前面输出你会找不到下一个到底是谁,bfs过程是找最小路径,最后输出是去找方向,但是此题作为一个填空题,我直接手写(开玩笑…

每日一题 — 将 x 减到 0 的最小操作数

思路: 题目要求是让我们从数组的最左端和最右端进行操作,这样的话解题的难度大大提升,我们可以用 正难则反 的思想: 题目中要求是减去数组中的数刚好等于X,我们可以转换成 数组中某一段的和等于 数组的总长减去X(sum -…