Mediawiki配置:修订间差异

来自牛奶河Wiki
跳到导航 跳到搜索
无编辑摘要
 
(未显示同一用户的17个中间版本)
第2行: 第2行:


MediaWiki采用PHP编程语言写成,并可使用MySQL、MariaDB、PostgreSQL或SQLite之一作为其关系数据库管理系统。
MediaWiki采用PHP编程语言写成,并可使用MySQL、MariaDB、PostgreSQL或SQLite之一作为其关系数据库管理系统。
=== 镜像 ===
<small><nowiki># mc1
HN=10.0.0.141
同步:
# DB
rsync -arvu --progress ${HN}:/u01/web/db/mediawiki /u01/web/db/
# Image, etc...
rsync -arvu --progress ${HN}:/u01/web/wiki/images /u01/web/wiki</nowiki></small>


===LocalSettings.php===
===LocalSettings.php===
====服务器地址====
====服务器地址====
换域名需要变更(如同步至测试环境、镜像环境等)
<small><nowiki># 换域名需要变更(如同步至测试环境、镜像环境等)


$wgServer = "<nowiki>http://www.mwbbs.tk</nowiki>";
$wgServer = "https://mwbbs.eu.org";
$wgServer = "";        # 不需要绑定域名</nowiki></small>


====未注册用户不可编辑====
====未注册用户不可编辑====
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['edit'] = false;
====不可注册====
====不可注册====
$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['*']['createaccount'] = false;
====已注册用户可注册新用户====
====已注册用户可注册新用户====
$wgGroupPermissions['user']['createaccount'] = true;
$wgGroupPermissions['user']['createaccount'] = true;
==== 发送邮件设置 ====
<small><nowiki>$wgEnableEmail = true;
$wgEnableUserEmail = true; # UPO
$wgSMTP = array(
'host'     => "smtp-mail.outlook.com",    //邮箱要求加密连接,前面加:ssl://
'IDHost'   => "outlook.com",
'port'     => 587,
'auth'     => true,                       // 需要登录
'username' => "[email protected]",   // 提供 SMTP 服务的邮箱账号
'password' => "MWw.d.123"              // SMTP 认证的密码
);
 
$wgEmergencyContact = "[email protected]";
$wgPasswordSender = "MWw.d.123";
$wgPasswordSenderName = '[email protected]';
$wgEnotifUserTalk = true; # UPO
$wgEnotifWatchlist = false; # UPO
$wgEmailAuthentication = true;
 
按以上配置,未见发邮件,只是不报错了。</nowiki></small>
 
===== Error =====
牛奶河Wiki不能发送确认邮件。 请检查您的邮箱地址是否包含无效字符。
 
* $wgSMTP:host,配置成 ssl://,报错:邮件发送器的返回信息:Failed to connect to ssl://smtp-mail.outlook.com:587 [SMTP: Failed to connect socket: fsockopen(): unable to connect to ssl://smtp-mail.outlook.com:587 (Unknown error) (code: -1, response: )]
* 邮件发送器的返回信息: authentication failure [SMTP: Invalid response code received from server (code: 535, response: 5.7.3 Authentication unsuccessful [LO4P123CA0531.GBRP123.PROD.OUTLOOK.COM])]
* 邮件发送器的返回信息: authentication failure [SMTP: Invalid response code received from server (code: 535, response: 5.7.3 Authentication unsuccessful [LO2P265CA0145.GBRP265.PROD.OUTLOOK.COM])]
 
----原配置
 
<nowiki>###</nowiki> $wgEmergencyContact = "";
 
<nowiki>###</nowiki> $wgPasswordSender = "";
 
<nowiki>###</nowiki> $wgEnotifUserTalk = false; # UPO
 
<nowiki>###</nowiki> $wgEnotifWatchlist = false; # UPO
 
<nowiki>###</nowiki> $wgEmailAuthentication = true;
 
==== 授权方式 ====
 
===== 无 =====
<nowiki>##</nowiki> For attaching licensing metadata to pages, and displaying an
 
<nowiki>##</nowiki> appropriate copyright notice / icon. GNU Free Documentation
 
<nowiki>##</nowiki> License and Creative Commons licenses are supported so far.
 
$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
 
$wgRightsUrl = "";
 
$wgRightsText = "";
 
$wgRightsIcon = "";
 
===== 知识共享署名-相同方式共享 =====
$wgRightsPage = "";
 
$wgRightsUrl = "<nowiki>https://creativecommons.org/licenses/by-sa/4.0/</nowiki>";
 
$wgRightsText = "知识共享署名-相同方式共享";
 
$wgRightsIcon = "$wgResourceBasePath/resources/assets/licenses/cc-by-sa.png";


