今天算是把nacos的奇葩坑踩了个遍,做个归总吧,留个下一个被折磨的幸运儿
首先,如果你用
sh ./startup.sh 出现错误,那么请先尝试:
sh ./startup.sh -m standalon(设置单机模式,nacos默认集群模式)
若仍然报错,请尝试:
bash -f ./startup -sh -m standalon
如果经过上面跑通了,nacos注册中心也能正常访问,恭喜你。没跑通的倒霉蛋就往下看看吧。
今天踩的这几个坑吧,奇葩,网上已经发布过的那些常见坑一个都没遇到,呜呜呜
坑点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=***
当然,如果你仍然需要jre的话,应当也是有解决办法的:
(摘自其他)
在java根目录下执行:
sudo bin/jlink --module-path jmods --add-modules java.desktop --output jre
生成对应的JRE
言归正传,大部分情况下只设置JAVA_HOME足够了
下面是确定路径的过程:
which java
一般情况下你会得到输出:/usr/bin/java
继续:
ls -lrt /usr/bin/java
得到输出:/usr/bin/java -> /etc/alternatives/java
继续
ls -lrt /etc/alternatives/java
得到输出:/etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-amd64/bin/java
这个时候我们已经得到了java的安装路径:
/usr/lib/jvm/java-11-openjdk-amd64
那么,终端vim /etc/profile
在文件底部插入
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
保存退出后在当前终端:
source /etc/profile 使设置生效
最后再次启动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
好的!很精神!!我们成功了。哈哈哈,开个玩笑,有些时候这里只是看起来成功了哈哈哈
如果你访问127.0.0.1:8848成功,那么你可以走啦,没有的话接着往下看吧
3.又是一个坑:nacos启动后无法访问注册中心!!!
图我忘记截屏了:
页面大概输出就是这样的信息:
Firefox can't establish a connection to the server at ip:port
首先,这情况的话查看你的防火墙是否关闭,没有关闭的关一下,然后再次测试,当然,,,这玩意一般是默认关闭的
那么接下里查一查端口吧
我们知道,nacos默认使用8848端口,那么考虑一下是否端口冲突了,冲突的话你换个端口就行了
修改默认端口的话,在nacos文件夹中:vim /conf/application.properties进行修改
sudo netstet -anp|grep 8848
如图,8848端口根本就没开,,,晕了啊,服务不是启动了吗,难受
这时候咋个办嘞,su切入root执行nacos启动!!!
进入root目录下与用户目录下使用sudo执行命令时还是有很多不同的,要我解释的话也不太能叙述整套完备的逻辑,目前还在继续探索中
权限的问题很奇妙,我单纯的想象为:在对某个文件进行简单修改如执行vi/vim时这两种情况并无太多不同,但是当你执行如脚本文件之类的时候,还会引发对一系列文件的操作,这时对其他文件的我们可能并没有权限去调用执行,这种情况下sudo并不如我们之间进入root来执行舒服的多。
直接看执行结果吧:
首先,source /etc/profile一下,将修改的环境变量也应用到root中,不然要出错的
然后启动nacos,我们看到nacos成功启动
最关键一步:看看端口起来了没?!!!!
这里我搞错了,应该用netset来查端口状态,然后我中间换了个端口8849
好嘛,赶紧访问127.0.0.1:8849看看
好嘛、http404.。。。。。
刚开始给我吓一跳,咋又出幺蛾子啦,后来查了一下虚惊一场
端口后加个/nacos试试!
成功!!十分精神!
最后查一下端口情况:
一切正常!圆满完成。
一些常见的出错我这里没写了,一般都可以在网上查到!
累死我了,各位看官如果也遇到了一些奇葩的棘手的问题,欢迎发布到评论区,大家一起讨论!