linux之mindoc搭建

mindoc简介

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

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

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

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

linux安装

1.下载可执行文件

Releases · mindoc-org/mindoc · GitHub

2.解压压缩包

使用sftp传输到linux服务器上

unzip mindoc_linux_amd64.zip

3.安装数据库

[sherlock@localhost ~]$ yum install mysql-server
Error: This command has to be run under the root user.
[sherlock@localhost ~]$ su
Password:
su: Authentication failure
[sherlock@localhost ~]$ sudo passwd#设置root密码

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for sherlock:
Changing password for user root.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[sherlock@localhost ~]$
[root@localhost sherlock]# yum install -y mysql-server.x86_64 mysql-devel.x86_64
[root@localhost sherlock]# service mysqld start#安装完成后一定要用这条命令执行,否则进不去mysql
Redirecting to /bin/systemctl start mysqld.service

4.创关键数据库

[root@localhost sherlock]# mysql#进入mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.26 Source distribution

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE mindoc_db  DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;#执行命令创建语句,把字符定义为utf8mb4
Query OK, 1 row affected (0.01 sec)

mysql>
exit
退出

5.配置数据库

[root@localhost sherlock]# cp conf/app.conf.example conf/app.conf
cp: overwrite 'conf/app.conf'? y
[root@localhost sherlock]#
配置文件都已经配置好了,感兴趣可以看看
[root@localhost sherlock]# more conf/app.conf
appname = mindoc

#默认监听的网卡,为空则监听所有
httpaddr="${MINDOC_ADDR}"
httpport = "${MINDOC_PORT||8181}"
runmode = "${MINDOC_RUN_MODE||dev}"
sessionon = true
sessionname = mindoc_id
copyrequestbody = true

#系统完整URL(http://doc.iminho.me),如果该项不设置,会从请求头中获取地址。
baseurl="${MINDOC_BASE_URL}"


#########代码高亮样式################
#样式演示地址:https://highlightjs.org/static/demo/
highlight_style="${MINDOC_HIGHLIGHT_STYLE||github}"

########配置文件自动加载##################
#大于0时系统会自动检测配置文件是否变动,变动后自动加载并生效,单位是秒。监听端口和数据
库配置无效
config_auto_delay="${MINDOC_CONFIG_AUTO_DELAY||20}"


########Session储存方式##############

#默认Session生成Key的秘钥
beegoserversessionkey=NY1B$28pms12JM&c
sessionprovider="${MINDOC_SESSION_PROVIDER||file}"
sessionproviderconfig="${MINDOC_SESSION_PROVIDER_CONFIG||./runtime/session}"
#默认的过期时间
sessiongcmaxlifetime="${MINDOC_SESSION_MAX_LIFETIME||3600}"

#以文件方式储存
#sessionprovider=file
#sessionproviderconfig=./runtime/session

#以redis方式储存
#sessionprovider=redis
#sessionproviderconfig=127.0.0.1:6379

#以memcache方式储存
#sessionprovider=memcache
#sessionproviderconfig=127.0.0.1:11211

#以内存方式托管Session
#sessionprovider=memory

#时区设置
timezone = Asia/Shanghai



6.使用脚本初始化数据库

[root@localhost sherlock]# ./mindoc_linux_amd64 install
2021/11/25 06:25:32.768 [I] [command.go:34]  正在初始化数据库配置.
2021/11/25 06:25:32.769 [I] [command.go:86]  数据库初始化完成.
Initializing...
create table `md_members`
    -- --------------------------------------------------
    --  Table Structure for `github.com/lifei6671/mindoc/models.Member`
    -- --------------------------------------------------
    CREATE TABLE IF NOT EXISTS `md_members` (
        `member_id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,
        `account` varchar(100) NOT NULL DEFAULT ''  UNIQUE,
        `real_name` varchar(255) NOT NULL DEFAULT '' ,
        `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
    );
    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 NOT NULL PRIMARY KEY AUTOINCREMENT,
        `book_name` varchar(500) NOT NULL DEFAULT '' ,
        `item_id` integer NOT NULL DEFAULT 1 ,
        `identify` varchar(100) NOT NULL DEFAULT ''  UNIQUE,
        `auto_release` integer NOT NULL DEFAULT 0 ,
        `is_download` integer NOT NULL DEFAULT 0 ,
        `order_index` integer NOT NULL DEFAULT 0 ,
        `description` varchar(2000) NOT NULL DEFAULT '' ,
        `publisher` varchar(500) NOT NULL DEFAULT '' ,
        `label` varchar(500) NOT NULL DEFAULT '' ,
        `privately_owned` integer NOT NULL DEFAULT 0 ,
        `private_token` varchar(500),
        `book_password` 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,
        `history_count` integer NOT NULL DEFAULT 0 ,
        `is_enable_share` integer NOT NULL DEFAULT 0 ,
        `member_id` integer NOT NULL DEFAULT 0 ,
        `modify_time` datetime,
        `version` integer NOT NULL DEFAULT 0 ,
        `is_use_first_document` integer NOT NULL DEFAULT 0 ,
        `auto_save` integer NOT NULL DEFAULT 0
    );

