国产开源文档管理系统——Wizard
介绍
Wizard是一款开源文档管理系统,支持三种格式类型的文档管理,分别是Markdown、Swagger和Table,以便于满足不同场景和不同需求下的文档管理,Markdown类型是当下比较常用的文档类型,虽然已经满足大多数需求,但是当需求变得复杂,那么使用起来就相对不太够了!
开源地址
码云:https://gitee.com/orionis/wizard Github:https://github.com/mylxsw/wizard
功能清单
目前Wizard已经包含了以下功能,相对于很多单调的文档管理系统,Wizard显得就要丰富的多了
- Swagger,Markdown,Table 类型的文档管理
- 文档修改历史管理
- 文档修改差异对比
- 用户权限管理
- 项目分组管理
- LDAP 统一身份认证
- 文档搜索,标签搜索
- 阅读模式
- 文档评论
- 消息通知
- 文档分享
- 统计功能
- 流程图,序列图,饼图,Tex LaTex 科学公式支持
- 多主题切换
页面截图
部署方式
目前支持两种方式部署,分别是Docker部署和普通手动部署,如果了解一点Docker建议使用Docker部署,相对手动部署要简单不少,一下就是Docker部署方式,手动部署可以参考码云或者Github上详细的介绍
- 方法一
首先对于新安装用户,需要执行数据库的初始化
docker run -it --rm --name wizard
-e DB_HOST=host.docker.internal
-e DB_PORT=3306
-e DB_DATABASE=wizard
-e DB_USERNAME=wizard
-e DB_PASSWORD=wizard
mylxsw/wizard 初始化命令
这里的 初始化命令 包含两个,依次执行即可
- php artisan migrate:install
- php artisan migrate
最后,直接运行下面的 Docker 命令即可
docker run -d --name wizard
-e DB_HOST=host.docker.internal
-e DB_PORT=3306
-e DB_DATABASE=wizard
-e DB_USERNAME=wizard
-e DB_PASSWORD=wizard
-p 8080:80
-v /Users/mylxsw/Downloads:/webroot/storage/app/public
mylxsw/wizard
- 方法二
我们需要创建一个Dockerfile,在Dockerfile中添加环境配置,比如我采用了宿主机上安装的MySQL服务器,就有了下面的这段Dockerfile配置
FROM mylxsw/wizard:latest
# 数据库连接配置
# 这里可以根据需要添加其它的Env配置,可用选项参考项目的.env.example文件
ENV DB_CONNECTION=mysql
ENV DB_HOST=host.docker.internal
ENV DB_PORT=3306
ENV DB_DATABASE=wizard_2
ENV DB_USERNAME=wizard
ENV DB_PASSWORD=wizard
ENV WIZARD_NEED_ACTIVATE=false
# 访问地址,只有正确配置后,导出的 markdown 文档图片才能正常展示
ENV APP_URL=http://localhost:8080
# 文件上传存储目录
VOLUME /webroot/storage/app/public
RUN php artisan config:cache
执行构建
docker build -t my-wizard .
数据库初始化
docker run -it --rm --name my-wizard my-wizard php artisan migrate:install
docker run -it --rm --name my-wizard my-wizard php artisan migrate
运行
docker run -d --name my-wizard -p 8080:80 my-wizard
然后就可以通过 http://localhost:8080 访问 Wizard 了。
总结
Wizard是一个值得使用的文档管理系统,独立部署,支持MD、Swagger、Table以及其它很多实用的功能,如果你正需要这样一个系统,那么Wizard将是一个不错的选择!
来源:
https://www.toutiao.com/i6857834258212323852/
IT大咖说 | 关于版权
由“IT大咖说(ID:itdakashuo)”原创的文章,转载时请注明作者、出处及微信公众号。
- WordPress集成SendCloud邮件代发,规避SMTP泄漏网站主机真实IP的风险
- ASM 翻译系列第三十三弹:REQUIRED_MIRROR_FREE_MB的含义
- 放弃Python转向Go语言:这9大理由就够了 !(附代码)
- CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放
- 利用HSTS安全协议柔性解决全站HTTPS的兼容性问题
- Nginx内容替换模块http_substitutions_filter_module及实用案例分享
- libmemcached编译安装报错解决记录
- 解决网站静态缓存后WP-PostViews插件不计数的问题
- Haproxy安装部署文档及多配置文件管理方案
- ASM 翻译系列第三十四弹:ASM磁盘组重要属性介绍
- 博客集成Hitokoto·一言经典语句功能
- 博客网页导致电脑CPU飙升的问题解决记录
- 恢复WordPress分类目录的别名链接形式
- 替代crontab,统一定时任务管理系统cronsun简介
- 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 数组属性和方法
- c++之类模板成员函数的类外实现
- c++之类模板分文件编写
- c++之类模板和友元
- c++之类模板案例
- 【ICLR2020】Transformer Complex-order:一种新的位置编码方式
- 多角度理解CNN
- 【NLP保姆级教程】手把手带你CNN文本分类(附代码)
- 【NLP保姆级教程】手把手带你RNN文本分类(附代码)
- 作为一名Android面试官的碎碎念,面试要掌握这几个关键点!
- 拉格朗日乘子法和KKT约束
- Transformers Assemble(PART IV)
- 【NLP保姆级教程】手把手带你fastText文本分类(附代码)
- 【情感分析】ABSA模型总结(PART I)
- 【Kick Algorithm】十大排序算法及其Python实现
- 【情感分析】ABSA模型总结(PART II)