2021年6月23日更新

本来没想要更新的,直到今天群里有朋友贴了一段配置代码,就知道很多人可能“吃药”了。在MediaWiki升级到1.35之后,Parsoid服务被PHP重构了,直接装入源码中,可视化编辑器变得“开箱即用”,所以下面的文章极有可能会成为历史。


MediaWiki的可视化编辑器从2011年5月立项开始,发展到至今快6个年头,而真正走入大众视野却是在2017年的年中。目前维基百科的默认编辑器就是VisualEditor,它的所见即所得的特性提高了用户的体验,降低了入门门槛并提升了编辑维基的乐趣。
VisualEditor的原理,简单来说就是通过后台Parsoid 的程序来承担把wiki标记转化成html的任务,同时VisualEditor以插件的形式在MediaWiki中运行,用户可以在原来的编辑界面直接使用,编辑者角度上几乎无学习成本。
而它的安装难度要大于其他扩展程序,主要也就在于需要Parsoid服务(它是一个基于Nodejs的解析器服务。 它被许多MediaWiki扩展使用,包括VisualEditor,Flow,内容翻译和其他应用程序)的支持。而官方文档上除了有Ubuntu和Debian的安装方法外(基本上属于自动安装),没有给出CentOS的安装方法。
本文以指导如何在CentOS7下安装VisualEditor。

