XWiki_安裝和基礎配置企業級知識庫

wait4friend發表於2018-12-15

背景

在平時的工作中,把常規工作進行文件整理非常重要,無論是平時工作處理或是工作交接,實時的維護文件資料可以提高工作效率。如果採用傳統的TXT文件或者Word文件來記錄的話修改查詢都不太方便,採用線上Wiki可以更好的讓大家實時地檢視或者修改文件資料。

在開源Wiki系統中,XWiki是做的最好的產品之一。因為它提供的功能與Confluence的功能非常相似,不需要學習任何語法格式,可以直接線上像編輯Word一樣編輯WIKI頁面。通過配置外掛和擴充套件,還可以實現包括Markdown語法之內的各種延展功能。

本文僅記錄必須的安裝步驟,更完整的資訊請參考官方手冊

軟體版本

CentOS 7

OpenJDK 1.8

MySQL 5.7

Tomcat 7.0.90

XWiki 10.10

準備工作

建立資料庫和使用者

生產環境下,我們需要把後設資料儲存在外部的RDBMS中。我們先在MySQL中建立使用者和庫。

PS:本文不涉及MySQL的安裝,如果需要可以參考網上文章

-- 建立對應的DB和User
drop user xwiki;
drop database if exists xwiki;

-- 注意修改使用者名稱和密碼
create database xwiki default charset utf8;
grant all privileges on xwiki.* to 'xwiki'@'%' identified by 'xwiki'; 
flush privileges;
複製程式碼

安裝OpenOffice

為了在XWiki中實現匯入匯出Office Word文件,需要單獨安裝OpenOffice,並在XWiki中進行呼叫。

PS: 使用yum安裝的OO目錄是在 /usr/lib64/libreoffice/ ,記錄下來後面要配置

yum install -y libreoffice libreoffice-headless
複製程式碼

建立OS使用者

根據運維規範,我們需要使用一個獨立的使用者來執行XWiki。這裡先建立使用者和相關目錄。

# 新建使用者
useradd xwiki
passwd xwiki

# 建立用於儲存XWiki附件的目錄
mkdir /data/xwiki_data
chown -R xwiki.xwiki /data/xwiki_data
複製程式碼

配置Tomcat

因為XWiki執行過程中對容器有一些特殊的配置要求,所以我們使用一個獨立的Tomcat來承載XWiki服務。如果沒有現成的,我們這裡重新安裝一個。

### 使用二進位制安裝
unzip apache-tomcat-7.0.90.zip -d /usr/local/
mv /usr/local/apache-tomcat-7.0.90/ /usr/local/xwiki_app/
chown -R xwiki.xwiki /usr/local/xwiki_app

### 設定字符集為utf8
vi /usr/local/xwiki_app/conf/server.xml

#
<Connector port="8080"  
	URIEncoding="UTF-8" 
	protocol="HTTP/1.1"
	connectionTimeout="20000"
	redirectPort="8443" />
	
### 必須修改預設JVM記憶體大小,否則啟動XWiki後會報錯。
### 因為我們使用的是二進位制安裝Tomcat,所以修改bin/catalina.sh 這個檔案。
### 如果是yum安裝的需要修改如/etc/tomcat7/tomcat7.conf 這個檔案 (未驗證yum安裝這種方法)
vi /usr/local/xwiki_app/bin/catalina.sh

# 在開頭增加這樣一句
JAVA_OPTS="-Xmx2048m"

複製程式碼

安裝和啟動前配置

下載安裝

### 下載指定版本
wget http://nexus.xwiki.org/nexus/content/groups/public/org/xwiki/platform/xwiki-platform-distribution-war/10.10/xwiki-platform-distribution-war-10.10.war

### 安裝到webapps目錄下
unzip xwiki-platform-distribution-war-10.10.war -d /usr/local/xwiki_app/webapps/xwiki/

### 拷貝資料庫驅動程式
wget http://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.26/mysql-connector-java-5.1.26.jar

