前言

本次使用Docker + MySQL 8.0 的组合搭建内部知识库

什么是Wiki?

多人协作的写作系统

Wiki 是一种在网络上开放且可供多人协同创作的超文本系统,由美国人沃德·坎宁安于1995年首先开发,这种超文本系统支持面向社群的协作式写作,同时也包括一组支持这种写作。沃德·坎宁安将 Wiki 定义为“一种允许一群用户用简单的描述来创建和连接一组网页的社会计算系统”。 Wiki 站点由多人维护,每个人都可以发表自己的意见,或对共同的主题进行扩展与探讨。(百度百科

什么是Wiki.js?

Wiki.js 几乎可以在任何支持 Node.js 的系统上运行。
这意味着它可以在Linux,macOS,Windows以及Docker / Kubernetes和Heroku等容器解决方案上运行

一、开始

1.1 要求:服务器和数据库条件

需求最低配置
CPU单核运行良好,建议2核
内存1GB
存储空间至少1GB
数据库PostgreSQL 9.5 或更高版本
1.1.1 支持的数据库
数据库版本
PostgreSQL9.5+
MySQL5.7.8+(建议8.0+)
MariaDB10.2.7+
SQLServer2012+
SQLite3.9+
1.1.2 注意事项

为了支持长期维护建议尽可能使用最新版本的PostgreSQL

image-20220619142949029

需要创建一个空的数据库,最好是创建单独的用户连接到数据库

1.2 安装

本次不详细介绍 Docker 相关的配置,操作前需要准备好 Docker 环境

1.2.1 安装MySQL

已经有正常使用的MySQL可以跳过此步骤

拉取最新镜像

docker pull mysql:latest

启动容器

创建一个目录用于挂载数据 /data/mysql8.0/data /data/mysql8.0/conf.d

docker run --name mysql8.0 -p 10156:3306 \
	-e MYSQL_ROOT_PASSWORD=[替换成登录密码] \
	-v /data/mysql8.0/data:/var/lib/mysql \
	-v /data/mysql8.0/conf.d:/etc/mysql/conf.d \
	--restart always \
	-d mysql

创建 wiki 使用的账号

create user 'wiki'@'localhost' identified by '[your password]';
create user 'wiki'@'%' identified by '[your password]';

创建 wiki 数据库

CREATE DATABASE `wiki`;

MySQL 到这里就装备完毕了,创建 wiki 实例时使用刚刚配置的账号密码和数据库

1.2.2 安装Wiki.js

拉取wiki镜像

docker pull requarks/wiki

启动容器

数据库密码使用上面配置好的信息

docker run -d -p 30001:3000 --name wiki \
    -e "DB_TYPE=mysql" -e "DB_HOST=ip" \
    -e "DB_PORT=10156" -e "DB_USER=wiki" -e "DB_PASS=[your password]" -e "DB_NAME=wiki" \
    --restart always \
    requarks/wiki

官方示例

下面是一个命令示例,用于运行 Wiki.js 连接到 PostgreSQL 数据库

docker run -d -p 8080:3000 --name wiki --restart unless-stopped -e “DB_TYPE=postgres” -e “DB_HOST=db” -e “DB_PORT=5432” -e “DB_USER=wikijs” -e “DB_PASS=wikijsrocks” -e “DB_NAME=wiki” ghcr.io/requarks/wiki:2

或 MySQL 数据库

docker run -d -p 8080:3000 --name wiki --restart unless-stopped -e “DB_TYPE=mysql” -e “DB_HOST=db” -e “DB_PORT=3306” -e “DB_USER=wikijs” -e “DB_PASS=wikijsrocks” -e “DB_NAME=wiki” ghcr.io/requarks/wiki:2
1.2.3 使用Docker Compose

查看官方示例:使用 Docker Compose (requarks.io)

1.2.4 查看日志
docker logs --tail 100 -f wiki

image-20220619153115181

1.3 访问

访问 https://[ip]:30001

二、配置

2.1 首次安装

填写基本信息,设置管理员邮箱和密码

image-20220619153412131

等待安装

image-20220619153638350

接下来可以快乐地使用啦

image-20220619153718853

2.2 基本配置

2.2.1 设置中文简体

下载中文简体语言包

image-20220619154232641

选择之后应用即可

image-20220619154310131

2.2.2 网站分析
2.2.2.1 百度统计

网站分析 -> 供应商 -> Baidu Tongji

创建百度统计应用: 百度统计

image-20220619155442983

获取代码

image-20220619155740466

<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?[替换成你的key]";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>

配置后代码检查出现: referrer被禁用

image-20220619155929121

经过一番查询之后说在页面中添加 meta 配置

<meta name="referrer" content="strict-origin-when-cross-origin">

将代码填写到主题设置中的 Head

image-20220619160116114

百度统计不生效的话直接跳过,使用 灵雀应用监控平台 进行监控

2.2.2.2 灵雀应用监控平台

创建应用

灵雀应用监控平台 - 「51LA」旗下应用监控分析平台:https://perf.51.la/

  • 第一步:填写基本信息

image-20220619161324515

  • 第二步:安装代码

选择异步安装,复制整个代码片段

image-20220619161430508

<script>
  !(function(c,i,e,b){
  var h=i.createElement("script");
  var f=i.getElementsByTagName("script")[0];
  h.type="text/javascript";
  h.crossorigin=true;
  h.onload=function(){new c[b]["Monitor"]().init({id:"替换成你的key"});};
  f.parentNode.insertBefore(h,f);h.src=e;})(window,document,"https://sdk.51.la/perf/js-sdk-perf.min.js","LingQue");
</script>

代码片段粘贴到 Head 部分

image-20220619161537970

访问首页后过段时间就能查看监控数据了

image-20220619162351249

2.2.3 设置公开的页面

取消定时任务中的发布状态

image-20220619163359932

未登录的游客访问看到后提示 缺少访问权限;具有写入权限的管理员是可以正常访问的

image-20220619163713975

2.2.4 邮件

验证时发送方为腾讯企业邮箱,SMTP设置为 smtp.exmail.qq.com,填写发件人邮箱的账号密码相关信息就可以了

image-20220619172327150

发送测试邮件

image-20220619172511698

查看邮箱信件可以看到如下信息

image-20220619172603140

2.2.5 设置Gitlab同步

切换至存储 -> 目标 -> 选中Git

image-20220619173250299

2.2.5.1 将密钥添加到 GitHub

进入到容器内部

docker exec -it wiki /bin/bash

生成密钥(需要确认的对话直接按回车键跳过)

ssh-keygen -t rsa -C "admin@minelai.club"

查看密钥

cat /home/node/.ssh/id_rsa.pub

cat ~/.ssh/id_rsa.pub

image-20220619173733146

密钥配置到Gitlab中:SSH密钥 -> 添加SSH密钥 -> 粘贴生成的密钥串

image-20220619173903722

2.2.5.2 配置Wiki.js

目标配置

属性示例说明
Authentication Type选择ssh
Repository URIssh://git@[xxx.com]:portgitlab仓库地址
Branchwiki同步的分支
SSH Private Key Mode验证私钥类型,不填
A-SSH Private Key Path生成的密钥路径,不填
B-SSH Private Key Contents选择路径时不填,不填
Verify SSL Certificate勾选验证SSL
Username不填
Password/PAT不填
Default Author Email你的邮箱git提交日志里的邮箱
Default Author Name你的名字git提交日志里的名字
Local Repository Path不填
Git Binary Path

同步方向

在这里建议使用 推送到目标,其它两种方式中都会把初始化之后的其它不需要的文件同步到wiki中,我们只要保留新建的页面能同步到GitLab即可

image-20220619175512042

注意

若同步的时候出现如下错误消息

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '/home/node/.ssh/id_rsa.pub' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "/home/node/.ssh/id_rsa.pub": bad permissions git@gitlab.minelai.club: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. error: Could not fetch origin

image-20220619180423347

解决方案

执行授权命令

chmod 600 /home/node/.ssh/id_rsa.pub
2.2.5.3 手动同步

执行 Force Sync 模块的 运行按钮

image-20220619194857080

过一会儿就能在git参考查看同步的文件了

image-20220619194934668

三、参考文档

Wiki.js:https://docs.requarks.io/

Github:https://github.com/requarks/wiki

  • 本文作者: lightsolid
  • 关于作者: 搜索关注公众号【轻实】,个人博客
  • 版权声明: 本文著作权归作者所有,转载请注明出处!
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