==== 疑问/尚不清楚 ====
==== 疑问/尚不清楚 ====
===== 数据库复制 =====
下列配置出现在数据库配置区域,感觉像是复制了一份数据库,但无地址,无法判断,删除后不影响使用。
下列配置出现在数据库配置区域,感觉像是复制了一份数据库,但无地址,无法判断,删除后不影响使用。
<small><nowiki>$wgObjectCaches['db-replicated'] = [
'factory' => 'Wikimedia\ObjectFactory\ObjectFactory::getObjectFromSpec',
'args' => [ [ 'factory' => 'ObjectCache::getInstance', 'args' => [ CACHE_DB ] ] ]
];</nowiki></small>


$wgObjectCaches['db-replicated'] = [
===== 扩展:AbuseFilter =====
增加后,查看历史报错。
<small><nowiki>数据库错误
出现数据库查询错误。这可能表示软件中存在漏洞。
[de469599c3e96adad328cf25] 2022-12-29 12:42:34: 类型“Wikimedia\Rdbms\DBQueryError”的致命异常</nowiki></small>


'factory' => 'Wikimedia\ObjectFactory\ObjectFactory::getObjectFromSpec',
===== 扩展:OATHAuth =====
增加后,登录报错。
<small><nowiki>数据库错误
出现数据库查询错误。这可能表示软件中存在漏洞。
[8b7f27bdbb64400300154b26] 2022-12-29 12:46:24: 类型“Wikimedia\Rdbms\DBQueryError”的致命异常</nowiki></small>


'args' => [ [ 'factory' => 'ObjectCache::getInstance', 'args' => [ CACHE_DB ] ] ]
===== 扩展:VisualEditor =====
<small><nowiki>使用一段时间后(两年),使用可视编辑功能报错。
[1e8bb4e427e477bad1672d63] Caught exception of type RuntimeException
有说可能是 php7-zlib 的问题,需要安装/重安装;
实际情况是重启 Apache2 正常。</nowiki></small>


];
=== 其他修改 ===


====/includes/WebStart.php====
不起作用
''<!DOCTYPE html>
<html>
<head><meta charset="UTF-8" />''
'''<meta name='description' content='牛奶河BBS - 牛奶河Wiki BBS、论坛、Wiki、百科'>'''
''</head>''
=== 扩展(extensions) ===
=== 扩展(extensions) ===
安装方法:
*安装依赖组件。
*安装依赖组件。
*下载文件,并将其放置在您extensions/文件夹中的 XXX 目录内。
*下载扩展文件,放置在 extensions/XXX
*将下列代码放置在您的LocalSettings.php的底部:
在 LocalSettings.php 末尾增加
**wfLoadExtension( 'XXX' );
wfLoadExtension( 'XXX' );
如:wfLoadExtension( 'VisualEditor' );
 