create table `md_relationship`
    -- --------------------------------------------------
    --  Table Structure for `github.com/lifei6671/mindoc/models.Relationship`
    -- --------------------------------------------------
    CREATE TABLE IF NOT EXISTS `md_relationship` (
        `relationship_id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,
        `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`)
    );

create table `md_options`
    -- --------------------------------------------------
    --  Table Structure for `github.com/lifei6671/mindoc/models.Option`
    -- --------------------------------------------------
    CREATE TABLE IF NOT EXISTS `md_options` (
        `option_id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,
        `option_title` varchar(500) NOT NULL DEFAULT '' ,
        `option_name` varchar(80) NOT NULL DEFAULT ''  UNIQUE,
        `option_value` text,
        `remark` text
    );

create table `md_documents`
    -- --------------------------------------------------
    --  Table Structure for `github.com/lifei6671/mindoc/models.Document`
    -- --------------------------------------------------
    CREATE TABLE IF NOT EXISTS `md_documents` (
        `document_id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,
        `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` text,
        `release` text,
        `content` text,
        `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` integer NOT NULL DEFAULT 0 ,
        `is_open` integer NOT NULL DEFAULT 0 ,
        UNIQUE (`book_id`, `identify`)
    );
    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 NOT NULL PRIMARY KEY AUTOINCREMENT,
        `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` real 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
    );

create table `md_logs`
    -- --------------------------------------------------
    --  Table Structure for `github.com/lifei6671/mindoc/models.Logger`
    -- --------------------------------------------------
    CREATE TABLE IF NOT EXISTS `md_logs` (
        `log_id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,
        `member_id` integer NOT NULL DEFAULT 0 ,
        `category` varchar(255) NOT NULL DEFAULT 'operate' ,
        `content` text NOT NULL,
        `original_data` text NOT NULL,
        `present_data` text NOT NULL,
        `create_time` datetime NOT NULL,
        `user_agent` varchar(500) NOT NULL DEFAULT '' ,
        `ip_address` varchar(255) NOT NULL DEFAULT ''
    );

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 NOT NULL PRIMARY KEY AUTOINCREMENT,
        `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
    );
    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 NOT NULL PRIMARY KEY AUTOINCREMENT,
        `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` text,
        `content` text,
        `member_id` integer NOT NULL DEFAULT 0 ,
        `modify_time` datetime NOT NULL,
        `modify_at` integer NOT NULL DEFAULT 0 ,
        `version` integer NOT NULL DEFAULT 0 ,
        `is_open` integer NOT NULL DEFAULT 0
    );
    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 NOT NULL PRIMARY KEY AUTOINCREMENT,
        `name` varchar(500) NOT NULL DEFAULT '' ,
        `statements` text,
        `status` varchar(255) NOT NULL DEFAULT 'update' ,
        `create_time` datetime NOT NULL,
        `version` integer NOT NULL DEFAULT 0  UNIQUE
    );

create table `md_label`
    -- --------------------------------------------------
    --  Table Structure for `github.com/lifei6671/mindoc/models.Label`
    -- --------------------------------------------------
    CREATE TABLE IF NOT EXISTS `md_label` (
        `label_id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,
        `label_name` varchar(50) NOT NULL DEFAULT ''  UNIQUE,
        `book_number` integer NOT NULL DEFAULT 0
    );

