问题发现:
在今天学习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/NfXbj和http://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
值,详情可查看鉴权-自定义密钥.注意,文档中的默认值
SecretKey012345678901234567890123456789012345678901234567890123456789
和VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
为公开默认值,可用于临时测试,实际使用时请务必更换为自定义的其他有效值。
官方是强烈建议自定义密钥的,但是实际用上面的默认值也可以,我用默认值给大家看下修改的地方,其实就是conf
目录下的application.properties
文件:
修改完后,双击"startup.cmd",终于可以正常启动了:
按住Ctrl点击上面画圈的网址,也可以正常跳转到Nacos配置管理页面:
我是登录过的,第一次跳转成功是跳转到登陆页面,默认用户名和密码均为:"nacos",登录即可到达上面这个页面。
总结:
其实这次的这个问题仔细看看官方文档是可以很快解决的,但是呢,我一直没有看官方文档的习惯,所以这次花了很多时间,算是给我长了记性了。文章来源:https://www.toymoban.com/news/detail-768491.html
我觉得其实数据库那个配置是可以不用更改的,总结一下吧,对于配置了单机启动()也配置了数据库,但是Nacos依然启动失败问题,检查下你是否配置了conf
目录下的application.properties
文件,设置其中的nacos.core.auth.plugin.nacos.token.secret.key
值。如果这篇文章还是不能解决你的问题,记得去读读官方文档:Nacos 快速开始。文章来源地址https://www.toymoban.com/news/detail-768491.html
到了这里,关于配置了单机启动(standalone),也配置了数据库,但是Nacos依然启动失败的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!