日常开发中总会有许多东西需要记录,很多软件都可以做到这一点,例如有道云笔记,或者写博客。但个人偏爱于Mediawiki,因为wiki可定制性强,总给人一种高端大气的感觉。起初对wiki这种东西一无所知,受老总的影响,开始在公司推广wiki,可惜到现在没有推广成功,不过自己倒是喜欢上这东西了。废话少扯,进入正题吧。

首先大致说说wiki是什么吧。在我看来,wiki就是一种学术性的博客,但是更加严谨,相当于字典,也不完全像字典一样拘束与单词,总之,我也说不清楚,形象的说,就是一个文档系统吧。当前有很多wiki软件,例如Wikipedia使用的Mediawiki,以及MoinMoin,还有其他的很多版本;而Mediawiki应该是最广为人知的吧。

Wiki安装

Mediawiki基于php,可以选择MySQL、Sqlite等诸多数据库,在windows上首选wamp server来配置神一般的Php+MySQL环境。本文使用的是Mediawiki1.21.2,Wamp2.4 ,windows8 pro x64的环境。可以建一个专门放网站的目录,例如d:/work/www,将wiki解压到该目录下即可。在wamp安装目录下的alias目录下,新建一个配置文件,例如wiki.conf,内容如下:

NameVirtualHost *:80

DocumentRoot "D:/Work/www/mediawiki-1.21.2/"

ServerName solee.org

因为是本机的缘故,我在host中将solee.org解析到127.0.0.1,穷人买不起虚拟主机。这样访问localhost,将会进入Mediawiki的初始化安装界面。该安装程序实际上是引导你生成LocalSettings.php,当然也可以手工设置。建议先自己选择,这样会生成一个LocalSettings.php文件,并执行相应的数据库初始化,将此php下载后放到wiki的根目录下面,直接再访问localhost即可进入wiki。好了,wiki安装就这样简单。

基本配置

wiki配置很丰富,下面介绍几种可能感兴趣的配置:

#个人wiki,禁止创建帐号功能,除非登陆才能访问

$wgGroupPermissions['*']['createaccount'] = false;

$wgGroupPermissions['*']['edit'] = false;

$wgGroupPermissions['*']['read'] = false;

#启用详细异常显示.

$wgShowExceptionDetails = true;

#去除底部powered by图标

unset($wgFooterIcons['poweredby']);

#对于没有登录的用户,没有登录的用户移除页面顶部的讨论页链接

$wgShowIPinHeader = false;

#默认在新标签页中打开链接

$wgExternalLinkTarget = '_blank';

其他诸如图标、主题、短链接等配置可以自行探索。

常用插件

常用的插件,主要是富文本编辑器了,当个人倾向于使用纯文本编辑器,也就是Mediawiki自己提供的编辑器。默认的工具条很丑,可以在页面右上角的设置->编辑中开启增强功能。

富文本编辑器可选用WYSIWYG,搜索合适的版本下载之后,解压到extensions目录,并在LocalSettings.php中添加一行,加载此拓展:

富文本编辑器

require_once( "$IP/extensions/WYSIWYG/WYSIWYG.php" );

这样安装好之后,可以在设置中选择喜欢的编辑器,或者选择在文本和富文本编辑器中自由切换。

代码高亮

1.21.2的代码高亮插件已经默认集成了,如果没有集成,可以搜索Mediawiki Geshi安装此插件。

pdf导出

Mediawiki的 pdf导出应该说算是比较头疼的问题了,其实支持pdf导出的插件不少,但是对中文的支持非常不好,目前可以用PdfExport插件比较完美的实现。官方的PdfExport插件已经过时(目前不知道是否更新了),需要进行部分修改:

Mediawiki1.21.2导出,可以使用PdfExport插件+Mpdf进行。当前HtmlDoc等其他后端均不能支持中文。 Mpdf需要配置支持CJK字符

配置LocalSettings.php

#pdf导出插件

require_once("$IP/extensions/PdfExport/PdfExport.php");

#使用Mpdf作为PdfExport的后端,但必须配置支持ckj字体

$wgPdfExportMPdf =  $IP . '/extensions/Mpdf/mpdf.php'; // Path to the main mPDF.php file

配置字体config_font.php(需要将字体添加到字体文件夹中)

"sun-exta" => array(

'R' => "Sun-ExtA.ttf",

'sip-ext' => 'sun-extb',

),

"sun-extb" => array(

'R' => "Sun-ExtB.ttf",

),

修改config_cp.php

CASE "zh":

$unifonts = "sun-exta,sun-extb";

break;

修改MPdfConverter.php

$mpdf = new mPDF('zh');

$mpdf->SetAutoFont(AUTOFONT_ALL);

$mpdf->WriteHTML($html);

修改config.php

$this->useAdobeCJK = true;

另外,需要注释掉下面的函数调用:

//wfLoadExtensionMessages('PdfPrint');

其他插件:

#Flash插件

require_once("$IP/extensions/oflash/orificeflash.php");

#视频插件

require_once("$IP/extensions/MediawikiPlayer/MediawikiPlayer.php");

#批量导入插件

require_once("$IP/extensions/MultiUpload/MultiUpload.php");

当然具体的插件需要自己去下载。通常谷歌Mdiawiki  即可找到官方的下载地址。

备注:

#禁用掉此扩展,否则可能不能正常进入wiki

#require_once( "$IP/extensions/LocalisationUpdate/LocalisationUpdate.php" );

备份及优化

