前言 MM-Wiki 是一个使用GO开发的轻量级的企业知识分享与团队协同软件,可用于快速构建企业 Wiki 和团队知识分享平台。
部署方便,使用简单,帮助团队构建一个信息共享、文档管理的协作环境。
下载 mm-wiki的安装是需要mysql数据库的,我们需要首先安装mysql-server。
Gitee的下载地址:
https://gitee.com/phachon/mm-wiki/releases
安装之前要先安装MySQL。
安装 Linux 平台 创建目录
1 2 3 4 5 mkdir -p /data/tools/mm_wikimkdir -p /data/tools/mm_wiki/md
进入目录
下载
1 wget https://gitee.com/phachon/mm-wiki/releases/download/v0.2.1/mm-wiki-v0.2.1-linux-amd64.tar.gz
解压
1 tar -zxvf mm-wiki-v0.2.1-linux-amd64.tar.gz
删除压缩包
1 rm -rf mm-wiki-v0.2.1-linux-amd64.tar.gz
安装
1 2 3 4 5 6 cd install./install --port=9999
这里端口我依旧设置的9999,最好是和之前的不一样,这里考虑到配置后配置端口就不再用了 所以使用的同一端口。
运行
1 2 cd .../mm-wiki --conf conf/mm-wiki.conf
浏览器访问你监听的 ip 和端口
开始 MM-Wiki 的使用之旅吧!
后台运行
1 nohup ./mm-wiki --conf conf/mm-wiki.conf &
Windows 平台 1 2 3 4 5 6 7 8 9 10 11 $ 执行 mm-wiki.exe --conf conf/mm-wiki.conf
Docker 部署
支持图片粘贴上传 MM-Wiki的编辑器不支持从粘贴板上传图片 ,我们需要将图片保存到本地后才能使用编辑器中的上传图片按钮进行选择上传。
那有什么办法可以解决呢?
创建image-handle-paste.js文件
我们需要在项目的static/plugins/editor.md/plugins/路径下创建一个image-handle-paste文件夹,
然后在image-handle-paste/路径下创建image-handle-paste.js文件,
然后向其中输入以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 (function ( ) { var factory = function (exports ) { var $ = jQuery; var pluginName = "image-handle-paste" ; exports .fn .imagePaste = function ( ) { var _this = this ; var cm = _this.cm ; var settings = _this.settings ; var editor = _this.editor ; var classPrefix = _this.classPrefix ; var id = _this.id ; if (!settings.imageUpload || !settings.imageUploadURL ){ console .log ('你还未开启图片上传或者没有配置上传地址' ); return false ; } $('#' + id).on ('paste' , function (e ) { var items = (e.clipboardData || e.originalEvent .clipboardData ).items ; if (items && items[0 ].type .indexOf ('image' ) > -1 ) { var file = items[0 ].getAsFile (); var forms = new FormData (document .forms [0 ]); forms.append (classPrefix + "image-file" , file, "file_" +Date .parse (new Date ())+".png" ); _this.executePlugin ("imageDialog" , "image-dialog/image-dialog" ); _ajax (settings.imageUploadURL , forms, function (ret ){ if (ret.success == 1 ){ $("." + classPrefix + "image-dialog" ).find ("input[data-url]" ).val (ret.url ); } console .log (ret.message ); }) } }) }; var _ajax = function (url, data, callback ) { $.ajax ({ "type" : 'post' , "cache" : false , "url" : url, "data" : data, "dateType" : "json" , "processData" : false , "contentType" : false , "mimeType" : "multipart/form-data" , success : function (ret ){ callback (JSON .parse (ret)); }, error : function (err ){ console .log ('请求失败' ) } }) } }; if (typeof require === "function" && typeof exports === "object" && typeof module === "object" ) { module .exports = factory; } else if (typeof define === "function" ) { if (define.amd ) { define (["editormd" ], function (editormd ) { factory (editormd); }); } else { define (function (require ) { var editormd = require ("./../../editormd" ); factory (editormd); }); } } else { factory (window .editormd ); } })();
修改document_page.html文件
我们需要向views/layouts/document_page.html文件中的第47行添加如下内容:
1 <script type ="text/javascript" src ="/static/plugins/editor.md/plugins/image-handle-paste/image-handle-paste.js" > </script >
修改views/page/edit.html文件
在views/page/edit.html文件的第116行,
也就是onload : function() {}方法的内部末尾,
添加如下内容:
重启服务即可(一定要重启后才生效)。
Nginx反代 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 upstream frontends { server 127.0.0.1:9999 ; } server { listen 80 ; server_name wiki.psvmc.cn; location / { proxy_pass_header Server; proxy_set_header Host $http_host ; proxy_redirect off ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Scheme $scheme ; proxy_pass http://frontends; } location /static { root /data/tools/mm_wiki; expires 1d ; add_header Cache-Control public; access_log off ; } }