linux下bitnami-redmine中安装插件redmine_dmsf总结

安装插件redmine_dmsf总结

  • 背景
  • 环境
    • linux系统版本
    • redmine版本
    • dmsf插件版本
  • 安装过程
    • 安装redmine
    • 安装dmsf插件
  • 在redmine中使用全文搜索
    • dmsf幕后原理

      • Xapian和Omega基础知识
      • 手动建立/查询索引数据库
    • dmsf配置修改
    • 使用全文搜索
    • 自动构建索引数据库
  • 总结
  • 附录A 安装插件遇到的问题总结
    • 无法访问https://rubygems.org

      • 解决方法1 - 翻墙
      • 解决方法2 - 使用RubyGems镜像
      • 解决方法3 - 手动下载源码编译/安装
    • 安装nokogiri依赖库老是报错

背景

redmine自带的搜索功能,只能搜索wiki,无法搜索附件文件里的内容。对于公司的大数据、知识库来说,是无法忍受的。为此找了一个插件dmsf来解决这个问题,dmsf支持全文搜索功能(即fulltext search)。


环境

linux系统版本

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04 LTS
Release:    12.04
Codename:   precise
#
# cat /proc/version
Linux version 3.2.0-23-generic-pae ([email protected]) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu4) ) #36-Ubuntu SMP Tue Apr 10 22:19:09 UTC 2012
#

redmine版本

bitnami-redmine-3.2.1-0-linux-installer.run

dmsf插件版本

redmine_dmsf-1.5.6,中文称之为“文档管家”插件。


安装过程

安装redmine

安装bitnami-redmine-3.2.1-0-linux-installer.run过程很简单,略过。

安装dmsf插件

在bitnami-redmine下如何安装插件,先阅读《How to install a plugin on Redmine.doc》,充实下基础。

安装dmsf插件,参考插件里的说明文档,根据文档要求,必须先安装一些依赖工具:

# sudo apt-get install xapian-omega libxapian-dev xpdf xpdf-utils antiword unzip catdoc libwpd-tools libwps-tools gzip unrtf catdvi djview djview3 uuid uuid-dev xz-utils

另外需要注意的是,在plugins目录下redmine_dmsf-1.5.6文件夹要重命名为redmine_dmsf,如下所示:

# tree -L 2 /opt/redmine-3.2.1-0/apps/redmine/htdocs/plugins
/opt/redmine-3.2.1-0/apps/redmine/htdocs/plugins
├── README
└── redmine_dmsf
    ├── app
    ├── assets
    ├── CHANGELOG.md
    ├── config
    ├── db
    ├── dmsf_user_guide.odt
    ├── extra
    ├── Gemfile
    ├── init.rb
    ├── lib
    ├── README.md
    └── test

8 directories, 6 files

在安装的过程中,遇到了一些问题,记录下来,详见附录A。


在redmine中使用全文搜索

dmsf插件安装完毕,重启redmine,此时还无法使用全文搜索功能(即无法搜索附件内容),需要先创建文件索引(包括文件名索引和文件内容索引)。DMSF是使用Xapian和Omega工具来创建索引的。先弄清楚dmsf的原理。

dmsf幕后原理

Xapian和Omega基础知识

在继续之前,先来认识Xapian和Omega,引用IBM技术文档的内容:用 Xapian 和 Omega 读取并索引文档

存储并提供对文档和信息的访问是很多公司都面临的一个日益严重的问题。解决这个问题有很多解决方案,包括 wikis 和结构化了的文档存储,但全文本索引通常是从大量文档中获取信息的惟一方式。Xapian 是一种开源工具,可读取并索引文档,包括 HTML、PDF、 OpenOffice、Microsoft? Office? 等格式的文档,而且还具有一些可编程的接口来添加和抽取信息,包括 Java? 技术,这样一来,您就可以在部署了 WebSphered? 的环境内支持文档索引。在本文中,了解如何安装并部署一个典型的 Xapian 来索引各种信息,然后再来看看使用不同的语言绑定抽取信息的几个例子。这个过程将会侧重如何在一个典型的公司内部网环境内使用它。本文还将提供一个有关 Omega 的快速概览,Omega 是一个定制工具,用来与 Xapian 的基础设施协作。

Xapian 和 Omega 是独立的两个组件,旨在相互协作来提供索引和搜索功能。Xapian 组件提供了核心的数据库功能(存储信息)以及搜索和检索系统来查找单词和单词组合(参见 参考资料)。