备份主要涉及到数据库的备份及Wiki的备份。对于这种非分布式、非云计算(哈哈——)的东西来说,备份就显得尤为重要了。

D:\Prog\wamp\bin\mysql\mysql5.6.12\bin\mysqldump -u root -ppassword solee_wiki_db >F:\wiki.sql

wiki备份直接把wiki的文件夹打个包即可。如果是采取sqlite数据库的话,数据库备份更加简单了。

在windows上一个比较烦人的问题就是,wamp的mysql内存占用甚是大,在我4G内存的机器上吃了500M,这不能忍啊,因此需要优化一下mysql:

[mysqld]

port=3306

max_connections = 100

#加入以下内容

performance_schema_max_table_instances=600

table_definition_cache=400

table_open_cache=256

最后来张效果图吧:

python构建知识库_使用Mediawiki构建个人知识库相关推荐

  1. python构建知识库_快速入门:创建知识库 - REST、Python - QnA Maker - Azure Cognitive Services | Microsoft Docs...

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 快速入门:通过 Pyt ...

  2. 使用python构建向量空间_使用Docker构建Python数据科学容器

    人工智能(AI)和机器学习(ML)最近真的火了,并驱动了从自动驾驶汽车到药物发现等等应用领域的快速发展.AI和ML的前途一片光明. 另一方面,Docker通过引入临时轻量级容器彻底改变了计算世界.通过 ...

  3. python商城开发_使用FastAPI 构建的商城项目API

    使用FastAPI 构建的商城项目API 学习FastAPI 构建项目目录 构建项目接口 环境 项目文件结构 文件结构是仿照Flask项目目录构建的,官方推荐的模版对我而言太大. . |_FastDe ...

  4. python图片分类器_使用 Tensorflow 构建属于自己的图片分类器

    近几年火热的AI领域吸引了众多有志之士加入,在一段时间的学习之后,不知道你是否有一个疑惑:我能够用AI来做点什么呢? 就拿AI最常见的应用而言,人脸识别已经相当成熟,由巨头把持,围棋AI也有好几个开源 ...

  5. python 词汇表_使用Counter构建词汇表

    这里只记录两种情况: 1 数据集是一段连续的文本,所有词汇放在一个list中(一维的) text: 此时Counter(text),text可以是一个list,统计该list中所有元素出现的次数并返回 ...

  6. 华为开源构建工具_为什么我构建了用于大数据测试和质量控制的开源工具

    华为开源构建工具 I've developed an open-source data testing and a quality tool called data-flare. It aims to ...

  7. cmake 构建路径_基于CMake构建系统的MLIR Example扩展

    上一篇文章讲了把pybind11的示例程序嵌入到了MLIR的Example中,但是在构建的过程中有一定运气成分,并不知道具体是怎么通过CMake构建系统编译出的共享库文件.在分析了MLIR各层级的CM ...

  8. msbuild构建步骤_使用并行构建和多核CPU的MSBuild进行更快的构建

    msbuild构建步骤 UPDATE: I've written an UPDATE on how to get MSBuild building using multiple cores from ...

  9. react中使用构建缓存_使用React构建Tesla的电池范围计算器(第1部分)

    react中使用构建缓存 by Matthew Choi 由Matthew Choi 使用React构建Tesla的电池范围计算器(第1部分) (Building Tesla's Battery Ra ...

最新文章

  1. 方法的重载与重写_java基础知识之重载和重写
  2. php 登录注册api接口代码
  3. 如何玩转PDF?5款简单好用的PDF工具推荐
  4. springboot入门_打包部署
  5. 真正开始记录自己学习技术过程的点滴
  6. 相机成像原理_【亲子科学小实验】相机原理和小孔成像的秘密
  7. Adversarial Validation 微软恶意代码比赛的一个kenel的解析
  8. 双目立体匹配——归一化互相关(NCC)
  9. 盘点十个最伟大的公式,1+1=2仅排到了第七
  10. Python+pywin32操作Excel文件常用功能(268行代码+注释)
  11. MyEclipse中使用Junit插件进行单元测试
  12. C++函数和函数的调用
  13. Asp.Net MVC Html.TextBoxFor日期格式化出错“模板只能用于字段访问、属性访问、一维数组索引或单参数自定义索引器表达式” 解决办法...
  14. 计算机自检报错无法开机,电脑开机不自检无显示是怎么回事?
  15. 计算机课报告书,计算机实训总结报告书范文3篇
  16. 2020-09-15,小米笔试,java
  17. 分布式处理数据:server
  18. 一阶二阶多智能体一致性控制的Matlab程序
  19. 服务器io测试工具-fio
  20. 研究者发现DALL-E 2在用自创语言生成图像:全文黑话,人类都看不懂...

热门文章

  1. 如何将外链接向内连接转换?
  2. 云图说|ModelArts Pro,为企业级AI应用打造的专业开发套件
  3. 【华为云技术分享】云图说 | 云硬盘还可以共享?!不了解你就out了
  4. 独立物理机和虚拟机比较有什么优势?
  5. 物联网与人工智能之间的区别与联系
  6. 【华为大咖分享】7.大型云平台的DevOps实践(后附PPT下载地址)
  7. DJFP2FP2计算机电缆,ZR-DJFP2FP2-22 (ZR-DJFP2FP2-22计算机电缆)(百勤石油)
  8. Android单元测试 mock Context,mock静态类的静态方法,测试方法的顺序
  9. sh mysql config_解决python安装mysqlclient出现“/bin/sh:1:mysql_config:not found”错误...
  10. Sublime Text 4设置光标闪烁