写点什么

搭建自己的 MinDoc 文档库

发布于: 2021 年 01 月 09 日
搭建自己的MinDoc文档库

1 写在开头

MinDoc 是一款针对 IT 团队开发的简单好用的文档管理系统,前身是 SmartWiki 文档系统。

SmartWiki 是基于 PHP 框架 laravel 开发的一款文档管理系统。因 PHP 的部署对普通用户来说太复杂,所以改用 Golang 开发。

MinDoc 可以方便用户部署和实用。开发缘起是公司 IT 部门需要一款简单实用的项目接口文档管理和分享的系统。其功能和界面源于 kancloud 。

功能可以用来储存日常接口文档,数据库字典,手册说明等文档。内置项目管理,用户管理,权限管理等功能,能够满足大部分中小团队的文档管理需求。




2 部署搭建


2.1 安装部署 go 环境


  • 解压效果



2.2 设置 go 环境变量(go 的文件目录)


  • 设置 go 的安装目录路径:GOROOT=I:\go\



  • 设置 go 的启动路径:PATH=I:\go\bin



  • 设置 ZONEINFO 的存放路径:



2.3 下载安装 mindoc

  • 下载可执行文件:

https://github.com/lifei6671/mindoc/releases 下载最新版的可执行文件,一般文件名为 mindoc_windows_amd.zip



  • 解压压缩包:

请将刚才下载的文件解压,推荐使用好压解压到任意目录。建议不用用中文目录名称。



2.4 初始化 mindoc 数据库

  • 修改 I:\mindoc_windows_amd64\conf\app.conf



  • 根据数据库信息修改配置文件 app.conf



####################MySQL 数据库配置############################支持MySQL和sqlite3两种数据库#数据库配置db_adapter=mysql#mysql数据库的IP(如果希望别人也能访问,可以设置为你的本地ip)db_host=localhost#mysql数据库的端口号一般为3306db_port=3306#刚才创建的数据库的名称db_database=mindoc_db#访问数据库的账号和密码(这里是你本地mysql安装好并设置的密码)db_username=rootdb_password=qweasd!@#zxc123
复制代码


  • 进入 mindoc 根目录,打开 cmd,执行下方指令进行数据库初始化(需要根据你的安装路径进行修改)



I:\mindoc_windows_amd64\mindoc_windows_amd64.exe installI:\mindoc_windows_amd64\mindoc_windows_amd64.exe install
复制代码


控制台输出(完成数据库表结构的创建与数据初始化):