create table `md_blogs`
    -- --------------------------------------------------
    --  Table Structure for `github.com/lifei6671/mindoc/models.Blog`
    -- --------------------------------------------------
    CREATE TABLE IF NOT EXISTS `md_blogs` (
        `blog_id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,
        `blog_title` varchar(500) NOT NULL DEFAULT '' ,
        `blog_identify` varchar(100) NOT NULL DEFAULT ''  UNIQUE,
        `order_index` integer NOT NULL DEFAULT 0 ,
        `member_id` integer NOT NULL DEFAULT 0 ,
        `blog_type` integer NOT NULL DEFAULT 0 ,
        `document_id` integer NOT NULL DEFAULT 0 ,
        `blog_excerpt` varchar(1500) NOT NULL DEFAULT '' ,
        `blog_content` text,
        `blog_release` text,
        `blog_status` varchar(100) NOT NULL DEFAULT 'publish' ,
        `password` varchar(100) NOT NULL DEFAULT '' ,
        `modify_time` datetime NOT NULL,
        `modify_at` integer NOT NULL DEFAULT 0 ,
        `create_time` datetime NOT NULL,
        `version` integer NOT NULL DEFAULT 0 ,
        UNIQUE (`blog_id`, `blog_identify`)
    );
    CREATE INDEX `md_blogs_member_id` ON `md_blogs` (`member_id`);

create table `md_templates`
    -- --------------------------------------------------
    --  Table Structure for `github.com/lifei6671/mindoc/models.Template`
    -- --------------------------------------------------
    CREATE TABLE IF NOT EXISTS `md_templates` (
        `template_id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,
        `template_name` varchar(500) NOT NULL DEFAULT '' ,
        `member_id` integer NOT NULL DEFAULT 0 ,
        `book_id` integer NOT NULL DEFAULT 0 ,
        `is_global` integer NOT NULL DEFAULT 0 ,
        `template_content` text,
        `create_time` datetime NOT NULL,
        `modify_time` datetime NOT NULL,
        `modify_at` integer NOT NULL DEFAULT 0 ,
        `version` integer NOT NULL DEFAULT 0
    );
    CREATE INDEX `md_templates_member_id` ON `md_templates` (`member_id`);
    CREATE INDEX `md_templates_book_id` ON `md_templates` (`book_id`);

create table `md_teams`
    -- --------------------------------------------------
    --  Table Structure for `github.com/lifei6671/mindoc/models.Team`
    -- --------------------------------------------------
    CREATE TABLE IF NOT EXISTS `md_teams` (
        `team_id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,
        `team_name` varchar(255) NOT NULL DEFAULT '' ,
        `member_id` integer NOT NULL DEFAULT 0 ,
        `is_delete` bool NOT NULL DEFAULT 0 ,
        `create_time` datetime NOT NULL
    );

create table `md_team_member`
    -- --------------------------------------------------
    --  Table Structure for `github.com/lifei6671/mindoc/models.TeamMember`
    -- --------------------------------------------------
    CREATE TABLE IF NOT EXISTS `md_team_member` (
        `team_member_id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,
        `team_id` integer NOT NULL DEFAULT 0 ,
        `member_id` integer NOT NULL DEFAULT 0 ,
        `role_id` integer NOT NULL DEFAULT 0 ,
        UNIQUE (`team_id`, `member_id`)
    );

create table `md_team_relationship`
    -- --------------------------------------------------
    --  Table Structure for `github.com/lifei6671/mindoc/models.TeamRelationship`
    -- --------------------------------------------------
    CREATE TABLE IF NOT EXISTS `md_team_relationship` (
        `team_relationship_id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,
        `book_id` integer NOT NULL DEFAULT 0 ,
        `team_id` integer NOT NULL DEFAULT 0 ,
        `create_time` datetime NOT NULL,
        UNIQUE (`team_id`, `book_id`)
    );

create table `md_itemsets`
    -- --------------------------------------------------
    --  Table Structure for `github.com/lifei6671/mindoc/models.Itemsets`
    -- --------------------------------------------------
    CREATE TABLE IF NOT EXISTS `md_itemsets` (
        `item_id` integer NOT NULL PRIMARY KEY AUTOINCREMENT,
        `item_name` varchar(500) NOT NULL DEFAULT '' ,
        `item_key` varchar(100) NOT NULL DEFAULT ''  UNIQUE,
        `description` text,
        `member_id` integer NOT NULL DEFAULT 0 ,
        `create_time` datetime NOT NULL,
        `modify_time` datetime,
        `modify_at` integer NOT NULL DEFAULT 0
    );

Install Successfully!
[root@localhost sherlock]#

7.修改权限并启动程序

[root@localhost sherlock]# chmod +x mindoc_linux_amd64
[root@localhost sherlock]# ./mindoc_linux_amd64
2021/11/25 06:27:19.630 [I] [command.go:34]  正在初始化数据库配置.
2021/11/25 06:27:19.631 [I] [command.go:86]  数据库初始化完成.
MinDoc version => v2.0
build time => Mon Mar 11 08:38:41 UTC 2019
start directory => /home/sherlock/mindoc_linux_amd64

2021/11/25 06:27:19.704 [I] [asm_amd64.s:1337]  http server Running on http://:8181

本地登录

初始化密码为amdin/123456

本地效果

小型团队使用绰绰有余。

外网访问 

[root@localhost sherlock]# systemctl stop firewalld.service
[root@localhost sherlock]# systemctl disable firewalld.service
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost sherlock]#

关闭防火墙后

可正常访问地址 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿江要努力鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值