k8s部署 wiki.js ,带中文分词

news2024/12/26 10:47:48

官网

https://js.wiki/

https://docs.requarks.io/install/docker-desktop

k8s postgres 安装

因为包含中文分词,要在原版的基础上增加分词插件。
这里直接使用别人已经 制作好的镜像
github 地址 : https://github.com/abcfy2/docker_zhparser
镜像地址: hub.docker.com/r/abcfy2/zhparser
这里选择 postgres 15 版本,即 docker pull abcfy2/zhparser:15-alpine
那么最后的 k8s postgres 配置文件如下

pod.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: postgres
  name: postgres
spec:
  replicas: 1
  revisionHistoryLimit: 5
  selector:
    matchLabels:
      app: postgres
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
        - env:
            - name: TZ
              value: Asia/Shanghai
            - name: POSTGRES_USER
              value: fox
            - name: POSTGRES_PASSWORD
              value: 123456
            - name: ALLOW_IP_RANGE
              value: 0.0.0.0/0
            - name: PGDATA
              value: /var/lib/postgresql/data
          #image: 'postgres:15-alpine'
          # 使用支持 中文分词的 
          image: 'abcfy2/zhparser:15-alpine'
          name: postgres
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 5432
              protocol: TCP
#          resources:
#            limits:
#              memory: 2Gi
#            requests:
#              memory: 2Gi
          volumeMounts:
            - name: vm-data
              mountPath: /var/lib/postgresql/data

      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      volumes:
        - name: vm-data
          hostPath:
            # 宿主机目录
            path: /www/websites/postgresql/data
            # hostPath 卷指定 type,如果目录不存在则创建(可创建多层目录)
            type: DirectoryOrCreate

服务 svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: postgres
  labels:
    app: postgres
spec:
  type: NodePort
  ports:
    - port: 5432
      targetPort: 5432
      nodePort: 30432
  selector:
    app: postgres

30432 : 为 外部端口

应用并生效

kubectl apply -f pod.yaml
kubectl apply -f svc.yaml

配置 wiki数据库

创建 wiki 使用 用户和库

# 登陆 fox用户
psql -U fox

设置数据库相关

-- 生成用户,数据库,给用户管理员权限(创建插件用)
-- 创建用户及密码
CREATE USER wikijs WITH PASSWORD 'wikijs';

-- 创建库及库所属人
CREATE DATABASE wikijs_db OWNER wikijs;

-- 设置权限
GRANT ALL PRIVILEGES ON DATABASE wikijs_db to wikijs;

-- 设置用户为超级用户
ALTER USER wikijs WITH SUPERUSER;

最后 exit 退出数据库命令行

设置 wikijs 用户下 库相关

登陆

psql -U wikijs -d wikijs_db

表相关操作

# 创建扩展表
-- https://docs.requarks.io/en/search/postgres
CREATE EXTENSION pg_trgm;

CREATE EXTENSION zhparser;
CREATE TEXT SEARCH CONFIGURATION pg_catalog.chinese_zh (PARSER = zhparser);
ALTER TEXT SEARCH CONFIGURATION chinese_zh ADD MAPPING FOR n,v,a,i,e,l WITH simple;

-- [二、PostgerSQL全文检索系统之中文支持_jjj的博客-CSDN博客](
-- https://blog.csdn.net/weixin_40746796/article/details/89209316
-- )
-- 忽略标点影响
ALTER ROLE wikijs SET zhparser.punctuation_ignore = ON;
-- 短词复合
ALTER ROLE wikijs SET zhparser.multi_short = ON;

-- 看看 chinese_zh 在不在
\dF
-- 测试一下
select ts_debug('chinese_zh', '白垩纪是地球上海陆分布和生物界急剧变化、火山活动频繁的时代');

最后 exit 退出数据库命令行

设置wikijs用户为普通用户权限

登陆

psql -U fox -d fox

表相关操作

