引言

MediaWiki的复杂与强大不是短短一篇文章就能表达清楚的,如果你无意间进入这里,而你又恰巧对它感兴趣,那么它能引领你进入这个神奇的世界。如果你已经是资深的wiki玩家,不嫌弃的话也可以帮忙指正一下其中的错误,我将不甚感激。

一、什么是MediaWiki?

MediaWiki是一个最初为维基百科量身打造的自由开源的wiki套件,用PHP语言写成。现在,非营利的维基媒体基金会下辖的所有wiki项目、互联网上的众多其他wiki网站以及MediaWiki主页都建基于此套软件上。

Wiki是一种在万维网上开放且可供多人协同创作的超文本系统,由沃德·坎宁安于1995年首先开发。沃德·坎宁安将wiki定义为“一种允许一群用户用简单的描述来创建和连接一组网页的社会计算系统”。

二、为什么使用MediaWiki?

MediaWiki的最大作用在于对知识的归档,可用于构建企业/个人知识库。
不过有一点需要明确,能实现Wiki功能的系统可不止MediaWiki一家,它之所以最为出名完全得益于维基百科的影响力,而它开源的特性也使得全世界所有人都可以对它的代码进行优化。对于其他Wiki软件及其优劣对比,可参考维基百科上的文章《Wiki软件比较》。
虽然国内关于MediaWiki的资料不多,但其良好的开放性可以让你轻易地从其他采用该系统的站点上查看到相应的代码和内容,以便你能快速理解条目编辑、模板创建等工作。如果你愿意,甚至可以直接复制你所需要的代码到你的网站上。
另外,强大的扩展功能也会使得站点如虎添翼,事半功倍。只是千万别忘了它的存在是为了知识的收集和整理,如果整日想着让它更加炫酷是否违背了初衷还请自行思量(因为我就很容易犯这样的问题)。

建议:
如果你从未接触过wiki系统却又打算采用MediaWiki,那么强烈建议你先在维基百科上尝试一下各种操作并且阅读基本的操作手册。

三、安装MediaWiki

注意:
1. 为方便演示,本文均在虚拟机下操作
2. 安装过程中会有帮助提示,可点击参考
3. 所有安装设置都能通过修改配置文件重新调整,所以在不确定选项的情况下请选择默认
4. 服务器和数据库的搭建不在本教程范围之内

你可以从官网上下载最新版本的MediaWiki程序(截至本文发布时,该软件版本已升级至1.31)。
PS:从MediaWiki 1.31版开始,PHP如果低于7.0以下版本是不支持安装的。为方便演示,以下采用MediaWiki 1.30版本。
将压缩包解压到网站根目录下,用浏览器打开出现如下界面:
install-mediawiki-step1.png
可以看到提示没有LocalSettings.php文件(这是MediaWiki的配置文件,在后面的简易设置和进阶教程中我们还会用到它),我们通过逐步设置来生成该文件。
点击“complete the installation”来到下一个页面
install-mediawiki-step2.png
首先来到的是语言设置界面,MediaWiki1.30支持超过350种以上的语言,其中光中文选项就有9种(还不包括粤语、文言文等其他跟中文相关的语言)
mediawiki-language.png
从消息文件(关于消息文件的内容会在另一篇文章中详细讲)中我们可以看到,每个语言文件的大小都不一样,最大的就是简体中文。
mediawiki-message-language.png
默认选择中文(支持简体及繁体),点击继续。
install-mediawiki-step3.png
这次是环境检查,Mediawiki1.30的配置要求是

  • PHP 5.5.9或更高版本
  • MySQL 5.5.8或更高版本

