前言
本次使用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 支持的数据库
数据库 | 版本 |
---|---|
PostgreSQL | 9.5+ |
MySQL | 5.7.8+(建议8.0+) |
MariaDB | 10.2.7+ |
SQLServer | 2012+ |
SQLite | 3.9+ |
1.1.2 注意事项
为了支持长期维护建议尽可能使用最新版本的PostgreSQL
需要创建一个空的数据库,最好是创建单独的用户连接到数据库
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
1.3 访问
访问 https://[ip]:30001
二、配置
2.1 首次安装
填写基本信息,设置管理员邮箱和密码
等待安装
接下来可以快乐地使用啦
2.2 基本配置
2.2.1 设置中文简体
下载中文简体语言包
选择之后应用即可
2.2.2 网站分析
2.2.2.1 百度统计
网站分析 -> 供应商 -> Baidu Tongji
创建百度统计应用: 百度统计
获取代码
<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被禁用
经过一番查询之后说在页面中添加 meta
配置
<meta name="referrer" content="strict-origin-when-cross-origin">
将代码填写到主题设置中的 Head
百度统计不生效的话直接跳过,使用 灵雀应用监控平台
进行监控
2.2.2.2 灵雀应用监控平台
创建应用
灵雀应用监控平台 - 「51LA」旗下应用监控分析平台:https://perf.51.la/
- 第一步:填写基本信息
- 第二步:安装代码
选择异步安装,复制整个代码片段
<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
部分
访问首页后过段时间就能查看监控数据了
2.2.3 设置公开的页面
取消定时任务中的发布状态
未登录的游客访问看到后提示 缺少访问权限
;具有写入权限的管理员是可以正常访问的
2.2.4 邮件
验证时发送方为腾讯企业邮箱,SMTP设置为 smtp.exmail.qq.com
,填写发件人邮箱的账号密码相关信息就可以了
发送测试邮件
查看邮箱信件可以看到如下信息
2.2.5 设置Gitlab同步
切换至存储 -> 目标 -> 选中Git
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
密钥配置到Gitlab中:SSH密钥 -> 添加SSH密钥 -> 粘贴生成的密钥串
2.2.5.2 配置Wiki.js
目标配置
属性 | 示例 | 说明 |
---|---|---|
Authentication Type | 选择ssh | |
Repository URI | ssh://git@[xxx.com]:port | gitlab仓库地址 |
Branch | wiki | 同步的分支 |
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即可
注意
若同步的时候出现如下错误消息
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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
解决方案
执行授权命令
chmod 600 /home/node/.ssh/id_rsa.pub
2.2.5.3 手动同步
执行 Force Sync
模块的 运行按钮
过一会儿就能在git参考查看同步的文件了
三、参考文档
Wiki.js
:https://docs.requarks.io/
Github
:https://github.com/requarks/wiki
- 本文作者: lightsolid
- 关于作者: 搜索关注公众号【轻实】,个人博客
- 版权声明: 本文著作权归作者所有,转载请注明出处!