提示:

  • 在安装VisualEditor前请先确保你的MediaWiki已正确安装,并能编辑页面。
  • 文中的MeidaWiki版本为1.30,皮肤为Vector(VisualEditor目前已知兼容的皮肤为:Vector、MonoBook、Apex和Minerva)

    一、安装Parsoid

    MediaWiki-VisualEditor-error.png
    这是为在没有安装Parsoid的情况下,系统提示的错误信息。你虽然能够看到一个可视化编辑器的样式却无法使用。

    1、安装依赖关系

    要安装Parsoid服务并配置VisualEditor,我们需要在系统上安装一些CentOS软件包。 具体来说,我们将安装Nodejs,npm,vim和git。
    使用下面的yum命令安装所有需要的软件包。(如果你使用宝塔面板,那么在软件商店中安装PM2管理器,并且选择你的Node版本)。

    yum -y install nodejs npm vim-enhanced git

    所有的软件包和依赖项已经安装。

    2、安装并配置Parsoid

    Parsoid可以安装在单独的MediaWiki服务器上。 但是对于本教程,我们默认是将MediaWiki和Parsoid安装在同一个CentOS 7服务器。
    现在,由于我们使用的是CentOS 7服务器,因此我们需要手动安装Parsoid服务,因为官方软件包仅适用于基于Ubuntu / Debian的操作系统。
    因此,首先创建一个新的/ opt / parsoid目录,并使用git命令克隆最新的parsoid,如下所示。

    mkdir -p /opt/parsoid
    git clone https://gerrit.wikimedia.org/r/mediawiki/services/parsoid /opt/parsoid

    Parsoid-install-step1.png
    现在进入“/ opt / parsoid”目录,使用下面的npm命令安装Parsoid服务。

    cd /opt/parsoid
    npm install

    安装完成后,您将得到如下结果。
    Parsoid-install.png
    接下来,通过编辑相应的配置文件来配置Parsoid服务。
    将示例配置“localsettings.example.js”复制到“localsettings.js”,然后使用vim编辑该文件。

    cp localsettings.example.js localsettings.js
    vim localsettings.js

    取消注释“parsoidConfig.setMwApi”行,并使用MediaWiki API URL更改“uri”值,如下所示。

    exports.setup = function(parsoidConfig) {
           // Do something dynamic with `parsoidConfig` like,
           parsoidConfig.setMwApi({
                   uri: 'http://wiki.mindseed.cn/api.php',
            });
     };

    保存并退出。
    现在将'config.example.yaml'配置复制到'config.yaml'并用vim编辑器进行编辑。

    cp config.example.yaml config.yaml
    vim config.yaml

    在“mwApis”行(第34行)上,使用MediaWiki API URL和“域”值更改“uri”值,并使用您自己的域名。

     mwApis:
           - # This is the only required parameter,
             # the URL of you MediaWiki API endpoint.
             uri: 'http://wiki.mindseed.cn/api.php'
             # The "domain" is used for communication with Visual Editor
             # and RESTBase.  It defaults to the hostname portion of
             # the `uri` property above, but you can manually set it
             # to an arbitrary string. It must match the "domain" set
             # in $wgVirtualRestConfig.
             domain: 'wiki.mindseed.cn' 
             #optional

    Parsoid-config.png
    保存并退出。
    接下来,我们将Parsoid配置为一项服务。 为此,转至“/ etc / systemd / system”目录并创建一个名为“parsoid.service”的新服务文件

    cd /etc/systemd/system/
    vim parsoid.service

    粘贴下面的Parsoid服务配置。

     [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
     Group=root
     WorkingDirectory=/opt/parsoid
     ExecStart=/usr/bin/node /opt/parsoid/bin/server.js
     KillMode=process
     Restart=on-success
     PrivateTmp=true
     StandardOutput=syslog

    注意:如果你使用的是nvm方式安装Node,那么ExecStart=/usr/bin/node这行需要修改成实际的地址(我的地址为/usr/local/n/versions/node/版本号/bin/node),否则你的parsoid是没有办法运行起来的。至于用户和用户组可以根据自己的需要新建一个专用的。
    保存并退出。 然后执行以下reload命令。

    systemctl daemon-reload

    现在,启动Parsoid服务,并使其在系统启动时每次执行。

    systemctl start parsoid
    systemctl enable parsoid

    Parsoid现在应该在CentOS 7上作为一项服务运行,使用8000端口。您可以通过以下方式使用netstat命令进行检查。

    netstat -plntu

    你应该得到类似于以下的结果:

    tcp6 0 0 :::8000 :::* LISTEN

语法安装和配置已经完成。
注意:如果你使用云服务器的话,别忘了将安全组中的8000端口放行,否则还是会报错。
好了,打开浏览器,输入你的域名:8000,页面如下:
mediawiki-parsoid-port-8000.png

3、安装并配置可视化编辑器

安装插件就简单多了,打开配置文件LocalSettings.php,输入:

## 启用可视化编辑器
wfLoadExtension( 'VisualEditor' );

# 默认对所有用户启用
$wgDefaultUserOptions['visualeditor-enable'] = 1;

# 在条目、模板、用户中开启VisualEditor
$wgVisualEditorAvailableNamespaces = [
    NS_MAIN => true,
    NS_USER => true,
    NS_TEMPLATE => true,
];

$wgVirtualRestConfig['modules']['parsoid'] = array(
     // URL to the Parsoid instance
     // Use port 8142 if you use the Debian package
     'url' => 'http://wiki.mindseed.cn:8000',
     // Parsoid "domain", see below (optional)
     'domain' => 'wiki.mindseed.cn',
     // Parsoid "prefix", see below (optional)
     'prefix' => 'wiki.mindseed.cn'
 );

MediaWiki-VisualEditor.png

问题

1、“编辑”标签和“编辑源代码”标签共存

安装完之后,每个页面就会重复出现“编辑”和“编辑源代码”的标签,而当你点击任何一个都会默认进入到可视化编辑器中。
MediaWiki-2-Edite-flag.png
MediaWiki官网的参数设置中有一个编辑模式的选项。
editor-mode.png
解决方法:在LocalSettings.php中加入如下代码

$wgVisualEditorUseSingleEditTab = true;
$wgDefaultUserOptions['visualeditor-editor'] = "visualeditor";

如果不希望在参数设置中显示“编辑模式”的选项,可以在上述代码中继续加一行

$wgHiddenPrefs[] = 'visualeditor-tabs';

2、除了条目外,是否能将可视化编辑器用在模板和其他命名空间

除了主条目外,可视化编辑器也可以用于其他命名空间,比如你自己新建的命名空间,如下面的MYTEST。

# 在条目、模板、用户中开启VisualEditor
$wgVisualEditorAvailableNamespaces = [
    NS_MAIN => true,
    NS_USER => true,
    NS_TEMPLATE => true,
    NS_MYTEST => true,
];

3、错误:apierror-visualeditor-docserver-http-error

在LocalSettings.php中$wgVirtualRestConfig['modules']['parsoid']那一段url如果你使用https则可能出现这样的错误,你可以将https改为http试一下。
apierror-visualeditor-docserver-http-error.png
如果Parsoid和MediaWiki安装在同一个服务器下,那么最根本的方法就是将网址改成localhost

$wgVirtualRestConfig['modules']['parsoid'] = array(
     // URL to the Parsoid instance
     // Use port 8142 if you use the Debian package
     'url' => 'localhost:8000',
     // Parsoid "domain", see below (optional)
     'domain' => 'wiki.mindseed.cn',
     // Parsoid "prefix", see below (optional)
     'prefix' => 'wiki.mindseed.cn'
 );

参考文章:
How to Install VisualEditor for MediaWiki on CentOS 7
如何在CentOS 7上安装MediaWiki的VisualEditor
VisualEditor安装笔记

最后修改:2021 年 06 月 23 日
如果觉得我的文章对你有用,请随意赞赏