具体要求在官网上都有说明。
从图片上我们能够看到虽然有警告内容,但并没有妨碍我们继续安装下去,只是说官方建议开启某些服务(这也是为了更好地运行系统或某些扩展所需要的),这里暂时忽略,点击继续。
install-mediawiki-step4.png
紧接着就是数据库的配置,默认使用root账号并且密码正确的话,可以自动生成相应的数据库。但建议为MediaWiki单独建立一个数据库账户和新数据库,以减少风险;或者在下一步中另建一个用户。
install-mediawiki-step5.png
如果你跟我一样在上一步中直接采用root账号继续的,那么到这一步最好还是新建一个权限相对低一些的账号以确保数据库安全。如果本身是权限较低的数据库管理账号,那么使用同一个也无所谓。
在这里我使用默认的wikiuser账号添加一个新密码,然后继续。
install-mediawiki-step6.png
记得给你的网站以及作为管理员的你起个霸气点的名字。
其中一项“项目命名空间”可能会让你产生疑惑,但建议你还是选择默认。
如果你玩过维基百科,就会知道很多以“维基百科:”开头的条目都是跟网站的使用及管理有关的,而这个前缀就是所谓的项目命名空间。
如果你是第一次玩MediaWiki,对皮肤及扩展等毫无概念,那么可以选择“我已经不耐烦了,赶紧安装我的wiki。”那个选项完成安装。
或者你的好奇心很强,那就继续往下看
install-mediawiki-step7-1.pnginstall-mediawiki-step7-2.png
其他选择默认就可以了,单看扩展程序这里,建议其中的“Cite(引用扩展)”、“ParserFunctions(解析器扩展)”、“ConfirmEdit(反垃圾扩展)”和“WikiEditor(wiki编辑器)”一定要勾选。
如果不知道该选什么也没关系,后面的内容会讲到如何开启这几项扩展的。
install-mediawiki-step8.png
一切都OK的话,点击继续,有可能会出现一个全部配置完毕的页面,下面的文本框中可以添加你想新增的设置代码,我们同样直接点击继续。
install-mediawiki-step9.png
提示你下载LocalSettings.php文件,保存后将它添加至你的Wiki站点根目录下。
重新输入你的网站地址,如果能看到跟下面差不多的画面,那么恭喜你,你的安装成功了!
mediawiki-complete.png
提示:
*如果你想重新设置MediaWiki,可以在浏览器中输入http://domain/directory/mw-config/index.php( 将 directory 换成您MediaWiki的解压位置 如果是本地安装的话将 domain 替换成localhost),然后点击右侧的“重新开始安装”。
当然,你也可以通过下面的内容进一步设置。*
注意:一旦你的配置完成,强烈建议你将mw-config目录给删除,以防止被别有用心的人利用。

四、MediaWiki简易设置

其实大部分设置在你的安装过程中都已经被配置完毕并保存在了LocalSettings.php文件中,接下去的说明都是围绕这个文件展开,我们将着重介绍最常用的几个变量(新安装完毕的用户,在首页“新手入门”的第一项内容MediaWiki配置设置列表中有详细说明)。

