最近利用Meidawiki在公司内网上模仿wikipedia搭建了一个知识共享库——LM智库,这里记录了搭建过程中需要的环境以及必要的步骤,有需要的同学不妨参考一下。
硬件环境:
软件环境:
所需软件:
sudo apt-get install mediawiki
可以直接安装mediawiki1.15版本的环境,各种依赖包都默认装好。
需要升级到最新版本(1.19版本)的可以参考相关Meidawiki升级方法。
未进行尝试,但是有兴趣的同学可以参考这篇文章:Windows环境下mediawiki的安装方式
mediawiki安装完成之后,会生成如下几个目录:
/var/lib/mediawiki/ 这个是存放mediawiki工程文件的主目录,一些与插件和扩展设置相关的改动需要在此目录下的相关配置文件中进行。
/etc/mediawiki/ 这个目录是apt-get 默认安装方式生成的目录,我查了一些资料,如果是通过tar包手动安装的话,该目录不会自动生成,用户需要以其他方式实现该目录下各个文件的作用。
/etc/apache2/ 这个是apach2的安装文件目录,一般该目录下不需要进行更改,因为/etc/mediawiki/下已经有了apach.conf文件用来做一般性的apache配置。
/var/www/ 这个目录是一般意义上的网站目录,该目录下的index.php文件会作为默认的网页登录的显示文件。
接下来,你需要对/var/lib/mediawiki/config更换权限
sudo chmod 777 /var/lib/mediawiki/config
然后访问以你本机Ip(yourIP)开头的ip地址:
http://yourIP/mediawiki/config
填写表单并提交,表单中的各个选项如果有疑问可以参照这里的设置来填写:mediawiki config表单填写。
注意:在database一栏中,需要先在mysql中创建一个用户,并赋予相关的权限。有经验的同学自不用说,没有经验的同学可以尝试用root用户来创建。
填写完该表之后,/var/lib/mediawiki/下会生成对应的配置文件LocalSettings.php文件,对其更改权限,然后放置到/etc/mediawiki/目录下,注意到这个跟网上所说的方式不太一样,是因为我这里用到的是apt-get方式安装
sudo chmod 600 /var/lib/mediawiki/LocalSettings.php sudo mv /var/lib/mediawiki/LocalSettings.php /etc/mediawiki/
注意还要将/etc/mediawiki/apach.conf中的注释
# Alias /mediawiki /var/lib/mediawiki
给取消了
之后访问下面的网址,就可以看到mediawiki的默认首页了
http://yourIP/mediawiki/index.php?title=Main_Page
默认的mediawiki在安装完成之后,所有的用户无论注册与否都可以进行页面的编写,这个有一定的安全隐患,需要进行对用户权限进行相关设置,只允许注册的用户进行页面和条目的撰写。
在LocalSettings.php中添加如下语句:
$wgGroupPermissions['*' ]['read'] = true;
$wgGroupPermissions['*' ]['edit'] = false;
保证匿名用户只有网页的访问权限而没有条目的编写权限
短网址设置
默认的mediawiki条目显示是 yourIP/mediawiki/index.php?title=条目名词 这样的格式,短网址显示可以让它们显示成为 yourIP/wiki/条目名称 的形式,类似与Wikipedia的显示风格。
方法如下,首先在LocalSettings.php文件中添加如下语句:
# 修改wiki样式网络 $wgArticlePath = "/wiki/$1"; $wgUsePathInfo = true;
注意LocalSettings.php应该已有默认语句
$wgScriptPath = "/mediawiki";
然后进入 /etc/mediawiki/apach.conf文件中,在随意位置添加
Alias /wiki /var/lib/mediawiki/index.php
默认皮肤设置更改
mediawiki 1.15的默认皮肤是 MonoBook,而我更加偏爱wikipedia 跟 mediawiki.org 的Vector皮肤风格,所以我把系统升级到了1.19版本以兼容这个类型的皮肤。
如果有同学偏爱其他风格的皮肤,都可以在“设置——显示”中进行更改。
网站的log设置
默认的mediawiki网站log就是mediawiki.org的网站log,如果需要自己定义其他风格的网站log(比如LM智库的网站log),只需要将对应的网站log(注意像素为135*135的背景透明图片)代替如下地址的文件
var/lib/mediawiki/skins/common/images/wiki.png
这个方法需要经常备份你的log文件,否则wiki版本升级的时候,这个设置就会被冲掉了。
如果你不想有这样的麻烦,也可以在LocalSettings.php文件中添加如下语句
$wgLogo = /your/ico/address
上传文件配置
当用户登录LM智库之后,会发现在左侧侧边栏的“工具箱”一栏中有“上传文件”选项。用户做如下设置之后,即可以上传图像及其他类型文件了。
在LocalSettings.php文件中更改对应语句:
## To enable image uploads, make sure the 'images' directory ## is writable, then set this to true: $wgEnableUploads = true; $wgAllowExternalImages = true; $wgAllowCopyUploads = true;
可以开启图像上传功能,同时允许外链作为引用对象。
然后找到 /var/lib/mediawiki/includes/Defaults.php 文件,找到并更改$wgFileExtensions字串对应的值为你所需要的数据类型,比如:
$wgFileExtensions = array('png','gif','jpg','jpeg','doc','ppt','docx','pptx','avi','mp3','pdf','txt','rar','xls','zip','tar');
这样对上述类型的文件都可以上传。当然,有同学在上传的时候会发现仍然有问题,这一点我会在后续插件Upload中进行更为具体的解释。
此外,如果对上传文件大小的限制不满,还可以进行更改,找到/etc/php5/apache2/php.ini文件,找到并更改如下字串:
post_max_size = 80M upload_max_filesize = 80M
即可以改变单个文件上传大小的限制。
插件安装
原生的mediawiki的默认使用方式十分晦涩,需要使用者具备相当的html语言功底和足够的耐心,这个大概也是开源软件的通病,相对易用性而言,它们更愿意将注意力放在提升软件性能来接近商业软件。
不过好在国内外无数的meidawiki爱好者们为其开发了若干第三方插件,大大的丰富了它的功能,有兴趣的同学,可以在这个网站上进行一一寻找:mediawiki extensions扩展
同样与商业软件相比,开源的插件在兼容性上有着相对糟糕的表现。通过这些天的不断遴选,我认为如下几个插件很有必要安装。
WYSIWYG extension (版本1.5.6_0 [B551], CKEditor 3.6 (revision 6902))
评价
WYSIWYG的全称是What You See Is What You Get,所见即所得。通俗点说就是富文本编辑器。CKEditor只是其中的一个版本,mediawiki在1.18版本开始,会在extensions中默认放置另外一种富文本编辑器WikiEditor,只需要在LocalSettings.php设置对应选项即可激活。
进入文本编辑条目时,选择框上方的“使用富文本编辑器”即可以激活CKEditor编辑器。
在对比了CKEditor,WikiEditor,MeanEditor等多个编辑器之后,笔者还是选择了CKEditor这个版本,因为无论从界面表现还是选项丰富程度而言,这款WYSIWYG的表现都是最好的。但是美中不足的是,由于笔者缺乏经验,该款富文本编辑器仍然有一些瑕疵,希望后来的同学能够给出更好的建议。
- CKEditor的使用会带来一定的冗余代码。当掌握了一定的wiki语法之后,可能同学们更愿意自己排版页面以达到最好的使用效果,这时候笔者建议”禁用富文本“编辑器,直接使用默认的wiki编辑器即可。
- CKEditor在有一栏toolbar(即Semantic tools一栏)在默认安装的模式下并未激活,需要安装其他的插件才可以,笔者尝试了几次,以失败告终,导致某些功能无法激活。
- CKEditor有些功能并未集成到toolbar当中,比如说添加分类,加文本框等等,但是可以通过一些小技巧达到目的。
- CKEditor在IE浏览器下无法正常显示。
- 使用CKEditor会造成某些wiki语句不显示,直接以使用结果的方式表现,比如说分类语句([[Category:xxx]]),添加该语句后你你无法在文本框中找到它。这是个非常糟糕的严重问题,以至于必须得用第三方插件来避规,笔者正在研究解决方法……
当然,CKEditor的优点自不用说。
- 你终于可以自定义字体的大小,可以直观的选择文本的各级标题了。
- 你可以自由的添加表格,插入图画(虽然这个功能比word又差了很多)
- 你可以在ctrl-z之外,还有个”撤销“按键来回退。
- 最重要的是,你可以通过”从MS Word粘贴“的框栏中,将你的文档导入到wiki当中,可以基本保证你原本文档的排版风格,只需要做稍微修改就可以达成美化目的,而不需要从头再写一遍。
安装
进入网站,选择1.18x的安装文件(虽然是1.18版本,不过1.19确实也能使用)。
下载完成后,解压存放到/mediawiki/extensions/目录下。
进入LocalSettings.php文件,激活该插件
require_once("$IP/extensions/WYSIWYG/WYSIWYG.php"); $wgDefaultUserOptions['usebetatoolbar'] = 1; $wgDefaultUserOptions['usebetatoolbar-cgd'] = 1; $wgDefaultUserOptions['wikieditor-preview'] = 1;
Vector(版本0.3.0)
评价
如果你注意到了左边侧边栏的分类折叠效果,那么恭喜你,这个条目是你应该读的。在mediawiki的早期版本中,如果想做出侧边栏的折叠效果必须在skin/目录下更改对应皮肤文件的css效果,这个对笔者来说不亚于晴天霹雳。不过当安装了这个插件后,vector皮肤的折叠效果自然就出来了。
同时,安装了这款插件之后,一些原本会出现的css显示问题也都被解决了(比如富文本编辑器的显示),不知道两者之间是否有关联。
安装
下载完成后,解压存放到/mediawiki/extensions/目录下。
进入LocalSettings.php文件,激活该插件
# add Vector require_once( "$IP/extensions/Vector/Vector.php" );
SelectCategory(版本0.8.1)
评价
SelectCategory是为了在编辑条目过程中,方便添加条目分类项所加入的插件。加入该插件后,条目编辑者可以看见在所编辑文本框的下方有关于“分类”的树形图。编辑者可以根据自己的情况将本条目置于对应的一个或多个分类名称下。
但是,该插件在MW1.19版本下仍有一些问题:
无法通过AJAX将分类树形图层次化,日后分类项多了势必会非常冗余。在引入插件CategoryTree之后,分类可以以分类树的方式展现,直观漂亮。- 无法通过该工具添加新的分类,只能在已有的分类中进行选取。如果要添加新的分类,仍需要使用wiki语法:[[Category:分类]]来添加。
- 当某条目编辑完成时已经选取对应的分类,如果用户再次编辑该条目,用户需要再次选取该条目对应分类,否则有可能造成此条目分类为空的情况。
总体上说,该工具对于初次使用mediawiki的人来说,还是比较直观方便。因此笔者安装了此插件。对于上述的若干问题,也会在将来争取解决。
当掌握了一定的wiki语法之后,笔者仍然建议大家抛弃富文本编辑器,以纯文本的方式添加分类名称。
安装
下载完成后,解压存放到/mediawiki/extensions/目录下。
进入LocalSettings.php文件,激活该插件
require_once('extensions/SelectCategory/SelectCategory.php');
UploadLocal
评价
mediawiki自带的上传功能比较糟糕,即使对上传设置进行了配置,仍然难以达到批量上传的目的。为此笔者安装了插件UploadLocal,通过该插件可以ftp的方式批量上传文件,且文件类型不受限制(exe文件不可以直接上传,需要打包)。
总体来说,该插件在mediawiki下的表现尚佳,用户只很方便就可以将大量的文件上传至服务器,唯一的缺陷是对中文支持不好,因此注意需要在文件命名时使用英文。
安装
下载完成后,解压存放到/mediawiki/extensions/目录下。
进入LocalSettings.php文件,激活该插件
require_once("$IP/extensions/UploadLocal/UploadLocal.php"); $wgUploadLocalDirectory=your/upload/directory;
SyntaxHighlight
评价
SynataxHighlight是用来为代码高亮的插件,当代码文件较多时可以使用该插件达到代码高亮的目的,支持目前流行的多种编程语言。
安装
下载完成后,解压存放到/mediawiki/extensions/目录下。
进入LocalSettings.php文件,激活该插件
require_once("$IP/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php"); $wgSyntaxHighlightDefaultLang = "java";