故障是如何產生的???
公司年度電力檢修,周六周末停電兩天,周五下班對服務器進行關機,服務器關機死機導致關機不成功,強制關閉電源兩次,周一上班開服務器發現程序啟動以后不能訪問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_install_directory>/confluence/WEB-INF/classes/confluence-init.properties,指向HOME2
- 重啟Confluence
- 按照安裝指導正常配置,在數據庫配置頁面,指向第二步創建的數據庫
- 完成設置指導
- 關閉Confluence
- 這時就有一個完整的confluence.cfg.xml文件
- 把這個文件復制到HOME1文件夾中
- 變更數據庫鏈接到所需的數據庫DB1上
- 變更<confluence_install_directory>/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恢復正常。