变量说明示例
一般设置
$wgServer服务器的基础URL。$wgServer = "http://wiki.mindseed.cn";
$wgSitename网站名称。$wgSitename = "心百科";
路径
$wgScriptPath基础URL路径,默认为网站根目录。<br/>提示:许多其他变量都是相对于这个变量定义的,如果你改变了在LocalSetting.php中的这个变量的值那么可能所有依赖它的变量都将需要重新定义!<br/>所有调用该变量的其他变量均应于它之后定义,否则可能会发生错误!$wgScriptPath = '/w';
$wgLogo网站标志(大小为135像素x135像素)的URL。<br/>提示: 不要简单地掩盖MediaWiki安装时的默认Logo(/resources/assets/wiki.png);该文件会在您升级时被自动掩盖,且您的改动会被丢失。$wgLogo = $wgScriptPath . '/images/4/47/mylogo.png';
$wgLogoHD用于网站标志的高清版本(大支持270像素x270像素)的URL。$wgLogoHD = array(<br/> "1.5x" => "path/to/1.5x_version.png",<br/> "2x" => "path/to/2x_version.png"<br/>);
$wgFavicon网站收藏夹图标(在浏览器的地址栏中URL旁边显示的一个小图标)的URL。$wgFavicon = "../favicon.ico";
$wgUsePathInfo是否使用“漂亮的”URL。$wgUsePathInfo = true;
$wgArticlePath用于创建条目链接的基础URL。$wgArticlePath = '/wiki/$1';
电子邮件设置
$wgEnableEmail是否启用基本邮件特性。$wgEnableEmail = true;
数据库设置
$wgDBtype数据库类型。<br/>参数选项:<br/>"mssql" - MS-SQL<br/>"mysql" - MySQL或MariaDB<br/>"oracle" - Oracle <br/>"postgres" - PostgreSQL<br/>"sqlite" - SQLite$wgDBtype = "mysql";
$wgDBserver数据库服务器的主机名或IP地址。$wgDBserver = "localhost";
$wgDBname数据库名称。$wgDBname = "my_wiki";
$wgDBuser数据库用户名。$wgDBuser = "wiki_root";
$wgDBpassword数据库用户($wgDBuser)的密码。$wgDBpassword = "1234567asd";
$wgDBprefix数据表名称前缀(默认为“mw_”)。$wgDBprefix = "mywiki_";
MySQL相关
$wgDBTableOptions安装或升级时使用的数据表选项。$wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=binary";
$wgDBmysql5数据库编码是否采用UTF-8。$wgDBmysql5 = false;
调试/日志记录
$wgShowExceptionDetails如果设置为 true, 将会把捕获的异常细节显示出来。$wgShowExceptionDetails = true;
资源加载器
$wgResourceBasePath资源加载器(ResourceLoader )的基本路径。默认调用$wgScriptPath变量$wgResourceBasePath = $wgScriptPath;
命名空间
$wgContentNamespaces包含真实内容或文章的命名空间。$wgContentNamespaces = array( 0, 12, 112 );<br/>$wgContentNamespaces = array( NS_MAIN, NS_HELP, NS_PROJECT, NS_CUSTOMNAMESPACE );
$wgExtraNamespaces额外的命名空间。<br/>注意:在启用额外的命名空间前,先要定义命名空间的常量,如define("NS_PORTAL", 100);$wgExtraNamespaces[NS_PORTAL] = "Portal";
$wgNamespaceAliases用于命名空间的额外名称。$wgNamespaceAliases['主题'] = NS_PORTAL;
$wgNamespacesWithSubpages哪些命名空间应该支持子页面功能?$wgNamespacesWithSubpages[NS_PORTAL] = true;
上传
$wgEnableUploads是否允许通过wiki上传图片和其他文件,并显示上传链接。$wgEnableUploads = true;
Wiki锁定
$wgReadOnly禁止编辑并显示给定的理由。$wgReadOnly = '本站升级维护中……';
共享上传
$wgUseInstantCommons一旦启用,可以使用MediaWiki元所分享的资料。<br/>如果你想偷懒并打算从维基百科上搬运资料的话建议开启,但是会严重拖慢网页打开速度,一旦正式上线还是关闭为妙!$wgUseInstantCommons = true;
ImageMagick
$wgUseImageMagick可以使用 PHP的内部图像库或使用 ImageMagick 进行尺寸大小的调整。PHP只支持 PNG、GIF、JPG、XBM 和 WBMP几种格式,而后者支持的要多得多。$wgUseImageMagick = true;
$wgImageMagickConvertCommandImageMagick附带的转换命令。$wgImageMagickConvertCommand = "/usr/bin/convert";
本地化
$wgLanguageCode网站语言代码。应为./languages/messages/Messages(.*).php文件之一。$wgLanguageCode = "zh-cn";//设置网站语言为zh-cn
皮肤
$wgDefaultSkin默认皮肤。<br/>通过以下方式加载并启用皮肤:wfLoadSkin( '皮肤名' );<br/>如:wfLoadSkin( 'Vector' );$wgDefaultSkin = "vector";//启用默认皮肤为vector
用户
$wgHiddenPrefs禁用某些用户首选项。$wgHiddenPrefs[] = 'language';//禁用用户语言设置

注意:
你用账户登录之后,右上角会有个参数设置,在其中调整的都是跟你本人有关的内容(如语言、皮肤等),对其他用户并没有影响,请不要将其等同于系统设置。

五、MediaWiki扩展安装