cp mysql-connector-java-5.1.26.jar /usr/local/xwiki_app/webapps/xwiki/WEB-INF/lib/
複製程式碼

配置資料庫

預設情況下XWiki使用的是自帶的HSQLDB,我們需要修改成使用外部MySQL。

### 資料庫相關的配置在hibernate.cfg.xml
vi /usr/local/xwiki_app/webapps/xwiki/WEB-INF/hibernate.cfg.xml

# 首先要註釋掉 Configuration for the default database 這部分,具體操作略

# 取消註釋並修改 MySQL configuration 這部分。修改IP,Port,User,Passwd資訊
    <property name="connection.url">jdbc:mysql://x.x.x.x:3306/xwiki?useSSL=false</property>
    <property name="connection.username">xwiki</property>
    <property name="connection.password">xxxxxx</property>

複製程式碼

配置OpenOffice

前面的步驟中,我們已經安裝了OO,在XWiki中進行配置就可以在啟動階段自動連線OO伺服器。

### 
vi /usr/local/xwiki_app/webapps/xwiki/WEB-INF/xwiki.properties

# 修改下列資訊
openoffice.autoStart=true
openoffice.homePath=/usr/lib64/libreoffice/
複製程式碼

配置附件管理

預設情況下,XWiki使用資料庫儲存附件,所以對檔案尺寸有一定限制。使用檔案系統儲存可以上傳更大的附件,所以我們修改為檔案系統。

### 啟用檔案系統儲存附件
vi /usr/local/xwiki_app/webapps/xwiki/WEB-INF/xwiki.cfg

# 修改下列資訊
xwiki.store.attachment.hint = file
xwiki.store.attachment.versioning.hint = file
xwiki.store.attachment.recyclebin.content.hint=file
xwiki.store.attachment.recyclebin.hint = file
xwiki.store.recyclebin.content.hint = file

### 指定存放附件檔案的目錄
vi /usr/local/xwiki_app/webapps/xwiki/WEB-INF/xwiki.properties

# 指定前面建立的目錄
environment.permanentDirectory=/data/xwiki_data/
複製程式碼

啟動後初始化配置

首次啟動XWiki的過程中,還需要完成一系列配置

### 首次安裝Tomcat後需要賦予sh檔案執行許可權
find /usr/local/xwiki_app/ -name *.sh | xargs chmod +x

### 啟動Tomcat
sh /usr/local/xwiki_app/bin/startup.sh
複製程式碼

整個網頁版的安裝工作都在頁面中完成,跟著嚮導一步一步操作。

image-20181211164006079

配置管理員賬號

image-20181211164110063

安裝常用外掛

標準外掛包的安裝過程比較慢,耐心等待十幾分鍾到幾十分鐘。。。(國外網站,你懂滴)

PS:如果因為網路原因無法線上安裝擴充套件和外掛,可以使用離線安裝的方式。

image-20181211164253921

看到下面的介面,就說明安裝成功了。

image-20181211174529633

配置Markdown

預設不支援Markdown語法,所以我們需要安裝額外的擴充套件來實現。

image-20181211174819234

擴充套件安裝成功後,還需要在編輯器裡面啟用語法支援。如下圖的配置,我們只保留了Markdown語法。

image-20181211175537996

配置自定義LOGO

公司內部使用,所以還是換上公司的LOGO比較規範。

image-20181211180006950

配置中文介面

XWiki介面原生支援多語言,不過經過簡單使用後發現,介面的中文化並不完全,顯得有點LOW,還不如用英文。

image-20181211180520436

日常維護

新建組和使用者

建立組和使用者很簡單,新建的所有使用者都會預設屬於一個叫 XWikiAllGroup 的組。從許可權管理的角度出發,我們需要把每個使用者歸屬到不同的組當中。

image-20181211181330814

設定目錄許可權

公司內部使用的XWiki,在許可權管理上要滿足下列要求

  • Admin組成員擁有系統管理許可權;
  • 每個組有專屬的文件目錄(如運維組有自己專屬的根目錄,技術組同理);
  • 普通使用者歸屬於各自的組;
  • 註冊使用者和匿名使用者擁有所有文件的讀許可權(特殊要求的除外);
  • 組成員對組目錄下的文件都有編輯許可權;
  • 文件作者及指定管理人員有文件的刪除許可權;

