推荐一套个人文档管理系统。
文章简介
一直想开发或者找一个开源的软件,功能就类似看云一样,用来搭建属于一套自己的文档管理系统,将自己平常的东西集中化管理,形成一个手册。于是找到了mindoc这样一款不错的文档管理系统软件。本文大致介绍一下如何安装,基本的功能介绍。
功能介绍
主要功能包括文档管理、导出、团队管理、文章管理等功能。特别适合团队或者个人做一个知识库文档管理系统。
搭建环境
mindoc支持Linux和Windows系统环境,我这里使用的是Linux系统。系统的配置信息如下: Centos7.4;MySQL5.7; MySQL属于独立搭建的,如果不会的可以参考一下个人之前分享的一篇文章Linux搭建MySQL环境 ,其他的东西也没了,属于一个纯净的Linux系统。
搭建步骤
拉取源码
源码地址
解压并配置环境
tar -zxvf mindoc_linux_amd64.zip
找到config目录下面的app.config文件,如果不存在该文件,应该有一个app.config.example文件,将该文件复制一分,命名为app.conf即可.
cp app.conf.example app.conf
#支持MySQL和sqlite3两种数据库,如果是sqlite3 则 db_database 标识数据库的物理目录
db_adapter="${MINDOC_DB_ADAPTER||mysql}"
db_host="${MINDOC_DB_HOST||127.0.0.1}"
db_port="${MINDOC_DB_PORT||3306}"
db_database="${MINDOC_DB_DATABASE||mindoc}"
db_username="${MINDOC_DB_USERNAME||root}"
db_password="${MINDOC_DB_PASSWORD||}"
我这里使用的MySQL,因此将adapter改为mysql即可。下面的一些信息改成MySQL实际的配置信息即可。其他的配置信息就根据自己实际需要来做修改即可。
配置MySQL信息
# 创建mysql数据库
create database mindoc;
# 创建mysql用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
# 授权给新建的mysql用户
grant all ON databasename.tablename TO 'username'@'host';
# 刷新全新啊
flush privileges;
注意事项
- username:创建的MySQL用户名称。
- host: MySQL用户授权地址,如果新建的MySQL用户只能本地登录,则使用127.0.0.1即可。如果需要允许该用户远程登录,则使用使用%。
- password:MySQL用户的密码
- databasename:新建MySQL用户授权对应的数据库。这里直接写新建的数据库mindoc即可。如果是授权所有数据库,则使用*表示。
- tablename:授权数据库对应的数据表,如果只是授权新建MySQL操作部分表,直接写表名,一般都是授权所有表,直接写*即可。
- grant all:这里指的给新建的MySQL用户,授予所有的权限。如果只是部分授权,例如增删改查,则使用insert,delete,update,select 代替,每一个权限之间用","隔开。
安装启动
初始化数据 进入mindoc解压的根目录,会发现有一个mindoc_linux_amd64文件,该文件为启动文件。执行下面的命令:
./mindoc_linux_amd64 install
该命令的作用时初始化一些数据到MySQL中。就类似PHP很多软件,通过界面来安装应用。
启动服务
./mindoc_linux_amd64
问题出现,在启动的过程中可能会出现如下的情况:
OperationalError: (_mysql_exceptions.OperationalError) (1055, "Expression #1 of
SELECT list is not in GROUP BY clause and contains nonaggregated column
'db.table.create_time' which is not functionally dependent on columns in
GROUP BY clause; this is incompatible with sql_mode=only_full_group_by") [SQL:
u'SELECT table.create_time AS table_create_time, table.count AS
table_count nFROM table nWHERE table.cluster_id = %s AND
table.create_time > %s GROUP BY table.count'] [parameters: (1,
datetime.datetime(2000, 1, 1, 0, 0))]
在实际的过程中错误的语言不是这样的,在安装时忘记记录了,不过大致的错误信息是这样的。只要关注下面这一段错误码,就行了。1055, "Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'db.table.create_time' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by"
解决问题。
mysql> show variables like 'sql_mode';
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
执行下面的命令,将该sql_mode的配置信息改外其他的模式:
set @@sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
此时,再来查询该环境变量的值,就是如下的值了:
mysql> show variables like 'sql_mode';
+---------------+------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+---------------+------------------------------------------------------------------------------------------------------------------------+
| sql_mode | STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
记得修改配置之后,一定的重启MySQL服务,否则是不会生效的。
重启mindoc服务。
./mindoc_linux_amd64
如果需要将该服务以守护进程的方式启动,则在后面加一个 &即可。
使用mindoc
上面正常将服务启动并安装,接下来使用下面的链接即可访问:
# ip为你服务器ip地址,如果是本地则使用localhost,或者127.0.0.1
ip:8181
下面是几张页面的截图,由于功能很好上手使用,这里就不单独介绍如何使用功能了。
- 简单的验证码识别(opecv)
- Mat转换为QImage
- 将多张图片无缝拼接方法
- 【Golang语言社区】H5游戏开发-纯javascript模仿微信打飞机小游戏
- 模式识别---图像二值化
- 双边过滤算法
- C++对于大型图片的加载缩放尝试
- ijg库解码超大型jpeg图片
- JS基础(下)
- Go语言_并发篇
- AttributeError: 'int' object has no attribute 'log'
- makefile在编译的过程中出现“except class name”
- 调参过程中的参数 学习率,权重衰减,冲量(learning_rate , weight_decay , momentum)
- 【Golang语言社区】游戏编程--js开发实现简单贪吃蛇游戏(20行代码)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PostgreSQL 12的可拔插存储引擎--表访问方法以及bloackholes案例
- POJ 2230 Watchcow 欧拉回路的DFS解法(模板题)
- POJ 2188 Cow Laundry
- 51NOD 2072 装箱问题 背包问题 01 背包 DP 动态规划
- 51 NOD 1049 最大子段和 动态规划 模板 板子 DP
- 51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子
- CodeForces - 262C 贪心
- 花狗C语言彩色贪吃蛇(完整代码)
- CodeForces - 262B
- CodeForces - 260B
- 蓝桥杯第九届C语言C组第一题:哪天返回
- java学习之路:17.掌握Boolean对象的创建以及Boolean类提供的各种方法
- java学习之路:16.掌握Integer,Long,Short对象的创建以及其类提供的各种方法
- java学习之路:15.对象的创建,属性,行为,引用,比较,销毁
- java学习之路:14.类的构造方法,静态变量,常量和方法,类的主方法