配置了单机启动(standalone),也配置了数据库,但是Nacos依然启动失败

问题发现:

在今天学习Nacos时,我下载安装解压好了Nacos包,我下载的是目前(2023.3.27)的最新版本的 Nacos 2.2.1,但是在启动时,不管是用官方的命令"startup.cmd -m standalone",还是直接双击"startup.cmd"都是会闪退,自然启动也是失败的。

解决窗口闪退问题:

然后我查找了资料,发现需要在"startup.cmd"的最后加上:

pause
endlocal

这样窗口就不会闪退了。

查看异常信息:

窗口闪退问题解决后,就可以看见完整的异常信息了,我的报错信息很长,大概有六七段error,只能从头开始看,第一段错误是(很长,我只把重点的以代码形式打出来):

 ERROR Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException.

org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat

解决步骤:

1.配置standalone:

 当然我自己也是看不明白,但是字面意思是Tomcat启动出问题了,只能去搜索"Unable to start embedded Tomcat",于是出现了以下结果:

 大致意思就是说:Nacos默认启动方式为集群启动,但是我们个人只有一台主机,所以应该选择单机启动模式,所以需要重新配置。具体可参考文章:http://t.csdn.cn/uDVW7,这位博主还说了第二种错误:"Failed to create database ‘/data/soft/nacos/data/derby-data’",但是我没有遇到,所以这里就不细说了,需要的可以去看看上面的链接中的文章。

修改前:

修改后:

 

 到这启动模式已经修改好了,但是启动报错一项没减少,很烦。

2.配置数据库(个人觉得可以不修改,但是还是写出来给大家参考参考):

接着我看到了第二个答案:

 意思是配置文件/conf中有数据库文件,所以出错的原因可能是因为Nacos启动时需要对应的数据库环境,可以参考文章:http://t.csdn.cn/NfXbjhttp://t.csdn.cn/b0rYp,第二篇文章写的更详细点,可以参考,但是我的包和他给的包不太一样:

他给的:

我的: 

下面给出我的步骤:

打开Navicat;新建一个数据库(名字我不知道可不可以随便起,因为有的回答是随便新建一个数据库,但是上面这位博主起了"Nacos",那我也就用了"Nacos",毕竟看起来比较专业);然后运行mysql-schema.sql,虽然运行的文件名和上面这位博主的不同,但是我看了建出来的表是一样的;修改conf/application配置文件:

 圈起来这部分修改为自己数据库的用户名和密码。

结束,但是报错依然没有减少。

3.检查端口有没有被占用:

很苦恼,因为我找的很多资料里都只有上面两种回答,我就想那我这问题可能是一个小众问题了,那会不会是我的电脑8848(Nacos默认端口)端口被占用了,于是我就检查了我的端口使用情况:

打开cmd->输入netstat -ano命令->查找端口号,本地地址ip后方冒号之后的就是端口号(下面圈出来的部分):

如果想查找特定端口号,可以使用netstat -ano | findstr "端口号"的命令,很遗憾,经过我仔细查看后,发现端口也并没有被占用。

4.正解:修改配置文件中Key值:

因为我是看黑马2021年的springcloud视频学习的,他们用的Nacos版本还为1.x,我觉得可能是新版本的一些问题,所以我就打算放弃用最新版本,改用配套资料里的1.x版本了,但是在我准备关闭cmd黑窗口时,我看见了最后的一个错误提示:

Caused by: java.lang.IllegalArgumentException: The specified key byte array is 0 bits which is not secure enough for any JWT HMAC-SHA algorithm.  The JWT JWA Specification (RFC 7518, Section 3.2) states that keys used with HMAC-SHA algorithms MUST have a size >= 256 bits (the key size must be greater than or equal to the hash output size).  See https://tools.ietf.org/html/rfc7518#section-3.2 for more information.
        at com.alibaba.nacos.plugin.auth.impl.jwt.NacosJwtParser.<init>(NacosJwtParser.java:56)
        at com.alibaba.nacos.plugin.auth.impl.token.impl.JwtTokenManager.processProperties(JwtTokenManager.java:71)
        ... 115 common frames omitted

我抱着试一试的态度搜索了这个错误,然后看到了下面的回答: 

 

 意思就是:新版(2.x后)Nacos配置文件中的用于生成JWT令牌的密钥默认为空值,需要自己去conf/application文件中设置,可以设置为官方给的默认值:SecretKey012345678901234567890123456789012345678901234567890123456789,也可以自己去设置,自定义密钥时,推荐将配置项设置为Base64编码的字符串,且原始密钥长度不得低于32字符,可以参考文章:http://t.csdn.cn/cdtH8。我去看了官方文档,官方文档是这么说的:

修改conf目录下的application.properties文件。

设置其中的nacos.core.auth.plugin.nacos.token.secret.key值,详情可查看鉴权-自定义密钥.

注意,文档中的默认值SecretKey012345678901234567890123456789012345678901234567890123456789VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=为公开默认值,可用于临时测试,实际使用时请务必更换为自定义的其他有效值。

官方是强烈建议自定义密钥的,但是实际用上面的默认值也可以,我用默认值给大家看下修改的地方,其实就是conf目录下的application.properties文件:

 修改完后,双击"startup.cmd",终于可以正常启动了:

 按住Ctrl点击上面画圈的网址,也可以正常跳转到Nacos配置管理页面:

 我是登录过的,第一次跳转成功是跳转到登陆页面,默认用户名和密码均为:"nacos",登录即可到达上面这个页面。

总结:

其实这次的这个问题仔细看看官方文档是可以很快解决的,但是呢,我一直没有看官方文档的习惯,所以这次花了很多时间,算是给我长了记性了。

我觉得其实数据库那个配置是可以不用更改的,总结一下吧,对于配置了单机启动()也配置了数据库,但是Nacos依然启动失败问题,检查下你是否配置了conf目录下的application.properties文件,设置其中的nacos.core.auth.plugin.nacos.token.secret.key值。如果这篇文章还是不能解决你的问题,记得去读读官方文档:Nacos 快速开始

猜你喜欢

转载自blog.csdn.net/m0_56680022/article/details/129798194