腾讯轻量应用服务器CentOS+宝塔面板安装Wiki.js并添加中文检索支持

安装Wiki.js

以下是Wiki.js 2.x.x 的安装步骤。

  1. 下载wiki.js网站
    按照官方Linux版本安装说明操作,文档中第一步是通过后台命令行下载wiki.js网站压缩包,由于使用了宝塔面板我们可以变通一下,使用浏览器下载这个资源,并在之后通过宝塔手动放到网站路径下。

    https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
    
  2. 在宝塔面板中安装必要的支持环境
    在软件商店中,搜索并安装 Nginx Node.js版本管理器 PostgreSQL管理器,其中PostgreSQL数据库是wiki.js强烈推荐使用的数据库,会支持全部的功能,所以我们选择使用这个数据库。
    而后在Node.js版本管理器的设置界面中安装nodejs14.x.x版本,在PostgreSQL管理器安装PostgreSQL14.2版本。

  3. 安装创建数据库
    在刚刚安装好的PostgreSQL管理器配置界面中选择数据库列表,点击添加数据库按钮,这里因为是要给wiki.js使用,所以我们为数据库起名叫 wiki,用户名也是wiki。 在这里插入图片描述

  4. 新建网站目录
    在宝塔面板的文件选项卡中,在默认打开的网站路径 /www/wwwroot/ 中新建一个文件夹叫wiki,然后进入文件夹下把我们之前下载的wiki.js网站文件拖入并解压在此路径下。解压完成后就可以把压缩包删了。

  5. 创建nodejs项目网站
    在宝塔面板中选择网站选项卡,并进入node项目,选择添加Node项目。
    项目名称我们这里设为wiki,端口号设置为wiki.js默认使用的端口3000,点击项目目录选择上一步的路径文件夹。其他参数按照需求配置。
    点击提交后宝塔会自动下载依赖,但其实nodejs网站包已经把需要的依赖做好了,在开始自动安装依赖后我们马上刷新一下界面打断安装即可。
    在这里插入图片描述

  6. 配置wiki.js

    在网站文件路径下,将 config.sample.yml 改名为-> config.yml,然后双击打开在宝塔面板中编辑。最核心的,要将数据库配置改为我们之前的数据库用户和密码。其他的部分参考官方wiki即可:https://docs.requarks.io/install/config

      # PostgreSQL / MySQL / MariaDB / MS SQL Server only:
      host: localhost
      port: 5432
      user: wiki
      pass: <password>
      db: wiki
      ssl: false
    
  7. 启动网站
    在一切完成后,我们就可以在宝塔的网站选项卡中重新启动wiki.js了。如果之后网站有什么报错等内容我们可以通过网站配置中的项目日志查看信息定位问题。
    在这里插入图片描述

  8. 最后记得在云服务后台的防火墙中将3000端口打开,我们就能够通过外网IP+3000端口访问了。

     首次进入时会要求设置管理员账户等信息,按照提示完成即可。
     ![在这里插入图片描述](https://img-blog.csdnimg.cn/63b463784d4f4da0a68646cab99f3ccd.png)
    

添加中文检索支持

在 wiki.js 后台中,我们在搜索设置中选择 PostgreSQL数据库,可以看到下拉菜单中是没有中文选项的,我们需要为PostgreSQL数据库安装中文搜索插件,并在wiki.js配置中加入中文选项。
在这里插入图片描述

补齐宝塔面板安装的PostgreSQL缺失的库和插件

由于宝塔面板安装的PostgreSQL缺少一些库和自带插件,会导致我们后面执行 CREATE EXTENSION pg_trgm; 语句时报错,我们还需要在终端中手动安装一个 PostgreSQL 并将其库和插件复制进入宝塔面板安装的PostgreSQL中,最后再将手动安装的 PostgreSQL 删除。

  1. 在服务器终端中,添加 PostgreSQL RPM 服务器

    sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

  2. 安装postgresql14-contrib

    sudo yum install -y postgresql14-contrib

  3. 复制通过终端安装的 PostgreSQL 的库文件和插件 到宝塔面板安装的 PostgreSQL 安装目录里

    sudo awk 'BEGIN { cmd="cp -ri /usr/pgsql-14/share/extension/* /www/server/pgsql/share/extension"; print "n" |cmd; }'
    sudo awk 'BEGIN { cmd="cp -ri /usr/pgsql-14/lib/* /www/server/pgsql/lib/"; print "n" |cmd; }'
    
  4. 卸载通过终端安装的 PostgreSQL

    sudo yum remove -y postgresql14-contrib

安装中文插件 zhparser

  1. 安装 scws
    scws 中文分词系统是 zhparser 编译安装的必要内容。使用下方指令下载并编译安装 scws。

    wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2
    tar xvjf scws-1.2.3.tar.bz2
    cd scws-1.2.3
    sudo ./configure
    sudo make install
    
  2. 安装 zhparser
    注意在这步中需要使用 PG_CONFIG 来指定 pgsql 的 pg_config 文件路径,否则运行会报错。
    clone 项目时腾讯云莫名抽风下载不动,最后我是通过手动下载压缩包并通过面板扔到了服务器上。

    git clone https://github.com/amutu/zhparser.git
    cd zhparser
    sudo PG_CONFIG=/www/server/pgsql/bin/pg_config make
    sudo PG_CONFIG=/www/server/pgsql/bin/pg_config make install
    
  3. 全部安装已经完成,删除路径下无用的程序压缩包和解压后的文件。

在PostgreSQL中创建中文插件

  1. 进入PostgreSQL数据库
    以默认的管理员 postgres 登录

    cd /www/server/pgsql/bin
    sudo -u postgres ./psql
    
  2. 授予wiki用户管理员权限,并退出

    ALTER USER wiki WITH SUPERUSER;
    \q
    
  3. 使用wiki用户名登录数据库。注意一定使用 wiki 账户操作后续内容,否则创建的文本搜索配置并无法被 wiki 的账户使用,会导致 wiki.js 报错:text search configuration “chinese_zh” does not exist)

    ./psql -U wiki -d wiki

  4. 创建扩展

    CREATE EXTENSION pg_trgm;
    CREATE EXTENSION zhparser;
    

    输入指令\dFp查看扩展是否生效,列出文本搜寻剖析器,可以看到结果中已经出现了 zhparser

    postgres=# \dFp
             List of text search parsers
       Schema   |   Name   |     Description     
    ------------+----------+---------------------
     pg_catalog | default  | default word parser
     public     | zhparser | 
    (2 rows)
    
  5. 将扩展应用到配置中

    # 创建使用zhparser作为解析器的全文搜索的配置
    CREATE TEXT SEARCH CONFIGURATION pg_catalog.chinese_zh (PARSER = zhparser);
    # 往全文搜索配置中增加token映射
    ALTER TEXT SEARCH CONFIGURATION chinese_zh ADD MAPPING FOR n,v,a,i,e,l WITH simple;
    
  6. 微调解析器配置

    # 忽略标点影响
    ALTER ROLE wiki SET zhparser.punctuation_ignore = ON;
    # 短词复合
    ALTER ROLE wiki SET zhparser.punctuation_ignore = ON;
    
  7. 查看所有语言列表里有没有 chinese_zh

    postgres=# \dF
                   List of text search configurations
       Schema   |    Name    |              Description              
    ------------+------------+---------------------------------------
     pg_catalog | arabic     | configuration for arabic language
     pg_catalog | armenian   | configuration for armenian language
     pg_catalog | basque     | configuration for basque language
     pg_catalog | catalan    | configuration for catalan language
     pg_catalog | chinese_zh | 
     .
     .
     .
    (30 rows)
    
  8. 测试一下中文搜索功能

    postgres=# select ts_debug('chinese_zh', '白垩纪是地球上海陆分布和生物界急剧变化、火山活动频繁的时代');
                          ts_debug                      
    ----------------------------------------------------
     (t,"time,时语素",白垩纪,{},,)
     (v,"verb,动词",,{simple},simple,{是})
     (n,"noun,名词",地球,{simple},simple,{地球})
     (n,"noun,名词",上海,{simple},simple,{上海})
     (m,"numeral,数词",,{},,)
     (v,"verb,动词",分布,{simple},simple,{分布})
     (c,"conjunction,连词",,{},,)
     (n,"noun,名词",生物界,{simple},simple,{生物界})
     (d,"adverb,副词",急剧,{},,)
     (v,"verb,动词",变化,{simple},simple,{变化})
     (u,"auxiliary,助词",,{},,)
     (n,"noun,名词",火山,{simple},simple,{火山})
     (v,"verb,动词",活动,{simple},simple,{活动})
     (a,"adjective,形容词",频繁,{simple},simple,{频繁})
     (u,"auxiliary,助词",,{},,)
     (n,"noun,名词",时代,{simple},simple,{时代})
    (16 rows)
    
  9. 退出数据库,再次以postgres账户登录,并取消wiki账户的管理员权限

    \q
    ./psql -U postgres -d postgres
    ALTER USER wiki WITH NOSUPERUSER;
    \q
    

在Wiki.js 的搜索配置中添加中文选项

  1. 修改wiki路径中 /wiki/server/modules/search/postgres/definition.yml 文件,在文件中的 enum list 添加一个元素 chinese_zh
enum:
      ...
      - turkish
      - chinese_zh

在这里插入图片描述

  1. 宝塔面板中重启wiki.js服务器

在wiki.js中启用中文搜索

再服务重启后我们再次进入wiki.js的后台就可以看到有chinese_zh选项了,选择并应用。然后点击更新索引按钮,看到显示索引更新成功,说明我们就已经成功开启中文搜索功能了。

参考文献
[1] 支持中文全文搜索的wiki.js
[2] centos7 postgresql13 安装 zhparser,配置中文全文检索
[3] 在宝塔的Postgre下 安装插件(扩展)时报错问题
[4] CentOS安装PostgreSQL14
[5] wiki.js官方文档

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值