MediaWiki作为一款优秀的开源Wiki软件系统,其强大之处就是有大量配套插件为其服务,打开看看维基百科的版本页面,你会发现它使用的所有扩展。
如果你的目标很简单,就是做一个跟维基百科差不多的网站,那么照着它里面的扩展下载安装就成了。我们找几个最常用和最经典的来学习一下。
基本说明:

  • 通常从网上下载的扩展压缩包,解压后将其上传至extensions/目录下;
  • 要启用该扩展,只需在LocalSettings.php文件中添加相应的启用代码(后续所述的扩展中都附上了启用代码)。

    1. Cite

    描述:
    增加用于引用的<ref[ name=id]><references/>标签。
    基本效果:
    mediawiki-cite.png
    说明:
    它可以将<ref>标签内的参考引用自动编号并汇总在一起,然后由<references/>以列表形式自动生成。
    启用:

    wfLoadExtension( 'Cite' );

    2. ParserFunctions

    描述:
    用逻辑函数加强解析器。
    说明 :
    ParserFunctions扩展提供11个附加解析器函数以补充MediaWiki固有的“魔术字”。在维基百科的模板中,有时候你能在{{后面看到某些诸如#ifeq:#ifexist:这样开头的内容,这就是解析器的函数。
    可以这样说,不管是你打算直接复制维基百科的模板,还是未来打算直接制作模板都可能会用上它。
    启用:

    wfLoadExtension( 'ParserFunctions' );

    3. WikiEditor

    描述:
    提供可扩充的维基文本编辑界面及功能组件。
    基本效果:
    MediaWiki-WikiEditor.png
    说明:
    比起MediaWiki原始简陋的编辑器而言,这款可以说是极大地提升了工作效率。虽然比不上维基百科现在所使用的可视化编辑器,但也足够了,况且安装又是如此便捷。
    启用:

    wfLoadExtension( 'WikiEditor' );

    备注:
    如果希望体验可视化编辑器可参考本站另一篇文章《为MediaWiki安装可视化编辑器》。

以上几项都是安装包中自带的扩展,更多内容请参见本站《MediaWiki的实用扩展介绍》。

六、维基农场

所谓“维基农场”是指Wiki多站点(也称维基自助托管平台)——就是用同一份MediaWiki代码去开多个站点。如果你玩过WordPress的多站点,那么相信对于这个也不会太陌生。
对于很多想开Wiki站点又懒得维护的朋友,找一个维基农场还是一个不错的主意,所有的维护和开发工作都交由“农场主”来负责,而你的任务就是专心写你的百科。
国内目前做得最好的农场就是灰机Wiki
如果有兴趣可以参考一下官网的《手册:Wiki多站点》,我这里就不详述了。

七、参考文章

国内玩维基的人未必少,但是相关的信息真的很少。遇到问题从百度上搜索到的内容更是少之又少,而且大都雷同——就是如何安装和如何简单配置,而软件版本也停留在很老的阶段。
根据个人的使用情况以及过程中遇到的问题,列出最常用的文档并附上简单说明。

1. 官方文档

  • 关于安装及升级

2. 本站文章

八、相关网站

  1. MediaWiki官网维基百科:如果没有语言障碍,强烈建议将其作为首选。大量的技术文档、操作手册和讨论几乎涵盖你能遇到或者想到的所有问题。至于中文资料,翻译的质和量都不高,况且因为政策缘由也无法直接浏览(指维基百科的中文站点)。
  2. 灰机Wiki
    国内最知名的维基农场,本土化和二次开发的能力相当强。他家的技术文档和使用手册都是用心之作,没事去转转,汲取点灵感也不错。
  3. 萌娘百科
    同样知名的MediaWiki站点,而且属于一眼就能看出是wiki的站点。
  4. 森亮号航海见识
    该网站貌似很久没有更新了,系统版本仍停留在1.26.4。但不可否认其中有很多内容还是值得一看的,尤其玩维基百科的朋友可能会发现其中有部分汉化的配置就出自该站长之手。
  5. 心百科
    心种子的维基分站,一个心理学相关的百科站。
最后修改:2024 年 01 月 05 日
如果觉得我的文章对你有用,请随意赞赏