MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
MCBBS Wiki:运维笔记:修订间差异
(→VisualEditor: // Edit via Wikiplus) |
(→Varnish: // Edit via Wikiplus) |
||
第51行: | 第51行: | ||
==Varnish== |
==Varnish== |
||
首先,要确保 Varnish 相关缓存逻辑正常工作,必须在 LocalSettings.php 设置 <code>$wgUseCdn = true;</code> |
|||
===Parsoid 405=== |
===Parsoid 405=== |
||
若编辑部分页面时出现<code>连接至Parsoid/RESTBase服务器错误(HTTP 405)</code> |
若编辑部分页面时出现<code>连接至Parsoid/RESTBase服务器错误(HTTP 405)</code> |
||
配置 vcl 规则,直接请求 api.php 和 rest.php 不经过缓存。 |
|||
<pre>if (req.url ~ "api.php" || req.url ~ "rest.php") |
<pre>if (req.url ~ "api.php" || req.url ~ "rest.php") |
||
return (pass); |
return (pass); |
||
第61行: | 第62行: | ||
Popups 默认情况下无论是否开启埋点功能,都会初始化 sessionId 并存储于 cookies 中,导致请求不经过缓存。 |
Popups 默认情况下无论是否开启埋点功能,都会初始化 sessionId 并存储于 cookies 中,导致请求不经过缓存。 |
||
编辑 <code>extensions/Popups/includes/PopupsContext.php</code> 的第 198 行 |
编辑 <code>extensions/Popups/includes/PopupsContext.php</code> 的第 198 行: |
||
<pre>return false;</pre> |
<pre>return false;</pre> |
||
即可实现仅登录用户启用 Popups 。 |
即可实现仅登录用户启用 Popups 。 |
||
===HTTP 模式下 PURGE 请求=== |
|||
MediaWiki 默认情况下,页面更新时会发送 PURGE 代理请求 Varnish 清理缓存。这仅适用于 Varnish 被配置为 HTTP 正向代理模式时。 |
|||
如果 Varnish 在 HTTP 模式下工作,编辑 <code>includes/deferred/CdnCacheUpdate.php</code> 的 304 行: |
|||
<pre>$reqs[] = ( $baseReq );</pre> |
|||
以及 297 行: |
|||
<pre>'Host' => $urlInfo['host'],</pre> |
|||
即可实现只通过 HTTP 向 Varnish 发送 PURGE 缓存清理请求。 |
|||
==本地化文字修改== |
==本地化文字修改== |
2023年6月19日 (一) 09:49的版本
本页面记录了MCBBS Wiki环境配置时的一些坑及其解决方案,以便日后参考。
PHP函数与拓展
在新环境中应该关闭putenv()
函数禁用。
添加fileinfo
opcache
memcached
apcu
imagemagick
exif
intl
PHP拓展。
扩展
Variables 扩展在 1.35 版本由于解析器的一个 API 弃用会产生一个警告,在 LocalSetting.php 关闭即可。
error_reporting(0);
VisualEditor
Parsoid服务问题
适用于1.35+,且一般发生在从老版本迭代升级来的Wiki上。
如果出现REST错误,你先要查看你LocalSetting.php是否有wfLoadExtension( 'Parsoid' );
cURL证书问题
若出现:
cURL error 77 || cURL error 60
代表PHP部分CA证书没配置好,一般发生在通过面板或一键配置工具安装的PHP上。[1]
下载https://curl.se/ca/cacert.pem
保存到环境路径。
在php配置文件中把curl和openssl部分修改成以下内容(这里以当前Wiki服务器作示例)
[curl]
curl.cainfo =/www/wwwroot/mcbbs.wiki/cacert.pem
[openssl]
openssl.cafile=/www/wwwroot/mcbbs.wiki/cacert.pem
之后重载配置重启PHP。
编辑部分页面404问题
若编辑部分页面时出现Error contacting the Parsoid/RESTBase server (HTTP 404)
如果服务器软件为Apache,指定以下配置[2]:
AllowEncodedSlashes NoDecode
如果服务器软件为Nginx,指定以下配置[3]:
location /rest.php/ { try_files $uri $uri/ /rest.php?$query_string; }
Varnish
首先,要确保 Varnish 相关缓存逻辑正常工作,必须在 LocalSettings.php 设置 $wgUseCdn = true;
Parsoid 405
若编辑部分页面时出现连接至Parsoid/RESTBase服务器错误(HTTP 405)
配置 vcl 规则,直接请求 api.php 和 rest.php 不经过缓存。
if (req.url ~ "api.php" || req.url ~ "rest.php") return (pass); }
Popups 导致的缓存失效
Popups 默认情况下无论是否开启埋点功能,都会初始化 sessionId 并存储于 cookies 中,导致请求不经过缓存。
编辑 extensions/Popups/includes/PopupsContext.php
的第 198 行:
return false;
即可实现仅登录用户启用 Popups 。
HTTP 模式下 PURGE 请求
MediaWiki 默认情况下,页面更新时会发送 PURGE 代理请求 Varnish 清理缓存。这仅适用于 Varnish 被配置为 HTTP 正向代理模式时。
如果 Varnish 在 HTTP 模式下工作,编辑 includes/deferred/CdnCacheUpdate.php
的 304 行:
$reqs[] = ( $baseReq );
以及 297 行:
'Host' => $urlInfo['host'],
即可实现只通过 HTTP 向 Varnish 发送 PURGE 缓存清理请求。
本地化文字修改
修改任何本地化文字,建议在MediaWiki命名空间下修改,而不是直接修改本地化文件。
一方面,如果插件更新了,你的修改也没了;另一方面,修改后的本地化文字可以随着数据库移动。
隐藏文件(.)和资源缓存问题
某些面板或配置工具会在Apache或Nginx的配置中添加对隐藏文件的防护规则或者静态资源的缓存规则,导致某些页面或文件(如...、MediaWiki:Common.js)无法正常显示。
要修复这个问题,只需要移除对应的规则即可。
数据库问题
编辑时数据库错误
类型 "Wikimedia\Rdbms\DBQeryError" 的致命错误
故障原因:数据表 <名字空间>_text
在导入时未设置主键和自动递增。
解决方案:设置 <名字空间>_text
'old_id' 字段为主键,自动递增。
备注:非常规的数据库导入会丢失一些结构信息。系统在录入更改时不会自动填写ID。
-- Sheep-realms(讨论) 2020年5月8日 (五) 22:01 (CST)
搜索时数据库错误
类型 "Wikimedia\Rdbms\DBQeryError" 的致命错误
故障原因:数据表 <名字空间>_searchindex
崩溃。
解决方案:修复数据表 <名字空间>_searchindex
。
备注:错误的数据库操作或突然断电等物理因素可能会造成数据表崩溃。
--Sheep-realms(讨论) 2020年4月27日 (一) 11:14 (CST)