Omega 组件提供了一些工具来将不同格式的信息转化并解析成 Xapian 需要的原始格式以便它可以被索引。Omega 使用了多种工具,比如 pdftotext,然后再提交转化并过滤了的基于文本的信息,以便文档的索引和结构可以被标识并存储在 Xapian 数据库。Omega 是 Xapian 下载的一部分。

本地文件夹“Xapian和Omega基础知识”里搜集了一些基础知识,先把基础知识学扎实来再往下继续,磨刀不误砍柴工。

手动建立/查询索引数据库

为了检查插件安装的正确性,也为了加深对Xapian和Omega的理解,先来手动建立、查询索引数据库。

  • 建立索引数据库
# omindex --db dbname --url indexurl /home/files

dbname是自定义的数据库名(表现出来的是一个文件夹名),indexurl是自定义的索引信息的URL, /home/files下是你要建立索引的文件路径。执行后会在当前路径下生成一个文件夹dbname,那indexurl在哪儿呢?马上就看到它了。

  • 查询数据库

    从数据库dbname中检索含有“信息“的文档。

# quest --db=dbname 信息
Parsed Query: Xapian::Query(Z信息:(pos=1))
MSet:
67 [100%]
url=indexurl/f00153.txt
sample=2016 年 04 月 22 日 周五 出版 * * * * * *
type=text/plain
modtime=1604220123
size=56841

dmsf配置修改

dmsf插件安装完后,要保证以下两个地方的配置保持一致(如下所示):

  1. 插件配置:管理 -> 插件 -> DMSF -> 配置
  2. 配置文件:redmine_dmsf\extra\xapian_indexer.rb

有了前面章节的理论基础,改起来才能游刃有余,否者无从下手(我就在配置修改这地方这折腾了好久)。“redmine管理 -> 插件 -> DMSF -> 配置”如下图所示,我这里采用默认的配置,没有修改,而是修改redmine_dmsf\extra\xapian_indexer.rb文件以便让两者保持一致。

redmine_dmsf\extra\xapian_indexer.rb默认的配置只适合纯redmine,不适合bitnami-redmine,对于xapian_indexer.rb文件的修改,对比我本地保存的“xapian_indexer.rb_改后”和“xapian_indexer.rb_改前”,便可一目了然。改以下三个变量定义:

  • $redmine_root

    • 作用:redmine的安装路径
    • 修改:修改成bitnami-redmine的路径,如:$redmine_root = ‘/opt/redmine-3.2.1-0/apps/redmine/htdocs‘
  • $files
    • 作用:通过dmsf模块上传的文件存储路径。也是要建立索引的文件所在的路径。
    • 修改:要求redmine_root/files的路径要跟图表 1中的“文件存储目录”保持一致。我这里设置为:$files = ‘files/dmsf‘
  • $dbrootpath
    • 作用:索引数据库的存放路径。按关键词搜索时,就是在这个数据库中搜索的。
    • 修改:要求$dbrootpath的路径要跟图表 1中的“Index database”保持一致。我这里设置为:$dbrootpath = ‘/opt/redmine-3.2.1-0/apps/redmine/htdocs/files/dmsf_index‘

使用全文搜索

DMSF插件说明有如下描述:

### Fulltext search (optional)

If you want to use fulltext search features, you must setup file content indexing.

It is necessary to index DMSF files with omega before searching attempts to receive some output:

  1. Change the configuration part of redmine_dmsf/extra/xapian_indexer.rb file according to your environment.
  2. Run ruby redmine_dmsf/extra/xapian_indexer.rb -f

如何修改xapian_indexer.rb已经在上个章节中介绍了,配置完后,启动/opt/redmine-3.2.1-0/use_redmine控制台(不能用linux系统自带的控制台,会找不到ruby执行文件),执行以下命令:

# /opt/redmine-3.2.1-0/use_redmine
# cd /opt/redmine-3.2.1-0/apps/redmine/htdocs/plugins/
# ruby redmine_dmsf/extra/xapian_indexer.rb -v

这里额外补充下ruby 的附加参数说明:

# ruby xapian_indexer.rb –v                       # -v显示过程,索引所有项目的文件和代码仓库
# ruby xapian_indexer.rb -v –f                    # -f只索引文件
# xapian_indexer.rb -v –r                         # -r只索引代码仓库
# xapian_indexer.rb -v -r -p proj_Id1, proj_Id2   # -p索引指定项目

之后就可以在redmine中使用全文搜索功能,搜索附件文件内容了,如下图所示。

自动构建索引数据库

