探索建站和运维乐趣

利用MrDoc开源源码自建在线文档管理系统

前几天老蒋在考虑将一些连载性的教程文章通过文档管理系统的形式整理,而不是直接发布在网站中。前者的阅读体验更好,比如类似我们看到的菜鸟教程、廖雪峰个人网站一样的。于是在寻找有没有类似的开源源码,这里有找到MrDoc程序,是基于Python开发的在线文档源码,是免费开源的,适合个人和团队文档建设。

第一、MrDoc 演示效果

我们可以看到默认主题首页是采用的模块式布局,每一个文档一个模块,适合需求。当然我们可以二次开发调整。

内容页面采用的是分栏格式。还是满足需要的,如果右侧栏再有包含所有的栏目进行内链会更好一些。

Gitee: https://gitee.com/zmister/MrDoc
GitHub: https://github.com/zmister2016/MrDoc

程序开源地址,我们可以去查看最新版本和部署。

第二、MrDoc 特点

1、站点与用户系统

支持用户注册、用户登录、用户管理、管理员等基础用户功能;
支持注册邀请码配置、广告代码配置、统计代码配置、邮箱找回密码、全站关闭注册等管理功能;

2、文档系统

基于文集进行文档撰写和阅读,拥有文集、文档、文档模板、图片和附件5大模块;
使用基于Editormd的Markdown编辑器并扩展,以Markdown语法进行文档写作:
支持基础Markdown语法
支持GFM语法
优化图片上传,支持粘贴上传、本地文件上传和图片管理插入
优化表格写入,支持编辑HTML表格转为Markdown、Excel内容粘贴为Markdown
支持思维导图,以Markdown的语法创建思维导图
支持流程图、时序图的绘制;
两栏式文档阅读页面、三级目录层级显示,文档阅读字体缩放,字体类型切换,页面社交分享,移动端阅读优化;
支持文集导出打包,包括markdown文本格式.md文件、EPUB电子书格式文件和PDF格式文件;
基于文集进行文档权限控制,提供公开、私密、指定用户可见、访问码可见4种权限模式;
支持基于账户的**API接口**,可以借助账户token通过API获取文集、上传图片和创建文档;
支持文集协作功能,一个文集可以拥有一个创建者和多个协作者,可灵活选择协作权限;
支持文档历史版本功能,可以查看和对比历史版本与现有版本的差异,恢复某个历史版本为当前版本;

第三、MrDoc 部署

官方有提供到Linux、Windows、Docker三种部署模式,这里我们选择Docker部署模式记录。

1、Docker 版本说明

mrdoc-alpine: 采用 runserver 方式运行 (支持 amd64/arm64 平台)

dockerhub官网链接: https://hub.docker.com/r/jonnyan404/mrdoc-alpine

mrdoc-nginx: 采用 uwsgi/nginx 方式运行(受限于构建源,仅支持 amd64 平台)

dockerhub官网链接: https://hub.docker.com/r/jonnyan404/mrdoc-nginx

2、简单实用

mrdoc-alpine

docker run -d --name mrdoc -p 10086:10086 jonnyan404/mrdoc-alpine

mrdoc-nginx

docker run -d --name mrdoc -p 10086:10086 jonnyan404/mrdoc-nginx

默认端口:10086,默认用户:admin,默认密码:password,打开 http://IP:10086 即可访问。

数据备份:

docker cp mrdoc:/app/MrDoc/config .

3、进阶使用

挂载本地目录

创建文件夹:

mkdir ~/mrdoc

编写配置文件:

vim ~/mrdoc/config.ini

# 如果自己没有更换其它数据库的需求,请原样复制粘贴,不要乱改配置.
# 如果自己没有更换其它数据库的需求,请原样复制粘贴,不要乱改配置.
# 如果自己没有更换其它数据库的需求,请原样复制粘贴,不要乱改配置.
[site]
# True表示开启站点调试模式,False表示关闭站点调试模式
debug = False
[database]
# engine,指定数据库类型,接受sqlite、mysql、oracle、postgresql
engine = sqlite
# name表示数据库的名称
# name = db_name
# user表示数据库用户名
# user = db_user
# password表示数据库用户密码
# password = db_pwd
# host表示数据库主机地址
# host = db_host
# port表示数据库端口
[chromium]
# path用于指定Chromium的路径,不指定则使用默认的
path = /usr/lib/chromium/chrome
args = --no-sandbox,--disable-gpu

运行容器

mrdoc-alpine

docker run -d --name mrdoc -p 10086:10086 -v ~/mrdoc:/app/MrDoc/config jonnyan404/mrdoc-alpine

mrdoc-nginx

docker run -d --name mrdoc -p 10086:10086 -v ~/mrdoc:/app/MrDoc/config jonnyan404/mrdoc-nginx

生成数据库文件

docker exec -it mrdoc python manage.py migrate
docker exec -it mrdoc python manage.py createsuperuser

按提示输入管理员账号邮箱密码。

自定义映射端口

mrdoc-alpine

docker run -d --name mrdoc -p xxx:port -v ~/mrdoc:/app/MrDoc/config jonnyan404/mrdoc-alpine 0.0.0.0:port

mrdoc-nginx

docker run -d --name mrdoc -e LISTEN_PORT=port -p xxx:port -v ~/mrdoc:/app/MrDoc/config jonnyan404/mrdoc-nginx

其中:xxx 为宿主机端口,port 为容器端口,自行替换 xxx 与 port 即可。

Dockerfile 文件内容

FROM python:3.7-alpine
LABEL maintainer="www.laobuluo.com:8088"
ENV PYTHONUNBUFFERED=0 \
TZ=Asia/Shanghai
COPY MrDoc /app/MrDoc
WORKDIR /app/MrDoc
RUN set -x \
&& apk add --no-cache tzdata zlib-dev freetype-dev jpeg-dev chromium \
&& apk add --no-cache --virtual .build-deps build-base g++ gcc libxslt-dev python2-dev linux-headers \
&& pip install -r requirements.txt \
&& python manage.py makemigrations \
&& python manage.py migrate \
&& echo "from django.contrib.auth import get_user_model; User = get_user_model(); User.objects.create_superuser('admin', 'www@jonnyan404.top', 'password')" | python manage.py shell \
&& apk del .build-deps \
ENTRYPOINT ["python","-u","manage.py","runserver","--noreload"]
CMD ["0.0.0.0:10086"]

总之,我们有需要的话就可以参考官方网站如何部署。但是对于我们来说感觉部署和管理比较麻烦,虽然这款源码适合需要,但是我们还是希望找到常规的PHP程序。

投上你的一票
赞(0)
转载保留:老部落 » 利用MrDoc开源源码自建在线文档管理系统


关注公众号『老蒋朋友圈』

获取更多建站运营运维新知!
互联网创业、前沿技术......