XWiki在安装后需要进行一些配置,还需要安装插件,本文记录配置过程和安装的插件

XWiki的设置

安装完成后,对XWiki进行一些设置,需要使用管理员账号登录

首先需要说明xwiki的几个主要目录

  • xwiki的安装目录:

    • 如果是通过War包的方式安装,安装目录为tomcat-path/webapps/xwiki
    • 如果是通过Apt包管理方式安装,安装目录为/usr/lib/xwiki
  • xwiki的永久目录(即保存数据的目录)默认为:/var/lib/xwiki

  • xwiki的配置目录(仅通过Apt包管理安装时才会有):/etc/xwiki

可以通过搜索关键字查找xwiki目录、Solr目录和配置等

sudo find / -name xwiki
sudo find / -name solr
sudo find / -name managed-schema

此外,配置和依赖,如果可以,尽量在xwiki数据目录下修改,不要在安装目录修改,方便升级,否则升级xwiki后需要重新复制依赖包和修改配置

设置XWiki界面为中文

打开XWiki页面右上角的菜单,点击第一个进入右上角设置–>Content-Localization,将Default Language和 Support Language设置为中文(中国)

  • 设置为中文后,新创建的页面的属性LOCALE就是中文了
  • 搜索页面的结果列表中,默认只会展示页面LOCALE为中文No language这2种搜索结果,需要手动勾选未展示的搜索结果
  • 设置为中文后,右上角的搜索框不能展示搜索建议了(无论是搜索中文页面还是英文页面、搜索的关键字是中文还是英文),但是在搜索结果页面还是能搜索到结果
  • 设置为中文(Chinese)后,页面内容编辑器的文字是繁体字,想要展示简体字,Default Language应设置为中文(中国)
  • 设置为中文后,就搜不到页面LOCALE为中文的文章内容了,只能搜到文章标题,LOCALE为英文的页面内容还是可以搜到的,需要设置solr搜索引擎支持中文搜索

设置Solr支持搜索中文内容

如果将xwiki 的设置中的Default Language 设置为中文,就不能搜索到文档中的内容了,因为xwiki默认的solr搜索引擎不支持中文搜索(xwiki的搜索引擎也可以设置成database,测试发现设置database后,虽然可以搜索到文档内容,但是不会在搜索结果页面的列表中显示搜到的文档内容预览)。因此,最好的办法是修改solr配置以支持中文搜索

Solr中文搜索需要配置中文分词器,可以使用ik-analyzer-solrsmartcn分词器,这两个分词器的效果,没有感受到明显的差别,网上很多人使用ik-analyzer分词器

配置ik-analyzer分词器

  • 下载中文分词器ik-analyzer-solr,包括jar包和工程文件

  • 将jar包放入Solr服务的JettyTomcatwebapp/WEB-INF/lib/目录下,我是放到xwiki的永久目录:/home/username/xwiki/data/store/solr/search/lib(放到xwiki的安装路径/opt/tomcat/webapps/xwiki/WEB-INF/lib应该也是可以的),修改jar包的权限为tomcat

    chown tomcat:tomcat ik-analyzer-8.3.0.jar
    
  • 将下载的工程文件的resources目录下的5个文件放入Solr服务的JettyTomcatwebapp/WEB-INF/classes/目录下,我的目录是/opt/tomcat/webapps/xwiki/WEB-INF/classes,注意有3个文件是空的,不能使用rz命令上传,直接touch创建(这里可以设置stopword.dicext.dic文件的内容,在网上可以找到词库,我没有设置,留空的)

    ① IKAnalyzer.cfg.xml
    ② ext.dic
    ③ stopword.dic
    ④ ik.conf
    ⑤ dynamicdic.txt
    

    修改这些文件的权限

    chown tomcat:tomcat dynamicdic.txt ext.dic stopword.dic IKAnalyzer.cfg.xml ik.conf 
    
  • 编辑solr的配置文件vim /home/username/xwiki/data/store/solr/search/conf/managed-schema,添加以下内容。粘贴时,为防止格式排版错乱,可以在vim编辑器设置粘贴模式后再复制粘贴::set paste

    <!-- ik分词器 -->
    <dynamicField name="*_zh"  type="text_ik"    indexed="true"  stored="true" multiValued="true" />
    <dynamicField name="*_zh_CN"  type="text_ik"    indexed="true"  stored="true" multiValued="true" />
    <dynamicField name="*_zh_TW"  type="text_ik"    indexed="true"  stored="true" multiValued="true" />
      
      
    <!-- ik分词器 -->
    <fieldType name="text_ik" class="solr.TextField">
      <analyzer type="index">
          <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
          <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
          <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
          <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>
    