-- UPDATE:之前提示 pg_catalog 没权限,这里再执行一次!
CREATE TEXT SEARCH CONFIGURATION pg_catalog.chinese_zh (PARSER = zhparser);
ALTER USER wikijs WITH NOSUPERUSER;

到此数据库配置完成

k8s 配置 wiki

pod.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: wiki
  name: wiki
spec:
  replicas: 1
  revisionHistoryLimit: 5
  selector:
    matchLabels:
      app: wiki
  template:
    metadata:
      labels:
        app: wiki
    spec:
      containers:
        - env:
            - name: TZ
              value: Asia/Shanghai
            - name: DB_USER
              value: fox
            - name: DB_PASS
              value: 123456
            - name: DB_NAME
              value: wiki_db
            - name: DB_HOST
              value: postgres
            - name: DB_TYPE
              value: postgres
            - name: DB_PORT
              value: "5432"
          image: 'ghcr.io/requarks/wiki:2'
          name: wiki
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 3000
              protocol: TCP
#          resources:
#            limits:
#              memory: 2Gi
#            requests:
#              memory: 2Gi
          volumeMounts:
            - name: vm-data
              mountPath: /var/lib/wiki/data

      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      volumes:
        - name: vm-data
          hostPath:
            # 宿主机目录
            path: /www/websites/wiki/data
            # hostPath 卷指定 type,如果目录不存在则创建(可创建多层目录)
            type: DirectoryOrCreate

svc.yml


apiVersion: v1
kind: Service
metadata:
  name: wiki
  labels:
    app: wiki
spec:
  ports:
    - port: 3000
      targetPort: 3000
  selector:
    app: wiki

ingress.yml

本步骤是设置 域名可以访问,我这的k8s ingress 使用的是 traefik

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: traefik
  name: wiki
spec:
  rules:
    - host: wiki.foxwho.com
      http:
        paths:
          - backend:
              service:
                name: wiki
                port:
                  number: 3000
            path: /
            pathType: ImplementationSpecific

应用并生效

kubectl apply -f pod.yml
kubectl apply -f svc.yml
kubectl apply -f ingress.yml

设置wiki 可以使用中文分词

进入pod 内部

kubectl exec -it `kubectl get pods | grep wiki |  awk '{print $1}'` bash

显示 definition.yml 文件内容,

cat /wiki/server/modules/search/postgres/definition.yml

把上面显示的内容复制到 /www/websites/wiki/search/definition.yml 文件中,如果没有目录的,要先创建好目录或文件
修改 /www/websites/wiki/search/definition.yml 文件 ,案例如下
主要是在 - turkish 下面一行增加- chinese_zh 格式要一致

请不要直接复制以下案例内容,因为有的版本该文件会增加其他功能字段

key: postgres
title: Database - PostgreSQL
description: Advanced PostgreSQL-based search engine.
author: requarks.io
logo: https://static.requarks.io/logo/postgresql.svg
website: https://www.requarks.io/
isAvailable: true
props:
  dictLanguage:
    type: String
    title: Dictionary Language
    hint: Language to use when creating and querying text search vectors.
    default: english
    enum:
      - simple
      - danish
      - dutch
      - english
      - finnish
      - french
      - german
      - hungarian
      - italian
      - norwegian
      - portuguese
      - romanian
      - russian
      - spanish
      - swedish
      - turkish
      - chinese_zh
    order: 1

最后重启 pod

kubectl rollout restart deploy wiki

配置 wiki

通过域名打开http://wiki.foxwho.com,开始配置wiki。配置比较简单,这里略。

配置 中文

如果要配置语言为中文的的,在这个页面下http://wiki.lanmps.com/a/locale
在这里插入图片描述

配置 中文搜索

wiki.js 管理 | 搜索引擎 | Database - PostgreSQL | Dictionary Languagechinese_zh
在这里插入图片描述

中文分词 参考 安装:
https://zhuanlan.zhihu.com/p/335359081

如果设置指定ip访问

设置 wiki 白名单