导航至 [https://{{SERVERNAME}}/wiki/index.php/Special:Version 验证已成功安装]


*完成 – 在您的wiki上导航至 Special:Version,以验证已成功安装扩展。
====扩展:Popups====
====扩展:Popups====
当用户将鼠标悬停在一个页面和分别的引用时,'''弹窗'''(Popups)扩展会预览一篇文章的内容,对于引用,还会显示引用的完整内容。
当用户将鼠标悬停在一个页面和分别的引用时,[https://www.mediawiki.org/wiki/Extension:Popups 弹窗(Popups)扩展]会预览一篇文章的内容,对于引用,还会显示引用的完整内容。


This extension has a hard dependency on '''[[Mediawiki帮助#扩展:TextExtracts|Extension:TextExtracts]]''' and '''Extension:PageImages''' when used with the default <code>mwApiPlain</code> gateway.  
This extension has a hard dependency on '''[[Mediawiki帮助#扩展:TextExtracts|Extension:TextExtracts]]''' and '''Extension:PageImages''' when used with the default <code>mwApiPlain</code> gateway.  
*https://www.mediawiki.org/wiki/Extension:Popups
**wget https://extdist.wmflabs.org/dist/extensions/Popups-REL1_39-fedc2c6.tar.gz


==== 1.3.9 已内置扩展 ====
[https://extdist.wmflabs.org/dist/extensions/Popups-REL1_39-fedc2c6.tar.gz Popups 1.39 Download]
 
==== 1.39 已内置扩展 ====


===== 扩展:TextExtracts =====
===== 扩展:TextExtracts =====
*git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/TextExtracts.git
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/TextExtracts.git


===== 扩展:页面图像 =====
===== 扩展:页面图像 =====
*https://www.mediawiki.org/wiki/Special:ExtensionDistributor/PageImages
https://www.mediawiki.org/wiki/Special:ExtensionDistributor/PageImages
**wget https://extdist.wmflabs.org/dist/extensions/PageImages-REL1_39-6f03b4a.tar.gz
https://extdist.wmflabs.org/dist/extensions/PageImages-REL1_39-6f03b4a.tar.gz
[[分类:Doc]]
 
[[分类:Help]]
==== wgHooks ====
$wgHooks 是一个全局变量,用于存储 MediaWiki 中的各种钩子,允许在不修改核心代码的情况下,在特定事件发生时执行自定义代码。如:'BeforePageDisplay' 是一个在页面最终渲染前触发的钩子。
 
==== LaTeX ====
让页面具备 LaTeX 解析能力(通过 [https://github.com/KaTeX/KaTeX KaTeX])
<small><nowiki># 在 MediaWiki 页面显示之前,自动加载 KaTeX 库及其 auto-render 扩展,并配置 auto-render 扩展使用 $$ 作为数学公式的分隔符。
# 1. 将 https://github.com/KaTeX/KaTeX 下载并解压的目录 katex 放入 /js/ 中
# 2. 在 LocalSettings.php 增加下列代码(需清缓存,无需重启):
$wgHooks['BeforePageDisplay'][] = function( OutputPage &$out, Skin &$skin ) {
  $out->addScript('
    <link rel="stylesheet" href="/js/katex/katex.min.css"/>
    <script defer src="/js/katex/katex.min.js"></script>
    <script defer src="/js/katex/contrib/auto-render.min.js" onload="renderMathInElement(document.body);"></script>
    <script>
      document.addEventListener("DOMContentLoaded", function() {
        renderMathInElement(document.body, {
          delimiters: [
            {left: \'$$\', right: \'$$\', display: true},
            {left: \'$\', right: \'$\', display: false}
          ],
          throwOnError : false
        });
      });
    </script>
  ');
};</nowiki></small>
 
[[分类:Develop]]
[[分类:Platform]]
[[分类:Web]]

2025年3月13日 (四) 09:43的最新版本

MediaWiki是一套基于网络的Wiki引擎,维基媒体基金会的所有项目乃至众多wiki网站都使用了这软件。MediaWiki软件最初是为自由内容百科全书维基百科开发,今日已被一些公司机构用作内部知识管理和内容管理系统。Novell甚而还在多个高流量的网站中使用了该软件。

MediaWiki采用PHP编程语言写成,并可使用MySQL、MariaDB、PostgreSQL或SQLite之一作为其关系数据库管理系统。

镜像

# mc1
HN=10.0.0.141

同步:
# DB
 rsync -arvu --progress ${HN}:/u01/web/db/mediawiki /u01/web/db/
# Image, etc...
 rsync -arvu --progress ${HN}:/u01/web/wiki/images /u01/web/wiki

LocalSettings.php

服务器地址

# 换域名需要变更(如同步至测试环境、镜像环境等)

$wgServer = "https://mwbbs.eu.org";
$wgServer = "";        # 不需要绑定域名

未注册用户不可编辑

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

不可注册

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

已注册用户可注册新用户

$wgGroupPermissions['user']['createaccount'] = true;

发送邮件设置

$wgEnableEmail = true;
$wgEnableUserEmail = true; # UPO
$wgSMTP = array(
'host'     => "smtp-mail.outlook.com",    //邮箱要求加密连接,前面加:ssl://
'IDHost'   => "outlook.com",
'port'     => 587,
'auth'     => true,                       // 需要登录
'username' => "[email protected]",   // 提供 SMTP 服务的邮箱账号
'password' => "MWw.d.123"              // SMTP 认证的密码
);

$wgEmergencyContact = "[email protected]";
$wgPasswordSender = "MWw.d.123";
$wgPasswordSenderName = '[email protected]';
$wgEnotifUserTalk = true; # UPO
$wgEnotifWatchlist = false; # UPO
$wgEmailAuthentication = true;

按以上配置,未见发邮件,只是不报错了。
Error

牛奶河Wiki不能发送确认邮件。 请检查您的邮箱地址是否包含无效字符。

  • $wgSMTP:host,配置成 ssl://,报错:邮件发送器的返回信息:Failed to connect to ssl://smtp-mail.outlook.com:587 [SMTP: Failed to connect socket: fsockopen(): unable to connect to ssl://smtp-mail.outlook.com:587 (Unknown error) (code: -1, response: )]
  • 邮件发送器的返回信息: authentication failure [SMTP: Invalid response code received from server (code: 535, response: 5.7.3 Authentication unsuccessful [LO4P123CA0531.GBRP123.PROD.OUTLOOK.COM])]
  • 邮件发送器的返回信息: authentication failure [SMTP: Invalid response code received from server (code: 535, response: 5.7.3 Authentication unsuccessful [LO2P265CA0145.GBRP265.PROD.OUTLOOK.COM])]

原配置

### $wgEmergencyContact = "";

### $wgPasswordSender = "";

### $wgEnotifUserTalk = false; # UPO

### $wgEnotifWatchlist = false; # UPO

### $wgEmailAuthentication = true;

授权方式

## For attaching licensing metadata to pages, and displaying an

## appropriate copyright notice / icon. GNU Free Documentation

## License and Creative Commons licenses are supported so far.

$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright

$wgRightsUrl = "";

$wgRightsText = "";

$wgRightsIcon = "";

知识共享署名-相同方式共享

$wgRightsPage = "";

$wgRightsUrl = "https://creativecommons.org/licenses/by-sa/4.0/";

$wgRightsText = "知识共享署名-相同方式共享";

$wgRightsIcon = "$wgResourceBasePath/resources/assets/licenses/cc-by-sa.png";

疑问/尚不清楚

数据库复制

下列配置出现在数据库配置区域,感觉像是复制了一份数据库,但无地址,无法判断,删除后不影响使用。

$wgObjectCaches['db-replicated'] = [
'factory' => 'Wikimedia\ObjectFactory\ObjectFactory::getObjectFromSpec',
'args' => [ [ 'factory' => 'ObjectCache::getInstance', 'args' => [ CACHE_DB ] ] ]
];
扩展:AbuseFilter

增加后,查看历史报错。

数据库错误
出现数据库查询错误。这可能表示软件中存在漏洞。
[de469599c3e96adad328cf25] 2022-12-29 12:42:34: 类型“Wikimedia\Rdbms\DBQueryError”的致命异常
扩展:OATHAuth

增加后,登录报错。

数据库错误
出现数据库查询错误。这可能表示软件中存在漏洞。
[8b7f27bdbb64400300154b26] 2022-12-29 12:46:24: 类型“Wikimedia\Rdbms\DBQueryError”的致命异常
扩展:VisualEditor
使用一段时间后(两年),使用可视编辑功能报错。
[1e8bb4e427e477bad1672d63] Caught exception of type RuntimeException
有说可能是 php7-zlib 的问题,需要安装/重安装;
实际情况是重启 Apache2 正常。

其他修改

/includes/WebStart.php

不起作用

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8" />
<meta name='description' content='牛奶河BBS - 牛奶河Wiki BBS、论坛、Wiki、百科'>
</head>

扩展(extensions)

  • 安装依赖组件。
  • 下载扩展文件,放置在 extensions/XXX

在 LocalSettings.php 末尾增加

wfLoadExtension( 'XXX' );
如:wfLoadExtension( 'VisualEditor' );

导航至 验证已成功安装

扩展:Popups

当用户将鼠标悬停在一个页面和分别的引用时,弹窗(Popups)扩展会预览一篇文章的内容,对于引用,还会显示引用的完整内容。

This extension has a hard dependency on Extension:TextExtracts and Extension:PageImages when used with the default mwApiPlain gateway.

Popups 1.39 Download

1.39 已内置扩展

扩展:TextExtracts
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/TextExtracts.git
扩展:页面图像
https://www.mediawiki.org/wiki/Special:ExtensionDistributor/PageImages
https://extdist.wmflabs.org/dist/extensions/PageImages-REL1_39-6f03b4a.tar.gz

wgHooks

$wgHooks 是一个全局变量,用于存储 MediaWiki 中的各种钩子,允许在不修改核心代码的情况下,在特定事件发生时执行自定义代码。如:'BeforePageDisplay' 是一个在页面最终渲染前触发的钩子。

LaTeX

让页面具备 LaTeX 解析能力(通过 KaTeX

# 在 MediaWiki 页面显示之前,自动加载 KaTeX 库及其 auto-render 扩展,并配置 auto-render 扩展使用 $$ 作为数学公式的分隔符。
# 1. 将 https://github.com/KaTeX/KaTeX 下载并解压的目录 katex 放入 /js/ 中
# 2. 在 LocalSettings.php 增加下列代码(需清缓存,无需重启):
$wgHooks['BeforePageDisplay'][] = function( OutputPage &$out, Skin &$skin ) {
  $out->addScript('
    <link rel="stylesheet" href="/js/katex/katex.min.css"/>
    <script defer src="/js/katex/katex.min.js"></script>
    <script defer src="/js/katex/contrib/auto-render.min.js" onload="renderMathInElement(document.body);"></script>
    <script>
      document.addEventListener("DOMContentLoaded", function() {
        renderMathInElement(document.body, {
          delimiters: [
            {left: \'$$\', right: \'$$\', display: true}, 
            {left: \'$\', right: \'$\', display: false}
          ], 
          throwOnError : false
        });
      });
    </script>
  ');
};