配置smartcn分词器

  • 下载smartcn分词器:https://repo1.maven.org/maven2/org/apache/lucene/lucene-analyzers-smartcn

  • 将jar包放入Solr服务的JettyTomcatwebapp/WEB-INF/lib/目录下,我是放到xwiki的永久目录:/home/username/xwiki/data/store/solr/search/lib(放到xwiki的安装路径/opt/tomcat/webapps/xwiki/WEB-INF/lib应该也是可以的),修改jar包的权限为tomcat

    chown tomcat:tomcat lucene-analyzers-smartcn-8.6.3.jar
    
  • 编辑solr的配置文件vim /home/username/xwiki/data/store/solr/search/conf/managed-schema,添加以下内容。粘贴时,为防止格式排版错乱,可以在vim编辑器设置粘贴模式后再复制粘贴::set paste

        <!-- smartcn分词器 -->
        <dynamicField name="*_zh"  type="text_smartcn"    indexed="true"  stored="true" multiValued="true" />
        <dynamicField name="*_zh_CN"  type="text_smartcn"    indexed="true"  stored="true" multiValued="true" />
        <dynamicField name="*_zh_TW"  type="text_smartcn"    indexed="true"  stored="true" multiValued="true" />
      
        <!-- smartcn分词器 -->
        <fieldType name="text_smartcn" class="solr.TextField" positionIncrementGap="100">
          <analyzer type="index">
            <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
            <filter class="solr.LowerCaseFilterFactory"/>
          </analyzer>
          <analyzer type="query">
            <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
            <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
            <filter class="solr.LowerCaseFilterFactory"/>
           </analyzer>
        </fieldType>
    

配置分词器后,重启xwiki

systemctl restart tomcat.service

最后重新创建索引。进入xwiki设置–>查询–>查询–>Action选择Reindex,点击Apply,等待索引创建完成,然后就可以搜索中文内容了

设置Office导入支持

安装libreoffice服务后,在xwiki创建页面时可以选择从office文件(doc、excel、ppt)导入到页面,还可以在页面编辑器中点击“+”–> import office file 导入到编辑器。不过不能完全保留源文档的全部格式特征。实际测试docxxlsx导入成功,pptx导入失败(后面发现是导入超时了,导入office非常耗内存和CPU,默认超时时间是60秒,在低配置的虚拟机上容易超时)

  • 安装libreoffice

    sudo apt-get install libreoffice
    
  • xwiki的配置文件中设置libreoffice的home路径,并设置在xwiki启动时自动启动libreoffice服务,编辑/opt/tomcat/webapps/xwiki/WEB-INF/xwiki.properties文件

    vim /opt/tomcat/webapps/xwiki/WEB-INF/xwiki.properties
    

    取消注释,设置参数

    openoffice.autoStart=true
    openoffice.homePath=/usr/lib/libreoffice/
    #设置超时时间十分钟,单位是毫秒,如不设置默认值是60秒
    openoffice.taskExecutionTimeout = 600000
    
  • 重新启动xwiki

    systemctl restart tomcat.service
    
  • 进入xwiki的设置-内容-Office服务,选择启动服务,如果没有检测到安装的office,可能是openoffice.homePath路径不对

  • 完成安装配置后,在xwiki创建页面时,类型选择区域就会多出一个Page from Office选项

遇到的问题

在导入PPTX格式的文档后,发现中文会显示成方框。这是因为libreoffice没有内置中文字体,在libreoffice的官网上有说明:https://zh-cn.libreoffice.org/download/fonts/,我们需要安装中文字体

  • 下载思源黑体思源宋体的中文zip压缩包,上传到服务器

  • 将zip压缩包复制到/usr/share/fonts目录下

    sudo mv SourceHanSansCN.zip SourceHanSerifCN.zip /usr/share/fonts/
    
  • 解压zip包,删除zip包

    sudo unzip /usr/share/fonts/SourceHanSansCN.zip
    sudo unzip /usr/share/fonts/SourceHanSerifCN.zip
    sudo rm /usr/share/fonts/SourceHanSansCN.zip
    sudo rm /usr/share/fonts/SourceHanSerifCN.zip
    
  • 更新字体缓存

    fc-cache -fv
    
  • 重新启动libreoffice服务,进入xwiki的设置–>内容–>Office服务,在操作一栏选择重新启动服务器,点击更新

设置编辑器支持修改字体和背景颜色

在编辑页面的时候,经常希望重点突出某些文字,给文字或背景设置颜色。发现在编辑器中找不到设置颜色的地方

XWiki自带的CKEdit编辑器禁用了颜色按钮,需要在设置中启用。进入设置–>Editing–>WYSIWYG Editor–>Disabled Plugins,取消选择colorbutton,保存即可

安装XWiki插件

推荐一些插件,注意插件名称中带pro的一般是收费插件,这里推荐的都是免费插件

  • Markdown语法,xwiki默认没有带markdown编辑,可以安装扩展支持
    • 安装扩展Markdown Syntax 1.2
    • 进入设置–>Syntaxes–>取消勾选Markdown 1.2,保存即可
  • 流程图插件Diagram Application,安装后支持使用draw.io创建各种流程图
  • 管理工具Admin Tools Application 可以使用管理工具应用程序来验证XWiki安装的一些基本设置(前提是xwiki的安装使用Tomcat、MySQL)
  • 问答应用FAQ Application,可以将一些常见的问题记录到xwiki中,供查阅

遗留问题

完成配置和安装后,就可以投入使用了,使用中发现的一些问题记录

  • 搜索结果页面,匹配的关键字颜色背景是黑色,以前好像是黄色,但是不影响使用
  • 搜索框建议输入中文不会给出提示,查看接口发给Solr的请求中,传的关键字是在中文输入法选词时输入的字母,不是实际输入到搜索框的中文
  • 即使配置了Solr的中文分词,也不能搜索到附件的中文名称,猜测可能是managed-schema中未配置的问:/home/username/xwiki/data/store/solr/search/conf/managed-schema
  • 中文汉化不完全,可以支持贡献汉化,地址:https://l10n.xwiki.org/projects/

参考

Solr doesn’t index Chinese content

solr配置中文分词器

XWiki的中文配置笔记

ik-analyzer-solr

中日韩字体

Office Importer Application