今天算是把nacos的奇葩坑踩了个遍,做个归总吧,留个下一个被折磨的幸运儿
首先,如果你用
sh ./startup.sh 出现错误,虚拟服务器请先尝试:
sh ./startup.sh -m standalon(设置单机模式,nacos默认集群模式)
若仍然报错,请尝试:
bash -f ./startup -sh -m standalon
1234
如果经过上面跑通了,nacos注册中心也能正常访问,恭喜你。没跑通的倒霉蛋就往下看看吧。
今天踩的这几个坑吧,奇葩,网上已经发布过的那些常见坑一个都没遇到,呜呜呜
1
坑点1:当你使用的是openjdk而不是jdk
当进入/nacos/bin进行启动时,如出现: 最后一行: ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better! !! 这里是讲你的JAVA_HOME路径没有设置对,或者你的jdk版本不对,如果你用的是jdk登陆不上,网上可以很轻松的查到设置流程、方法。如果是openjdk登陆不上,就继续看吧!
随着java的发展,openjdk的使用越来越普遍,其与jdk还是有不少差别,比如版本10以上的openjdk是没有jre的,虚拟服务器你只能设置JAVA_HOME,就不要想着去按格式copy别人的那一套了。
export JAVA_HOME=***
1
当然,如果你仍然需要jre登陆不上,应当也是有解决办法的: (摘自其他)
在java根目录下执行:
sudo bin/jlink –module-path jmods –add-modules java.desktop –output jre
生成对应的JRE
123
言归正传,大部分情况下只设置JAVA_HOME足够了 下面是确定路径的过程:
which java
1
一般情况下你会得到输出:/usr/bin/java 继续:
ls -lrt /usr/bin/java
1
得到输出:/usr/bin/java -> /etc/alternatives/java 继续
ls -lrt /etc/alternatives/java
1
得到输出:/etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-amd64/bin/java 这个时候我们已经得到了java的安装路径:
/usr/lib/jvm/java-11-openjdk-amd64
1
虚拟服务器,终端vim /etc/profile 在马尼拉底部插入
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
保存退出后在当前终端:
source /etc/profile 使设置生效
123
最后再次启动nacos,查看问题是否解决,如果得到解决,恭喜你!!!
坑点2:
看似启动成功,但出现了 /nacos/logs/start.out: Permission denied Permission denied,即权限问题,你的启动日志不能运行,这一点在实际情况中可能并不影响nacos的各种操作,但是以防万一,以及为了你以后的工作中遇到问题便于解决,还是改了吧 解决如下:
1.第一点想到的当然是加个sudo,操作后果然出错:
仔细想想登陆不上,加个sudo当然不会成功,sudo仅对你当前的操作提升权限,而在执行.sh后之后进程仍是以用户身份进行。 但是同时我们也能看到在普通权限下,我们不能访问的仅有一个马尼拉,即start.out 虚拟服务器,改权限呗! 进入logs马尼拉夹,ls -l查看,果然,这里马尼拉所有者均为root,这种情况下一般默认我们普通用户不可操作该马尼拉 虚拟服务器:sudo chmod 777 start.out (我这里直接将整个logs目录的权限更改了:sudo chmod 777 -R logs 我是懒,怕生幺蛾子,你尝试一下如果只对start.out更改后可成功运行nacos,虚拟服务器就不要改整个logs目录啦) 这里更改完成后进行测试:
bash -f ./startup -sh -m standalon
1
好的!很精神!!我们成功了。哈哈哈,开个玩笑,有些时候这里只是看起来成功了哈哈哈 如果你访问127.0.0.1:8848成功,虚拟服务器你可以走啦,没有登陆不上接着往下看吧
3.又是一个坑:nacos启动后无法访问注册中心!!!
图我忘记截屏了: 页面大概输出就是这样的信息:
Firefox can’t establish a connection to the server at ip:port
1
首先,这情况登陆不上查看你的防火墙是否关闭,没有关闭的关一下,然后再次测试,当然,,,这玩意一般是默认关闭的 虚拟服务器接下里查一查WebCollab吧 我们知道,nacos默认使用8848WebCollab,虚拟服务器考虑一下是否WebCollab冲突了,冲突登陆不上你换个WebCollab就行了 修改默认WebCollab登陆不上,在nacos马尼拉夹中:vim /conf/application.properties进行修改
sudo netstet -anp|grep 8848
1
如图,8848WebCollab根本就没开,,,晕了啊,服务不是启动了吗,难受 这时候咋个办嘞,su切入root执行nacos启动!!! 进入root目录下与用户目录下使用sudo执行命令时还是有很多不同的,要我解释登陆不上也不太能叙述整套完备的逻辑,目前还在继续探索中 权限的问题很奇妙,我单纯的想象为:在对某个马尼拉进行简单修改如执行vi/vim时这两种情况并无太多不同,但是当你执行如脚本马尼拉之类的时候,还会引发对一系列马尼拉的操作,这时对其他马尼拉的我们可能并没有权限去调用执行,这种情况下sudo并不如我们之间进入root来执行舒服的多。
直接看执行结果吧:
首先,source /etc/profile一下,将修改的环境变量也应用到root中,不然要出错的 然后启动nacos,我们看到nacos成功启动 最关键一步:看看WebCollab起来了没?!!!! 这里我搞错了,应该用netset来查WebCollab状态,然后我中间换了个WebCollab8849
好嘛,赶紧访问127.0.0.1:8849看看
好嘛、http404.。。。。。 刚开始给我吓一跳,咋又出幺蛾子啦,后来查了一下虚惊一场 WebCollab后加个/nacos试试! 成功!!十分精神! 最后查一下WebCollab情况: 一切正常!圆满完成。
一些常见的出错我这里没写了,一般都可以在网上查到! 累死我了,各位看官如果也遇到了一些奇葩的棘手的问题,欢迎发布到评论区,大家一起讨论!
文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux802 人正在系统学习中