PS I:\mindoc_windows_amd64> I:\mindoc_windows_amd64\mindoc_windows_amd64.exe installInitializing...create table `md_members` -- -------------------------------------------------- -- Table Structure for `github.com/lifei6671/mindoc/models.Member` -- -------------------------------------------------- CREATE TABLE IF NOT EXISTS `md_members` ( `member_id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `account` varchar(100) NOT NULL DEFAULT '' UNIQUE, `password` varchar(1000) NOT NULL DEFAULT '' , `auth_method` varchar(50) NOT NULL DEFAULT 'local' , `description` varchar(2000) NOT NULL DEFAULT '' , `email` varchar(100) NOT NULL DEFAULT '' UNIQUE, `phone` varchar(255) DEFAULT 'null' , `avatar` varchar(1000) NOT NULL DEFAULT '' , `role` integer NOT NULL DEFAULT 1 , `status` integer NOT NULL DEFAULT 0 , `create_time` datetime NOT NULL, `create_at` integer NOT NULL DEFAULT 0 , `last_login_time` datetime ) ENGINE=INNODB; CREATE INDEX `md_members_role` ON `md_members` (`role`);
create table `md_books` -- -------------------------------------------------- -- Table Structure for `github.com/lifei6671/mindoc/models.Book` -- -------------------------------------------------- CREATE TABLE IF NOT EXISTS `md_books` ( `book_id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `book_name` varchar(500) NOT NULL DEFAULT '' , `identify` varchar(100) NOT NULL DEFAULT '' UNIQUE, `order_index` integer NOT NULL DEFAULT 0 , `description` varchar(2000) NOT NULL DEFAULT '' , `label` varchar(500) NOT NULL DEFAULT '' , `privately_owned` integer NOT NULL DEFAULT 0 , `private_token` varchar(500), `status` integer NOT NULL DEFAULT 0 , `editor` varchar(50) NOT NULL DEFAULT '' , `doc_count` integer NOT NULL DEFAULT 0 , `comment_status` varchar(20) NOT NULL DEFAULT 'open' , `comment_count` integer NOT NULL DEFAULT 0 , `cover` varchar(1000) NOT NULL DEFAULT '' , `theme` varchar(255) NOT NULL DEFAULT 'default' , `create_time` datetime NOT NULL, `member_id` integer NOT NULL DEFAULT 0 , `modify_time` datetime, `version` bigint NOT NULL DEFAULT 0 ) ENGINE=INNODB;
create table `md_relationship` -- -------------------------------------------------- -- Table Structure for `github.com/lifei6671/mindoc/models.Relationship` -- -------------------------------------------------- CREATE TABLE IF NOT EXISTS `md_relationship` ( `relationship_id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `member_id` integer NOT NULL DEFAULT 0 , `book_id` integer NOT NULL DEFAULT 0 , `role_id` integer NOT NULL DEFAULT 0 , UNIQUE (`member_id`, `book_id`) ) ENGINE=INNODB;
create table `md_options` -- -------------------------------------------------- -- Table Structure for `github.com/lifei6671/mindoc/models.Option` -- -------------------------------------------------- CREATE TABLE IF NOT EXISTS `md_options` ( `option_id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `option_title` varchar(500) NOT NULL DEFAULT '' , `option_name` varchar(80) NOT NULL DEFAULT '' UNIQUE, `option_value` longtext, `remark` longtext ) ENGINE=INNODB;
create table `md_documents` -- -------------------------------------------------- -- Table Structure for `github.com/lifei6671/mindoc/models.Document` -- -------------------------------------------------- CREATE TABLE IF NOT EXISTS `md_documents` ( `document_id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `document_name` varchar(500) NOT NULL DEFAULT '' , `identify` varchar(100) DEFAULT 'null' , `book_id` integer NOT NULL DEFAULT 0 , `parent_id` integer NOT NULL DEFAULT 0 , `order_sort` integer NOT NULL DEFAULT 0 , `markdown` longtext, `release` longtext, `content` longtext, `create_time` datetime NOT NULL, `member_id` integer NOT NULL DEFAULT 0 , `modify_time` datetime NOT NULL, `modify_at` integer NOT NULL DEFAULT 0 , `version` bigint NOT NULL DEFAULT 0 ) ENGINE=INNODB; CREATE INDEX `md_documents_identify` ON `md_documents` (`identify`); CREATE INDEX `md_documents_book_id` ON `md_documents` (`book_id`); CREATE INDEX `md_documents_parent_id` ON `md_documents` (`parent_id`); CREATE INDEX `md_documents_order_sort` ON `md_documents` (`order_sort`);
create table `md_attachment` -- -------------------------------------------------- -- Table Structure for `github.com/lifei6671/mindoc/models.Attachment` -- -------------------------------------------------- CREATE TABLE IF NOT EXISTS `md_attachment` ( `attachment_id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `book_id` integer NOT NULL DEFAULT 0 , `document_id` integer, `file_name` varchar(255) NOT NULL DEFAULT '' , `file_path` varchar(2000) NOT NULL DEFAULT '' , `file_size` double precision NOT NULL DEFAULT 0 , `http_path` varchar(2000) NOT NULL DEFAULT '' , `file_ext` varchar(50) NOT NULL DEFAULT '' , `create_time` datetime NOT NULL, `create_at` integer NOT NULL DEFAULT 0 ) ENGINE=INNODB;
create table `md_logs` -- -------------------------------------------------- -- Table Structure for `github.com/lifei6671/mindoc/models.Logger` -- -------------------------------------------------- CREATE TABLE IF NOT EXISTS `md_logs` ( `log_id` bigint AUTO_INCREMENT NOT NULL PRIMARY KEY, `member_id` integer NOT NULL DEFAULT 0 , `category` varchar(255) NOT NULL DEFAULT 'operate' , `content` longtext NOT NULL, `original_data` longtext NOT NULL, `present_data` longtext NOT NULL, `create_time` datetime NOT NULL, `user_agent` varchar(500) NOT NULL DEFAULT '' , `ip_address` varchar(255) NOT NULL DEFAULT '' ) ENGINE=INNODB;
create table `md_member_token` -- -------------------------------------------------- -- Table Structure for `github.com/lifei6671/mindoc/models.MemberToken` -- -------------------------------------------------- CREATE TABLE IF NOT EXISTS `md_member_token` ( `token_id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `member_id` integer NOT NULL DEFAULT 0 , `token` varchar(150) NOT NULL DEFAULT '' , `email` varchar(255) NOT NULL DEFAULT '' , `is_valid` bool NOT NULL DEFAULT FALSE , `valid_time` datetime, `send_time` datetime NOT NULL ) ENGINE=INNODB; CREATE INDEX `md_member_token_token` ON `md_member_token` (`token`);
create table `md_document_history` -- -------------------------------------------------- -- Table Structure for `github.com/lifei6671/mindoc/models.DocumentHistory` -- -------------------------------------------------- CREATE TABLE IF NOT EXISTS `md_document_history` ( `history_id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `action` varchar(255) NOT NULL DEFAULT '' , `action_name` varchar(255) NOT NULL DEFAULT '' , `document_id` integer NOT NULL DEFAULT 0 , `document_name` varchar(500) NOT NULL DEFAULT '' , `parent_id` integer NOT NULL DEFAULT 0 , `markdown` longtext, `content` longtext, `member_id` integer NOT NULL DEFAULT 0 , `modify_time` datetime NOT NULL, `modify_at` integer NOT NULL DEFAULT 0 , `version` bigint NOT NULL DEFAULT 0 ) ENGINE=INNODB; CREATE INDEX `md_document_history_document_id` ON `md_document_history` (`document_id`); CREATE INDEX `md_document_history_parent_id` ON `md_document_history` (`parent_id`);
create table `md_migrations` -- -------------------------------------------------- -- Table Structure for `github.com/lifei6671/mindoc/models.Migration` -- -------------------------------------------------- CREATE TABLE IF NOT EXISTS `md_migrations` ( `migration_id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `name` varchar(500) NOT NULL DEFAULT '' , `statements` longtext, `status` varchar(255) NOT NULL DEFAULT 'update' , `create_time` datetime NOT NULL, `version` bigint NOT NULL DEFAULT 0 UNIQUE ) ENGINE=INNODB;
create table `md_label` -- -------------------------------------------------- -- Table Structure for `github.com/lifei6671/mindoc/models.Label` -- -------------------------------------------------- CREATE TABLE IF NOT EXISTS `md_label` ( `label_id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `label_name` varchar(50) NOT NULL DEFAULT '' UNIQUE, `book_number` integer NOT NULL DEFAULT 0 ) ENGINE=INNODB;
Install Successfully!
复制代码


2.5 启动 MinDoc 本地服务

  • 双击 mindoc_windows_amd64.exe 启动服务

   


  • 打开浏览器,通过 http://localhost:8181/login 登录

初始化账号:admin/123456


2.6 登录后可以查看文档

登陆进入文档管理后台后,可以看到意见初始化好的默认文档,然后可以开启你的文档编辑生涯了~~



3 写在文末

mindoc 的文档数据存储于本地的 mysql 数据库,mindoc 同时提供了文档数据自动保存的配置;自动保存也导致了一个问题:当整个团队人数较多,并且人员频繁进行文档保存时,会加大系统的 IO 资源消耗,造成 mysql 服务端压力陡增。

所以,在规模较大的团队应用 mindoc 系统,需要衡量服务器的配置与团队需求。

发布于: 2021 年 01 月 09 日阅读数: 25
用户头像

Diligence is the mother of success. 2018.03.28 加入

公众号:后台技术汇 笔者主要从事Java后台开发,喜欢技术交流与分享,保持饥渴,一起进步!

评论

发布
暂无评论
搭建自己的MinDoc文档库