wiki-ipwhitelist.yml

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: wiki-ipwhitelist
spec:
  ipWhiteList:
    sourceRange:
      - 127.0.0.1/32
      - 192.168.0.1/32
      - 10.0.0.1/32
      - 114.114.114.114

114.114.114.114 :允许访问的ip
127.0.0.1/32,192.168.0.1/32,10.0.0.1/32 位局域网ip

ingress 白名单配置

ingress.yml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: traefik
    ##指定使用的 Middleware,规则是 {namespace名称}-{middleware名称}@{资源类型}
    traefik.ingress.kubernetes.io/router.middlewares: default-wiki-ipwhitelist@kubernetescrd
  name: wiki
spec:
  rules:
    - host: wiki.foxwho.com
      http:
        paths:
          - backend:
              service:
                name: wiki
                port:
                  number: 3000
            path: /
            pathType: ImplementationSpecific

应用并生效

kubectl apply -f wiki-ipwhitelist.yml
kubectl apply -f ingress.yml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/150384.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【 java 集合】Map 接口常用方法总结

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

【面试】70道Spring Boot面试题答案

文章目录PartAPartB更多请参考来源PartA 1 什么是springboot ? 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 创建独立的spring引用程序 main方法运行 嵌入的Tomcat 无需部署war文件 简化m…

进程控制【Linux】

1.进程终止 1.1.进程退出场景 代码运行完毕,结果正确代码运行完毕,结果不正确代码异常终止 1.2.进程常见退出方法 常见的正常中止: 从main函数return返回调用exit_exit 查看进程退出码: echo $?(查看最近一次的进程退出码) 测试代码: include &l…

【CDP】Cloudera Manager 记录一次 Service Monitor 内存溢出/使用率高的问题及解决方案

一、问题描述 最近发现我们的生产环境 Service Monitor 的监控报表数据无法正常显示,有很多的断点,有很多数据没有被正常采集到,最后定位到是 service monitor 的JVM 内存使用率过高,导致频繁GC,使得 Service Monitor…

Zynq PL DDR4读写测试工程

