故障是如何产生的???
公司年度电力检修,周六周末停电两天,周五下班对服务器进行关机,服务器关机死机导致关机不成功,强制关闭电源两次,周一上班开服务器发现程序启动以后不能访问confluence页面,错误信息如下:
程序启动失败后,访问页面返回这么个玩意儿。去confluence官网查找问题分析原因
几个重要文件:
启动参数:/opt/atlassian/confluence/confluence/WEB-INF/classes/confluence-init.properties
confluence.home = /home/atlassian/application-data/confluence
配置文件:/home/atlassian/application-data/confluence/confluence.cfg.xml
发现系统崩溃重启导致了confluence.cfg.xml文件为空,启动时读取不到对应的数据库参数和配置(真是坑)。在备份文件里也找不到此文件,只找到了历史操作events数据。
切到文件目录下查看,果然文件内容为空。
参考了官网文件后1,找到了如下方法
- 备份数据库DB1和Confluence home文件夹HOME1
- 新建一个空数据库DB2,用于创建新的confluence.cfg.xml,稍后可以废弃。
- 创建一个新的空的home文件夹HOME2。编辑
/confluence/WEB-INF/classes/confluence-init.properties,指向HOME2 - 重启Confluence
- 按照安装指导正常配置,在数据库配置页面,指向第二步创建的数据库
- 完成设置指导
- 关闭Confluence
- 这时就有一个完整的confluence.cfg.xml文件
- 把这个文件复制到HOME1文件夹中
- 变更数据库链接到所需的数据库DB1上
- 变更
/confluence/WEB-INF/classes/confluence-init.properties 将home设置为HOME1 - 重启Confluence
授权码生成步骤比较坑,服务器下载confluence_keygen.jar此文件。
我个人是放在了自己电脑上直接双击打开此文件,输入授权码界面的server id ,name随便写
1、如上图,保存获取到的服务器ID,关闭confluence:
/etc/init.d/confluence stop
2、解压破解包,将confluence_keygen.jar 拷贝到windows。从/opt/atlassian/confluence/confluence/WEB-INF/lib中,拷贝atlassian-extras-decoder-v2- 3.2.jar到windows,并重命名为atlassian-extras-2.4.jar。
3、在windows下,生成License Key。
cmd 中执行:
java -jar confluence_keygen.jar
然后把上面保存的Server ID(服务器ID)粘贴进去,然后点击“.gen!”,保存生成的key。
4、打补丁。点击“.patch!”,选择第2步中重命名的atlassian-extras-2.4.jar,会生成新的atlassian-extras-2.4.jar,旧的jar包会被改为.bak。
5、上传新的atlassian-extras-2.4.jar和破解包下的Confluence-5.6.6-language-pack-zh_CN.jar、mysql-connector-java-5.1.39-bin.jar到/opt/atlassian/confluence/confluence/WEB-INF/lib,并且删除atlassian-extras-decoder-v2-3.2.jar。
6、启动confluence
/etc/init.d/confluence start
然后跟着配置向导到了数据库连接配置继续入坑,(数据库为mysql数据库))如下图:
点击红框处大概告诉我们是数据库的字符集编码有问题,于是进入数据库查看字符集,UTF-8没毛病啊,那就看数据库的配置文件吧,最后在配置里面加入了如下两行:
将默认字符集指定为UTF-8 :
collation-server=utf8_bin
将默认存储引擎设置为InnoDB:
default-storage-engine=INNODB
重启mysql服务。
检测通过,完成配置向导,按照前面12个操作步骤的7-12步继续操作完成此次整个故障的排查。confluence恢复正常。