01事情背景
最近,公司另外一个场地的同事需要访问Jira和confluence,由于网络策略等一系列不让说的原因,运维同事让我换端口,杯具因此而生
02操作步骤
Jira和confluence的换端口操作都很简单,进入安装目录的conf文件夹,打开server.xml,修改connect port,重启服务即可,以下以confluence为例:
安装目录
cd /opt/atlassian/confluence/conf/
vim server.xml
找到原来设置的端口2280,改成10080
Jira的操作类似,将原端口由8088改成10081
重启服务
cd /opt/atlassian/confluence/bin
sh shutdown.sh && sh startup.sh
此时,jira和confluence的url分别变成:
Jira : http://181.137.128.32:10081
Confluence : http://181.137.128.32:10080
登陆页面端访问
发现均可以打开页面,但是confluence无法登陆!!!
不论使用管理员账户还是普通账户,登录Jira正常,但是登录confluence都提示账号或密码错误,反复核对确认输入没错后还是这种现象,心慌了!!!
查看日志文件,这里要说一下,jira和confluence的启动日志和操作日志是分别记录在不同的文件中。
启动日志:/opt/atlassian/confluence/logs/catalina.out
操作日志:/var/atlassian/application-data/confluence/logs/atlassian-confluence.log
这里查看操作日志:
less /var/atlassian/application-data/confluence/logs/atlassian-confluence.log
最先开始的是这个错误:
2019-09-24 03:34:07,027 ERROR [HealthCheck:thread-5] [confluence.healthcheck.eol.EolSupportHealthCheck] check An error occurred when performing the EOL check
java.net.UnknownHostException: marketplace.atlassian.com: Name or service not known
问题提示markpalce.atlassian.com解释不到,但是这个问题已经存在很久了,之前也没有影响使用,所以可以忽略
接着往下看
不知道什么鬼的错误,先忽略
终于找到一个很有用的信息;
Application failed to authenticate
因为confluence的用户是全部托管在jira里面,目前jira登陆正常,confluence登陆不正常,应该是confluence无法获取jira的应用信息,要想Jira和confluence应用互通,jira和confluence应做如下操作:
Jira:
Jira管理-用户管理-jira用户服务器,增加confluence的应用链接
然后confluence做同样操作:
一般管理-用户-用户目录(这里是后续操作了,不知道为啥变成了英文)
但是目前的问题是confluence无法登进去。。。
这里接触到了confluence的恢复模式
1 关闭confluence服务
2 进入Bin文件夹,找到setnev.sh
3 加入这么一段
#recovery_admin
CATALINA_OPTS="-Datlassian.recovery.password=6789@jkl${CATALINA_OPTS}"
即启动恢复模式,用户名为:recovery_admin 密码为 6789@jkl
4 通过<安装目录>\bin\start-confluence.sh脚本启动confluence(这里千万不要用服务的方式启动)
5 用户名为:recovery_admin 密码为 6789@jkl 登陆confluence重复jira和confluence的用户服务配置操作
当在confluence中点击同步成功后,即代表confluence和jira已经互通了。
退出恢复模式,使用之前的账号登陆,问题解决。
最后记得注销setnev.sh里加入的那两段,关闭恢复模式
03事后总结
首先非常感谢公司架构师龙哥的帮忙,才解决了这个问题。
其次,对jira和confluence有了新的认识,confluence同步jira用户需要制定端口,修改会影响数据同步,但据说集成crowd可以解决这个问题,后续准备尝试集成crowd,作统一用户管理