基于XCZU21DR-2FFVD1156E开发,本文介绍对PL DDR4的读写操作,代码全部经过上板测试。 目录 添加DDR4 IP Basic Mode and Interface & Clocking Controller Options Advanced Clocking VIO IP配置 ILA IP配置 General Options Probe_Ports(0..7…

爬虫的基本使用

文章目录urllib库1、基本使用2、一个类型、六个方法3、下载操作4、请求对象的定制5、get请求的quote方法6、get请求的urlencode方法7、post请求百度翻译8、post请求百度翻译之详细翻译小技巧:正则替换9、agax的get请求豆瓣电影第一页**10、agax的get请求豆瓣电影的前…

使用容器跑一个zabbix 监控另外一个虚机的基础项

目录 安装docker mysql数据库部署 拉取mysql镜像 运行mysql服务器 创建zabbix用户和数据库 进入docker容器登陆数据库 创建zabbix数据库创建zabbix用户 zabbix用户授权 复制mysql初始化数据库文件到容器 导入zabbix初始化数据 zabbix服务器部署 拉取镜像 运行容器 效果…

Linux环境下,JAVA环境调用C++的动态链接库so

1、使用QT开发一个动态链接库.so(本次使用linux环境,在windows下是.dll) 代码文件包含 testdll.cpp testdll.h testdll.pro testdll_global.h testdll.pro #------------------------------------------------- # # Project created by QtC…

苹果手机怎么清理内存垃圾?2个方法,快速解决

很多小伙伴在生活中会使用手机来看视频、聊天、学习等等。不管是苹果手机还是安卓手机,使用手机的时间长了,里面就会产生很多垃圾占据手机空间。苹果手机怎么清理内存垃圾?今天小编就来分享2个方法,教你快速解决。 一、删除不常用…

ansible(第五天)

五、实施任务控制 161 1.循环(迭代)--- loop --item 1.利用loop----item循环迭代任务 with_* 通过循环管理员不需要编写多个使用同一模块的任务。例:他们不需要编写五个任务来确保存在五个用 户,而是只需要编写一个任务来对含有…

R语言应用xgboost进行机器学习(2)

XGBoost 机器学习模型是一种高效且可扩的展的机器学习分类器,由 Chen 和 Guestrin 在 2016 年推广。XGBoost原理是是在决策树的基础上产生迭代,它以 boosting 的方式结合了多个决策树。通常创建每棵新树是为了通过梯度提升来减少先前模型的误差&#xff…

(day4) 自学Java——字符串

ctrlaltT 选择语句包裹 目录 1.API 2.String创建 3.字符串的比较 4.字符串——练习 (1):用户登录 (2)遍历字符串和统计字符个数 (3)字符串拼接和反转 (4)金额转换 (5)手机号屏蔽,游戏敏感词替换 5.StringBuilder 6.字符串相关类的底层原理 7.较难练习 …

苹果手机发热发烫怎么办?常见原因及解决办法

很多小伙伴都喜欢使用苹果手机,有时候正在玩着苹果手机的时候,发现自己的苹果手机温度很高,很烫手,这是怎么一回事呢?苹果手机发热发烫怎么办?别担心,下面跟着小编一起来看看苹果手机发热发烫常…

Java之集合概述、ArrayList的使用、常见API和集合案例

目录集合概述总结ArrayList集合快速入门总结ArrayList对于泛型的支持总结ArrayList常用API、遍历集合案例遍历并删除元素值总结存储自定义类型的对象元素搜索集合概述 总结 1、数组和集合的元素存储的个数问题? 数组定义后类型确定,长度固定集合类型可以不固定&a…

MyBatis 动态SQL使用

动态 sql 是Mybatis的强⼤特性之⼀&#xff0c;能够完成不同条件下不同的 sql 拼接。 1.<if>标签 运行结果&#xff1a; 2.<trim>标签 之前的插⼊⽤户功能&#xff0c;只是有⼀个 photo 字段可能是选填项&#xff0c;如果有多个字段&#xff0c;⼀般考虑使⽤&l…

VS Code安装教程

一、下载 1、官网 下载地址 2、下载 根据自己电脑型号下载&#xff0c;此处以Windows为例。 二、安装 1、下载完成后&#xff0c;直接点击安装包安装&#xff0c;即可。 2、开始安装&#xff0c;然后下一步 3、可以在此处自定义地址&#xff0c;然后下一步 4、默认设置&am…

数据结构课程设计

数据结构课程设计 文章目录数据结构课程设计1.1问题描述1.2需求分析1.3概要设计1.4详细设计1.5调试分析1.6测试结果1.7参考文献1.8源码1.1问题描述 编制一个能演示执行集合的交、并和差运算的程序。 要求&#xff1a; 集合元素用小写英文字母&#xff0c;执行各种操作应以对话…

iOS 系统校园无线WIFI认证上网指南

无为WiFi介绍一下IOS手机怎么连接校园网&#xff0c;本介绍为普通途径连接使用校园网&#xff0c;想了解绕过校园网请看其他贴文。1. 打开无线网络&#xff08;WLAN&#xff09;开关2. 连接校园无线WiFi网络进入“设置”->“无线局域网”->在无线WiFi信号列表中选择“SWJ…

【从零开始学习深度学习】40. 算法优化之AdaGrad算法介绍及其Pytorch实现

之前介绍的梯度下降算法中&#xff0c;目标函数自变量的每一个元素在相同时间步都使用同一个学习率来自我迭代。例如&#xff0c;假设目标函数为fff&#xff0c;自变量为一个二维向量[x1,x2]⊤[x_1, x_2]^\top[x1​,x2​]⊤&#xff0c;该向量中每一个元素在迭代时都使用相同的…

线程安全详解

线程安全 线程安全是多线程编程时的计算机程序代码中的一个概念。在拥有共享数据的多条线程并行执行的程序中&#xff0c;线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行&#xff0c;不会出现数据污染等意外情况。 多个线程访问同一个对象时&#xff0c;如…