在平时的工做中,把常规工做进行文档整理很是重要,不管是平时工做处理或是工做交接,实时的维护文档资料能够提升工做效率。若是采用传统的TXT文档或者Word文档来记录的话修改查询都不太方便,采用在线Wiki能够更好的让你们实时地查看或者修改文档资料。java
在开源Wiki系统中,XWiki是作的最好的产品之一。由于它提供的功能与Confluence的功能很是类似,不须要学习任何语法格式,能够直接在线像编辑Word同样编辑WIKI页面。经过配置插件和扩展,还能够实现包括Markdown语法以内的各类延展功能。mysql
本文仅记录必须的安装步骤,更完整的信息请参考官方手册。web
CentOS 7sql
OpenJDK 1.8数据库
MySQL 5.7apache
Tomcat 7.0.90tomcat
XWiki 10.10bash
生产环境下,咱们须要把元数据保存在外部的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;
复制代码
为了在XWiki中实现导入导出Office Word文档,须要单独安装OpenOffice,并在XWiki中进行调用。
PS: 使用yum安装的OO目录是在 /usr/lib64/libreoffice/ ,记录下来后面要配置
yum install -y libreoffice libreoffice-headless
复制代码
根据运维规范,咱们须要使用一个独立的用户来运行XWiki。这里先创建用户和相关目录。
# 新建用户
useradd xwiki
passwd xwiki
# 创建用于保存XWiki附件的目录
mkdir /data/xwiki_data
chown -R xwiki.xwiki /data/xwiki_data
复制代码
由于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>
复制代码
前面的步骤中,咱们已经安装了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
复制代码
整个网页版的安装工做都在页面中完成,跟着向导一步一步操做。
标准插件包的安装过程比较慢,耐心等待十几分钟到几十分钟。。。(国外网站,你懂滴)
PS:若是由于网络缘由没法在线安装扩展和插件,可使用离线安装的方式。
看到下面的界面,就说明安装成功了。
默认不支持Markdown语法,因此咱们须要安装额外的扩展来实现。
扩展安装成功后,还须要在编辑器里面启用语法支持。以下图的配置,咱们只保留了Markdown语法。
公司内部使用,因此仍是换上公司的LOGO比较规范。
XWiki界面原生支持多语言,不过通过简单使用后发现,界面的中文化并不彻底,显得有点LOW,还不如用英文。
创建组和用户很简单,新建的全部用户都会默认属于一个叫 XWikiAllGroup 的组。从权限管理的角度出发,咱们须要把每一个用户归属到不一样的组当中。
公司内部使用的XWiki,在权限管理上要知足下列要求
举例,权限管理矩阵关系以下
组 \ 目录 | DIR-01 (G01根目录) | DIR-02(G02根目录) |
---|---|---|
Admin | full | full |
Group-01 | read, write | read |
Group-02 | read | read, write |
为了实现后面基于目录的细粒度控制,首先在全局取消默认的用户权限。以下图
以Dir01为例,选中指定目录后点选管理页面,以下图
为避免用户误操做修改根目录内容,先在页面级别取消组G01的编辑权限,以下图
而后给组G01赋予Dir01下级全部子目录的读写权限,以下图
具体的备份脚本本文暂不提供,仅说明安装前文进行安装以后须要进行备份的部分。完整的备份恢复请参考官方手册。
此处记录必须操做,更多详细的原理和流程请参看官方手册。
### 下载标准扩展
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 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
复制代码
在测试过程当中发现,若是XWiki意外挂掉,在后续启动的过程当中XWiki不能自动链接到OO服务器上。这个时候XWiki的基本功能都是正常的,可是不能导入导出Office文档。
若是在管理界面重启OO,会出现以下图的错误信息
查看系统日志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便可恢复。