舉例,許可權管理矩陣關係如下

組 \ 目錄 DIR-01 (G01根目錄) DIR-02(G02根目錄)
Admin full full
Group-01 read, write read
Group-02 read read, write

全域性許可權

為了實現後面基於目錄的細粒度控制,首先在全域性取消預設的使用者許可權。如下圖

image-20181212112420529

目錄許可權

以Dir01為例,選中指定目錄後點選管理頁面,如下圖

image-20181212112608990

為避免使用者誤操作修改根目錄內容,先在頁面級別取消組G01的編輯許可權,如下圖

image-20181212112751251

然後給組G01賦予Dir01下級所有子目錄的讀寫許可權,如下圖

image-20181212112911968

備份恢復

具體的備份指令碼本文暫不提供,僅說明安裝前文進行安裝之後需要進行備份的部分。完整的備份恢復請參考官方手冊

  • MySQL中的xwiki庫。這裡儲存的是所有基礎資料。
  • /data/xwiki_data/ 目錄。這裡儲存的是所有附件檔案,以及一些執行時資料。
  • /usr/local/xwiki_app/webapps/xwiki/ 目錄。這裡是XWiki應用,因為修改了Tomcat的預設配置,所以建議把整個 /usr/local/xwiki_app/ 目錄進行備份。

Troubleshooting

離線安裝標準擴充套件包

此處記錄必須操作,更多詳細的原理和流程請參看官方手冊

### 下載標準擴充套件
wget http://nexus.xwiki.org/nexus/content/groups/public/org/xwiki/platform/xwiki-platform-distribution-flavor-xip/10.10/xwiki-platform-distribution-flavor-xip-10.10.xip

### 解壓縮xip檔案
unzip xwiki-platform-distribution-flavor-xip-10.10.xip -d /data/xwiki_data/extension/repository/

### 重啟XWiki
sh /usr/local/xwiki_app/bin/shutdown.sh
sh /usr/local/xwiki_app/bin/startup.sh
複製程式碼

Tomcat版本問題

在使用Tomcat 8.5.31測試過程中發現,後臺會出現字符集問題。換用7.0.90版本後問題不再出現。

PS:在官方手冊中這裡有對於Tomcat版本的需求,但是並沒有說8.5.31有問題。

警告 [xwiki/bin/download/Main/SolrSearch/dark-grey-disclosure-arrow-down.png] org.apache.catalina.connector.Response.setCharacterEncoding The encoding [] is not recognised by the JRE
 java.lang.IllegalArgumentException: java.io.UnsupportedEncodingException: The character encoding [] is not supported
複製程式碼

重啟OpenOffice

在測試過程中發現,如果XWiki意外掛掉,在後續啟動的過程中XWiki不能自動連線到OO伺服器上。這個時候XWiki的基本功能都是正常的,但是不能匯入匯出Office文件。

如果在管理介面重啟OO,會出現如下圖的錯誤資訊

image-20181213103756541

檢視系統日誌catalina.out中會出現類似這樣的錯誤資訊

# 類似這樣的錯誤資訊
Caused by: java.lang.IllegalStateException: a process with acceptString 'socket,host=127.0.0.1,port=8100' is already running; pid 9099
	at org.artofsolving.jodconverter.office.OfficeProcess.start(OfficeProcess.java:72)
複製程式碼

這個時候的解決辦法是,根據錯誤資訊中的OO程式號(如上圖中的pid),手工殺掉OO程式。

#### 查詢確認一下埠號對應的程式
lsof -i:8100

#
COMMAND    PID  USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
soffice.b 9099 xwiki   17u  IPv4 2322562      0t0  TCP localhost:xprint-server (LISTEN)

### 手工殺掉OO程式
kill -9 9099
複製程式碼

然後在管理頁面重啟OO即可恢復。

相關文章