前面的索引数据库,是通过手动录入命令执行的。随时会有人在redmine上传文件,手动录入命令来构建索引数据库是不现实的。所以在DMSF的README文档中,有如下描述,就是创建cron任务定时构建索引数据库(这块我还没研究,但这也不是好办法啊,有没有提交了附件文档,就能感知到,并自动构建索引数据库呢?待以后研究)。

### Fulltext search (optional)

If you want to use fulltext search features, you must setup file content indexing.

It is necessary to index DMSF files with omega before searching attempts to receive some output:

  1. Change the configuration part of redmine_dmsf/extra/xapian_indexer.rb file according to your environment.
  2. Run ruby redmine_dmsf/extra/xapian_indexer.rb -f

This command must be run on regular basis (e.g. from cron)

Example of cron job (once per hour at 8th minute):

8 * * * * root /usr/bin/ruby redmine_dmsf/extra/xapian_indexer.rb -f

See redmine_dmsf/extra/xapian_indexer.rb for help.


总结

DMSF插件给redmine带来了全文搜索功能,但为了对比起搜索的准确性、完整性。我跟confluence相比了下(confluence是一款商业化的知识库管理系统),经过一番体验,发现redmine_dmsf-1.5.6存在以下几点不足:

  1. 同样的关键词、同样的PDF文档,在confluence上能搜索出来,而在redmine中搜索不出来。可见DMSF搜索完整性不够,不知道未来的DMSF会不会解决这个问题。
  2. DMSF无法做到,自动感知附件上传,以便自动触发构建文件索引。只能做到后台开启一个cron任务,定时的触发构建文件索引,实时性较差。(对于这点,有可能是我研究不够深入,如果我错了,欢迎指正!)

附录A 安装插件遇到的问题总结

无法访问https://rubygems.org

在执行bundle install –without development test postgresql sqlite –no-deployment的过程中,会检查plugins目录下插件的依赖性,并自动下载、安装所依赖的库。

这次安装,出现了无法访问https://rubygems.org的情况,导致依赖库无法下载安装。错误描述如下:

Gem::RemoteFetcher::FetchError: Errno::ECONNABORTED: An established connection was aborted by the software in your host machine. - SSL_connect (https://rubygems.org/gems/simple_enum-2.3.0.gem)

怎么解决该问题,有如下几种解决方法:

解决方法1 - 翻墙

RubyGems一直以来在国内都非常难访问到,在本地你或许可以翻墙,当你要发布上线的时候,服务器可不允许翻墙哦,你就很难搞了!所有这种方法在本地合适,服务器上不合适。

解决方法2 - 使用RubyGems镜像

因为墙的存在,催生了“RubyGems镜像”。官网https://rubygems.org访问不了,那就用镜像咯,如https://gems.ruby-china.org/(镜像随着时间的推移,有可能会变,自己百度“RubyGems镜像”搜索)。

你可以用 Bundler 的 Gem 源代码镜像命令设置,命令如下。

# bundle config mirror.https://rubygems.org  https://gems.ruby-china.org
#
# bundle config# 注释:设置完了可以用这条命令查看设置的效果

解决方法3 - 手动下载源码编译/安装

https://rubygems.org/gems中找到simple_enum指定的版本(这里是simple_enum-2.3.0.zip),把源码下载下来进行编译:gem build simple_enum.gemspec,(要启动use_redmine.bat进入特定的SHELL,不能用Windows或者Linux自带的cmd和shell,命令如下所示):

# gem build simple_enum.gemspec
  Successfully built RubyGem
  Name: simple_enum
  Version: 2.3.0
  File: simple_enum-2.3.0.gem
#

编译成功后安装:

# gem install --local simple_enum-2.3.0.gem
Successfully installed simple_enum-2.3.0
Parsing documentation for simple_enum-2.3.0
Installing ri documentation for simple_enum-2.3.0
Done installing documentation for simple_enum after 0 seconds
1 gem installed

安装nokogiri依赖库老是报错

第一次是提示没有安装g++编译器,(因为编译nokogiri需要用到g++)。这个问题通过安装g++解决。

安装完g++,编译过程提示找不到一个头文件和链接库。通过添加编译选项–use-system-libraries解决,如下所示,注意:

# bundle config        # 先用该命令查看原本自带的编译选项
#
# bundle config build.nokogiri "--use-system-libraries --with-opt-dir=/opt/redmine-3.2.1-0/common "    # 添加--use-system-libraries编译选项(要保留原本自带的哦)
#
# bundle config        # 注释:设置完了可以用这条命令查看设置的效果
时间: 2024-11-07 12:48:06

linux下bitnami-redmine中安装插件redmine_dmsf总结的相关文章

ElasticSearch概述及Linux下的单机ElasticSearch安装

原文地址:http://blog.csdn.net/w12345_ww/article/details/52182264.版权归原作者所有 这两天在项目中要涉及到ElasticSearch的使用,就上网去搜索了一些这方面的资料,发现elasticSearch的安装分为单机和集群两种方式.在本例中,我们重点介绍单机下的ElasticSearch的安装,亲测可用,记录下来与各位同仁分享. 一.ElasticSearch概述 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分

Linux下非root用户安装软件

下面简要说一下Linux下非root用户安装软件的一般流程:1. 获取源代码,一般是wget方式,ubuntu可以使用apt-get source来获取源代码.2. 解压源代码,一般使用tar -zxvf xxx.tar.gz即可3. 切换到解压后的目录,运行 ./configure.其选项可以通过 ./configure –help来获取,非root用户下最重要的应该是定义安装目录,即应该定义 ./configure –prefix=/path/to/bin, 对于一些依赖库,可能还需要使用

[转载]linux下编译php中configure参数具体含义

编译N次了   原来这么回事 原文地址:linux下编译php中configure参数具体含义作者:捷心特 php编译参数的含义 ./configure –prefix=/usr/local/php                      php 安装目录 –with-apxs2=/usr/local/apache/bin/apxs –with-config-file-path=/usr/local/php/etc      指定php.ini位置 –with-mysql=/usr/local

Linux学习笔记——虚拟机中安装VMware Tools

0 前言 VMware Tools是VMware虚拟机中自带的一种增强工具,只有在VMware虚拟机中安装好了VMware Tools,才能实现主机与虚拟机之间的文件共享,实现文件在虚拟机之间的复制粘贴. 最近购买了周立功的一款EasyARM开发板,作为树莓派Linux学习的补充.在虚拟机中安装了周立功提供的ubuntu镜像,总觉得在主机和PC机之间直接复制粘贴才爽,所以又安装了Vmware Tools.     [相关博文] [ Linux学习笔记--vmware plarer中安装ubunt

linux下中文输入法的安装

今天,在LinuxSLC5.3上安装了中文输入法,过程如下:原文出自[比特网],转载请保留原文链接:http://soft.chinabyte.com/os/102/11459102.shtml 1.安装中文字体库 yum install "font-chinese" 2.安装scim输入法 yum install "scim*" 3.安装scim-lang-chinese,scim-pinyin yum install scim-lang-chinese scim

Linux下的Oracle 11gr2安装完成的的自启动操作。

Linux下的Oracle在安装结束后是处于运行状态的.重启机器后,Oracle不会像在Windows下那样将Oracle添加到Windows服务,在linux下需要手动启动Orcle服务 以oracle用户下,执行下面的命令 进入sqlplus $ sqlplus /nolog 以sysdba的身份连接到数据库,并启动Oracle数据库引擎 SQL> conn /as sysdba SQL> startup 退出sqlplus,运行Listener SQL> exit $ lsnrct

Linux下指定版本编译安装LAMP

说明: 操作系统:CentOS 6.5 64位 需求: 编译安装LAMP运行环境 各软件版本如下: MySQL:mysql-5.1.73 Apache:httpd-2.2.31 PHP:php-5.2.17 具体操作: 准备篇 一.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables #编辑防火墙配置文件 # Firewall configuration written by system-config-firewall # Manual customiz

【转】Linux下Android ADB驱动安装详解

原文网址:http://blog.csdn.net/zhenwenxian/article/details/5901350 Linux下Android ADB驱动安装详解 概述 最近由于内置的合作商比较多,本人使用的Ubuntu系统好多厂商的Android手机都无法正确的识别,经过一番折腾,和查阅SDK,现把Linux下ADB驱动配置的方法和当中会遇到的相关问题的解决方法整理出来贡献给大家. Linux下使用手机USB调试模式连接ADB进行Android程序的调试,配置驱动没有Windows来的

关于linux下卸载apache后安装apache

事实说明,好记性不如烂笔头,更何况没有好记性就更需要做一些必要的记录了,因为随着时光的流逝,很多事情会渐渐的忘记,这时如果看一下之前的笔记就能事半功倍了! 以前在linux下配置了一个系统监视软件zabbix,总体用起来还不错,因为需要在网页端显示,所以需要搭建lamp环境,然后配置apache2使打开本地网页就显示那个为主页,以后就没再碰过,也没做记录,当时的配置文件和信息早已经忘记,后来胡搞了一通,发现apache服务运行不了了,打开里面的配置文件发现里面都是空的,没有任何信息,于是我开始了