安装MediaWiki
这一步网络上已经有不少教程。在这里不再赘述。这里安装的是1.34.0版本。
需要注意的是,在本文中,MediaWiki安装的目录是/var/www/website。MediaWiki的域名是https://www.example.com。
安装VisualEditor
安装VisualEditor
在这个页面选中对应版本的VisualEditor(这里是1.34.0),将其解压到/var/www/website/extensions。
然后在LocalSettings.php下添加:
wfLoadExtension( 'VisualEditor' );
$wgDefaultUserOptions['visualeditor-enable'] = 1;
$wgHiddenPrefs[] = 'visualeditor-enable';
不过你会发现,VisualEditor并不能正常运行。这是因为VisualEditor必须要有Parsoid支持才可以正常运作。因此我们需要先安装、配置Parsoid。
安装Parsoid
我将把Parsoid安装到/opt目录下。
由于Parsoid自身依赖于npm,所以我们需要安装npm:
sudo apt-get install nodejs npm
然后通过以下指令进入/opt,并解压安装Parsoid:
git clone https://gerrit.wikimedia.org/r/p/mediawiki/services/parsoid
cd parsoid
npm install
然后我们要配置Parsoid,简而言之,就是修改Parsoid目录下面的config.yaml。不过在这一步之前,我们需要先把配置样本写入config.yaml:
cp config.example.yaml config.yaml
然后通过自己喜欢的编辑器打开config.yaml,找到以下代码块:
uri: 'http://localhost/api.php'
domain: 'localhost' # optional
serverPort: 8000
serverInterface: '127.0.0.1'
将其修改为:
uri: 'https://www.example.com/api.php'
domain: 'localhost' # optional
serverPort: 8000
serverInterface: '127.0.0.1'
注:我在网上看到大部分教程里面,uri用的是域名/wiki/api.php。我想这可能是因为这些教程是几年前写的,那个时候的MediaWiki版本和现在有所不同。总之,你可以把uri那里的地址打开看看是不是有api.php。
然后可以通过以下指令来检查Parsoid是否能够接通api。
运行
nohup node bin/server.js &
测试
curl localhost:8000
然后打开LocalSettings.php,在下面添加:
$wgVirtualRestConfig['modules']['parsoid'] = array(
'url' => 'http://localhost:8000',
'domain' => 'localhost',
'prefix' => 'localhost'
);
让Parsoid开机自启动
现在VisualEditor应该已经可以正常运行了。但是让很多人,包括我苦恼的是,VisualEditor在服务器重新开机以后,就不能正常运行了。提示无法连接。
你会发现,如果我们通过以下指令进入Parsoid的安装目录,并手动运行server.js,那么VisualEditor就可以用了。
cd /opt/parsoid
node bin/server.js
但如果每次开机后都要手动启动Parsoid。那也太麻烦了。好在我们有办法让Parsoid开机自启动!
先创建环境配置文件:
nano /opt/parsoid/parsoid.env
写入以下内容:
PORT=8000
NODE_PATH=/opt/parsoid/node_modules
为Parsoid注册服务:
nano /lib/systemd/system/parsoid.service
注:这个目录可能会根据服务器的不同而有所不同。请自行查询自己服务器注册服务都在哪个目录里。
写入以下内容:
[Unit]
Description=Mediawiki Parsoid web service on node.js
Documentation=http://www.mediawiki.org/wiki/Parsoid
Wants=local-fs.target network.target
After=local-fs.target network.target
[Install]
WantedBy=multi-user.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/parsoid
EnvironmentFile=-/opt/parsoid/parsoid.env
ExecStart=/usr/bin/node /opt/parsoid/bin/server.js
KillMode=process
Restart=on-success
PrivateTmp=true
StandardOutput=syslog
启动Parsoid 服务:
systemctl start parsoid.service
设置Parsoid开机自启动:
systemctl enable parsoid.service
大功告成。你可以通过以下指令来检查Parsoid服务状态:
systemctl status parsoid.service
smtp邮件系统
先要安装两个PEAR包:
sudo pear install mail
sudo pear install net_smtp
打开LocalSettings.php,根据自己邮箱的smtp写入:
$wgSMTP = array(
'host' => 'ssl://smtp.gmail.com',
'IDHost' => 'gmail.com',
'port' => 465,
'username' => '[email protected]',
'password' => 'PASSWORD',
'auth' => true
);
审核管理机制
这里我通过MediaWiki的FlaggedRevs插件来实现审核管理机制。以下是MediaWiki官方对此插件的描述:
标记修订扩展允许编辑者和审核成员用户对相应版本的修订版本进行评级,将这些修订设置为在普通查看页面时的预定版本。甚至包含的模板或图片被更改,这些修订也将保持不变。这让MediaWiki更像是一个内容管理系统(CMS)。
在这个页面选中对应版本的FlaggedRevs(这里是1.34.0),将其解压到/var/www/website/extensions。
禁止匿名用户编辑
在LocalSettings.php中写入以下内容,从而使匿名用户不会看到Edit:
$wgGroupPermissions['*']['edit'] = false;
一些必要的操作
运行以下指令,进入MediaWiki的根目录,并且通过运行populateImageSha1.php 维护脚本确保图像的哈希值是最新的:
php maintenance/populateImageSha1.php
接下来我们要确保extensions/FlaggedRevs/frontend/modules目录可由Web服务器读取:
chmod o+r /var/www/website/extensions/FlaggedRevs/frontend/modules
接下来我们要启用条目审阅统计信息的收集。分为两步:1. 禁用按需统计信息生成。2. 设置计划的统计信息生成。
我们在LocalSettings.php里面添加以下内容,来实现禁用按需统计信息生成:
$wgFlaggedRevsStatsAge = false;
对于设置计划的统计信息生成,我们想要创建一个cron作业,来定期运行/var/www/website/extensions/FlaggedRevs/maintenance/updateStats.php。
通过以下代码,我们可以设置每一小时运行一次,当然你应该根据自己的实际需要进行调整:
echo "@hourly php /var/www/website/extensions/FlaggedRevs/maintenance/updateStats.php" | crontab -u www-data -
配置FlaggedRevs
在LocalSettings.php里添加以下内容来启用FlaggedRevs:
require_once("$IP/extensions/FlaggedRevs/FlaggedRevs.php");
如果你这个时候去刷新你的Wiki网站,你会得到一个数据库错误。不要担心,这是一定会出现的。你要做的是在MediaWiki的安装目录下,运行以下指令来更新数据库结构:
php maintenance/update.php
现在还没有任何人可以审核(所以即使是管理员也没有办法改变用户群组)。所以第一步是要设置用户权限,将这些用户权限授予给LocalSettings.php中已存在的用户组,我们通过在LocalSettings.php添加以下内容来实现:
$wgGroupPermissions['sysop']['review'] = true;
然后只要登陆管理员账号,就可以在Special:UserRights页面改变用户的群组了。
Infobox模板
在导入Infobox之前,我们先把维基百科的一些通用CSS和JS拷到我们自己的百科站点。
以common.css为例,打开 https://en.wikipedia.org/wiki/MediaWiki:Common.css
然后把内容复制到https://www.example.com/MediaWiki:Common.css。只要打开这个页面,登录管理员账号,然后修改源代码就可以。
然后我们还需要拷贝mobile.css,common.js。方法一样。
但是mobile.css默认不会被加载,我们需要修改我们的Mobile.js,写入:
mw.loader.using('mobile.site.styles');
想要从Wikipedia那里安装Infobox的话,要安装TemplateStyles、Scribunto以及ParserFunctions。
安装TemplateStyles
请注意,TemplateStyles请务必安装1.31版本的。
在这个页面选中1.31版本的TemplateStyles,将其解压到/var/www/website/extensions。
然后在LocalSettings.php下添加:
wfLoadExtension( 'TemplateStyles' );
安装Scribunto
在这个页面选中对应版本的TemplateStyles,将其解压到/var/www/website/extensions。
然后我们得让lua可以被运行:我们通过以下指令来完成这个点:
chmod a+x /var/www/website/extensions/Scribunto/includes/engines/LuaStandalone/binaries/lua5_1_5_linux_64_generic/lua
chcon -t httpd_sys_script_exec_t /path/to/extensions/Scribunto/includes/engines/LuaStandalone/binaries/lua5_1_5_linux_64_generic/lua
如果你的安装目录不同,请把/var/www/website修改成里的安装目录。如果你的操作系统不是linux 64,那么请把lua5_1_5_linux_64_generic修改成对应的操作系统。你可以用以下方式获知操作系统的名字:
cd /var/www/website/extensions/Scribunto/includes/engines/LuaStandalone/binaries
ls
然后在LocalSettings.php下添加:
wfLoadExtension( 'Scribunto' );
$wgScribuntoDefaultEngine = 'luastandalone';
鸣谢
- Ubuntu下部署MediaWiKi小记:本文的主干部分参考了隔壁老王 | Jack’s Blog的这篇文章,主要根据MediaWiki现时的版本进行了更新。
- MediaWiki