帮助:MediaWiki 安装:修订间差异
来自陋室
更多操作
删除的内容 添加的内容
new |
完成 |
||
| 第1行: | 第1行: | ||
这个页面介绍了本站的 MediaWiki 的安装笔记. |
这个页面介绍了本站的 MediaWiki 的安装笔记. |
||
== |
== 服务器配置 == |
||
'''服务器提供商''': 腾讯云-轻量云(轻量应用服务器) |
|||
=== 系统 === |
|||
==== 系统版本 ==== |
|||
<code>cat /etc/os-release # 显示发行版的详细信息</code> |
|||
'''地域和可用区''': 新加坡 | 新加坡一区 |
|||
<code>PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"</code> |
|||
==== 系统更新 ==== |
|||
<code>sudo apt update # 更新包索引</code> |
|||
'''实例规格''': |
|||
<code>sudo apt upgrade # sudo apt upgrade</code> |
|||
* '''CPU''': 2核 |
|||
=== 宝塔面板 === |
|||
* '''内存''': 2GB |
|||
Linux面板安装脚本,正式版:9.4.0 |
|||
* '''系统盘''': SSD云硬盘 50GB |
|||
* '''流量包''': 1024GB/月(峰值带宽 30Mbps) |
|||
== 服务器环境 == |
|||
<code>wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && bash install_panel.sh ed8484bec</code> |
|||
=== |
=== 操作系统 === |
||
'''镜像名称''': Debian |
|||
==== PHP ==== |
|||
<code>php -v</code> |
|||
'''操作系统''': Debian 12.0 64bit |
|||
<code>PHP 8.2.26 (cli) (built: Nov 25 2024 17:21:51) (NTS)</code> |
|||
<syntaxhighlight lang="bash"> |
|||
cat /etc/os-release |
|||
sudo apt update |
|||
sudo apt upgrade |
|||
</syntaxhighlight> |
|||
=== 服务器软件 === |
|||
<code>which php</code> |
|||
* '''宝塔Linux面板''': 正式版9.4.0 |
|||
<syntaxhighlight lang="bash"> |
|||
wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && bash install_panel.sh ed8484bec |
|||
</syntaxhighlight> |
|||
* '''Apache 2.4.62 (PHP+fpm)''' |
|||
<syntaxhighlight lang="bash"> |
|||
which apache2 |
|||
apache2 -v |
|||
</syntaxhighlight> |
|||
* '''MySQL 5.7.44'''(MediaWiki最低要求5.7,官方推荐MongoDB) |
|||
<syntaxhighlight lang="bash"> |
|||
which mysql |
|||
systemctl status mysql |
|||
</syntaxhighlight> |
|||
* '''PHP 8.2.27'''(MediaWiki最低要求8.1) |
|||
<syntaxhighlight lang="bash"> |
|||
which php |
|||
php -v |
|||
</syntaxhighlight> |
|||
* '''phpMyAdmin 5.2'''(可通过宝塔安装) |
|||
* '''ffmpeg 6.1'''(可通过宝塔安装) |
|||
<syntaxhighlight lang="bash"> |
|||
which ffmpeg |
|||
ffmpeg -version |
|||
</syntaxhighlight> |
|||
=== 依赖软件安装 === |
|||
<code>/usr/bin/php</code> |
|||
==== php-wikidiff2 ==== |
|||
<syntaxhighlight lang="bash"> |
|||
apt-get install php-wikidiff2 |
|||
find /usr/lib/ -name wikidiff2.so |
|||
nano /www/server/php/82/etc/php.ini |
|||
extension=/usr/lib/php/20220829/wikidiff2.so |
|||
php -m | grep wikidiff2 |
|||
</syntaxhighlight> |
|||
<syntaxhighlight lang="php"> |
|||
$wgDiffEngine = "wikidiff2"; |
|||
$wgDiff3 = "/usr/bin/diff3"; |
|||
</syntaxhighlight> |
|||
==== |
==== LilyPond ==== |
||
<syntaxhighlight lang="bash"> |
|||
sudo apt update |
|||
sudo apt install lilypond |
|||
lilypond --version |
|||
</syntaxhighlight> |
|||
<syntaxhighlight lang="php"> |
|||
wfLoadExtension( 'Score' ); |
|||
$wgScoreTrim = true; |
|||
$wgImageMagickConvertCommand = '/usr/bin/convert'; |
|||
$wgScoreSafeMode = false; |
|||
</syntaxhighlight> |
|||
==== Ghostscript ==== |
|||
<syntaxhighlight lang="bash"> |
|||
sudo apt update |
|||
sudo apt install ghostscript |
|||
gs --version |
|||
</syntaxhighlight> |
|||
==== FluidSynth ==== |
|||
<syntaxhighlight lang="bash"> |
|||
sudo apt update |
|||
sudo apt install fluidsynth |
|||
fluidsynth --version |
|||
</syntaxhighlight> |
|||
==== LAME ==== |
|||
<syntaxhighlight lang="bash"> |
|||
sudo apt update |
|||
sudo apt install lame |
|||
lame --version |
|||
</syntaxhighlight> |
|||
<syntaxhighlight lang="php"> |
|||
$wgScoreLame = '/usr/bin/lame'; |
|||
</syntaxhighlight> |
|||
==== php-luasandbox ==== |
|||
<syntaxhighlight lang="bash"> |
|||
sudo apt update |
|||
sudo apt install php-luasandbox -y |
|||
find /usr/lib/php/ -name "luasandbox.so" |
|||
nano /www/server/php/82/etc/php.ini |
|||
extension=/usr/lib/php/20220829/luasandbox.so |
|||
php -m | grep luasandbox |
|||
</syntaxhighlight> |
|||
<syntaxhighlight lang="php"> |
|||
wfLoadExtension( 'Scribunto' ); |
|||
$wgScribuntoEngineConf['luasandbox']['memoryLimit'] = 50 * 1024 * 1024; |
|||
</syntaxhighlight> |
|||
==== Composer ==== |
|||
<syntaxhighlight lang="bash"> |
|||
composer update --no-dev |
|||
</syntaxhighlight> |
|||
== 服务器配置 == |
|||
=== Apache相关 === |
|||
'''禁用防跨站攻击 (open_basedir)''' |
|||
'''启用HTTPS防窜站''' |
|||
'''TLS 1.0和1.1禁用''' |
|||
'''伪静态配置''' |
|||
<syntaxhighlight lang="apache"> |
|||
RewriteEngine On |
|||
RewriteCond %{HTTPS} off |
|||
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] |
|||
RewriteCond %{REQUEST_URI} !\.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot|less)$ [NC] |
|||
RewriteCond %{REQUEST_URI} !^/load.php [NC] |
|||
RewriteCond %{REQUEST_URI} !^/api.php [NC] |
|||
RewriteRule ^w/(.*)$ /index.php?title=$1 [L,QSA] |
|||
RewriteCond %{REQUEST_FILENAME} !-f |
|||
RewriteCond %{REQUEST_FILENAME} !-d |
|||
RewriteRule ^(.*)$ /index.php [L,QSA] |
|||
</syntaxhighlight> |
|||
<syntaxhighlight lang="php"> |
|||
wfLoadExtension( 'UrlShortener' ); |
|||
$wgUrlShortenerTemplate = '/r/$1'; |
|||
$wgUrlShortenerServer = "false"; |
|||
$wgUrlShortenerEnableQrCode = true; |
|||
$wgUrlShortenerQrCodeShortenLimit = 200; |
|||
$actions = [ |
|||
'view', |
|||
'edit', |
|||
'watch', |
|||
'unwatch', |
|||
'delete', |
|||
'revert', |
|||
'rollback', |
|||
'protect', |
|||
'unprotect', |
|||
'markpatrolled', |
|||
'render', |
|||
'submit', |
|||
'history', |
|||
'purge', |
|||
'info', |
|||
]; |
|||
foreach ($actions as $action) { |
|||
$wgActionPaths[$action] = "/w/$action/$1"; |
|||
} |
|||
$wgActionPaths['view'] = "/w/$1"; |
|||
$wgArticlePath = $wgActionPaths['view']; |
|||
</syntaxhighlight> |
|||
=== SSL === |
|||
=== Apache安全配置 === |
|||
<syntaxhighlight lang="apache"> |
|||
<Directory /www/wwwroot/lib/images/> |
|||
Options -ExecCGI -Indexes |
|||
AllowOverride None |
|||
<FilesMatch "\.(php|php5|pl|py|jsp|asp|htm|html|cgi|sh)$"> |
|||
Require all denied |
|||
</FilesMatch> |
|||
Header always set X-Content-Type-Options "nosniff" |
|||
</Directory> |
|||
</syntaxhighlight> |
|||
=== MySQL相关 === |
|||
'''官方建议''': |
|||
* 将所有表转为 InnoDB |
|||
* 将所有表转为 utf8mb4 |
|||
=== PHP相关 === |
|||
'''需要启用的插件'''(部分已默认启用) |
|||
<syntaxhighlight lang="bash"> |
|||
php -m |
|||
</syntaxhighlight> |
|||
<syntaxhighlight lang="php"> |
|||
Core date libxml openssl pcre sqlite3 zlib bcmath ctype curl dom filter ftp gd gettext hash iconv intl json mbstring SPL session pcntl standard mysqlnd PDO pdo_mysql pdo_sqlite Phar posix random Reflection mysqli shmop SimpleXML soap sockets sodium sysvsem tokenizer xml xmlreader xmlwriter wikidiff2 luasandbox zip imagick fileinfo apcu exif calendar |
|||
</syntaxhighlight> |
|||
'''需要解除禁用的函数''' |
|||
<syntaxhighlight lang="php"> |
|||
proc_open |
|||
popen |
|||
putenv |
|||
</syntaxhighlight> |
|||
== 站点配置 == |
|||
=== 数据库信息安全 === |
|||
'''LocalSettings.php''' |
|||
<syntaxhighlight lang="php"> |
|||
include('/www/wwwroot/lib.php'); |
|||
</syntaxhighlight> |
|||
'''lib.php''' |
|||
<syntaxhighlight lang="php"> |
|||
<?php |
|||
$wgDBserver = 'localhost'; |
|||
$wgDBname = ''; |
|||
$wgDBuser = ''; |
|||
$wgDBpassword = ''; |
|||
?> |
|||
</syntaxhighlight> |
|||
=== 网站Logo === |
|||
<syntaxhighlight lang="php"> |
|||
$wgLogos = [ |
|||
'1x' => "$wgResourceBasePath/Libary-4l.png", |
|||
'icon' => "$wgResourceBasePath/Libary-4l.png", |
|||
]; |
|||
$wgFavicon = "$wgResourceBasePath/images/logos/Libary-4l.png"; |
|||
$wgAppleTouchIcon = "$wgResourceBasePath/images/logos/Libary-4l.png"; |
|||
$wgFooterIcons['logo'] = [ |
|||
'yourcustomicon' => [ |
|||
'src' => '/images/logos/Libary-1ll.png ', |
|||
'url' => $wgServer, |
|||
'alt' => 'Logo', |
|||
'height' => '31', |
|||
'width' => '68', |
|||
], |
|||
]; |
|||
</syntaxhighlight> |
|||
=== 移动端皮肤 === |
|||
<syntaxhighlight lang="php"> |
|||
$wgDefaultMobileSkin = 'citizen'; |
|||
</syntaxhighlight> |
|||
=== MediaWiki维护脚本 === |
|||
<syntaxhighlight lang="bash"> |
|||
php maintenance/run.php update.php --quick && \ |
|||
php maintenance/run.php rebuildrecentchanges.php && \ |
|||
php maintenance/run.php rebuildall.php && \ |
|||
php maintenance/run.php rebuildtextindex.php && \ |
|||
php maintenance/run.php refreshLinks.php && \ |
|||
php maintenance/run.php cleanupTitles.php --dry-run |
|||
</syntaxhighlight> |
|||
== 参见 == |
|||
[https://www.mediawiki.org/wiki/Download/zh] |
|||
[https://www.bt.cn/new/download.html] |
|||
[https://zh.wikipedia.org/wiki/Wikipedia:%E9%A6%96%E9%A1%B5] |
|||
[https://www.mediawiki.org/wiki/Help:Formatting/zh] |
|||
[https://www.mediawiki.org/wiki/Help:Magic_words/zh] |
|||
[https://www.mediawiki.org/wiki/Help:Contents/zh] |
|||
[https://www.mediawiki.org/wiki/Manual:Contents/zh] |
|||
[https://www.huijiwiki.com/wiki/CommunityCenter] |
|||
2025年2月11日 (二) 19:06的版本
这个页面介绍了本站的 MediaWiki 的安装笔记.
服务器配置
服务器提供商: 腾讯云-轻量云(轻量应用服务器)
地域和可用区: 新加坡 | 新加坡一区
实例规格:
- CPU: 2核
- 内存: 2GB
- 系统盘: SSD云硬盘 50GB
- 流量包: 1024GB/月(峰值带宽 30Mbps)
服务器环境
操作系统
镜像名称: Debian
操作系统: Debian 12.0 64bit
cat /etc/os-release
sudo apt update
sudo apt upgrade
服务器软件
- 宝塔Linux面板: 正式版9.4.0
wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && bash install_panel.sh ed8484bec
- Apache 2.4.62 (PHP+fpm)
which apache2
apache2 -v
- MySQL 5.7.44(MediaWiki最低要求5.7,官方推荐MongoDB)
which mysql
systemctl status mysql
- PHP 8.2.27(MediaWiki最低要求8.1)
which php
php -v
- phpMyAdmin 5.2(可通过宝塔安装)
- ffmpeg 6.1(可通过宝塔安装)
which ffmpeg
ffmpeg -version
依赖软件安装
php-wikidiff2
apt-get install php-wikidiff2
find /usr/lib/ -name wikidiff2.so
nano /www/server/php/82/etc/php.ini
extension=/usr/lib/php/20220829/wikidiff2.so
php -m | grep wikidiff2
$wgDiffEngine = "wikidiff2";
$wgDiff3 = "/usr/bin/diff3";
LilyPond
sudo apt update
sudo apt install lilypond
lilypond --version
wfLoadExtension( 'Score' );
$wgScoreTrim = true;
$wgImageMagickConvertCommand = '/usr/bin/convert';
$wgScoreSafeMode = false;
Ghostscript
sudo apt update
sudo apt install ghostscript
gs --version
FluidSynth
sudo apt update
sudo apt install fluidsynth
fluidsynth --version
LAME
sudo apt update
sudo apt install lame
lame --version
$wgScoreLame = '/usr/bin/lame';
php-luasandbox
sudo apt update
sudo apt install php-luasandbox -y
find /usr/lib/php/ -name "luasandbox.so"
nano /www/server/php/82/etc/php.ini
extension=/usr/lib/php/20220829/luasandbox.so
php -m | grep luasandbox
wfLoadExtension( 'Scribunto' );
$wgScribuntoEngineConf['luasandbox']['memoryLimit'] = 50 * 1024 * 1024;
Composer
composer update --no-dev
服务器配置
Apache相关
禁用防跨站攻击 (open_basedir) 启用HTTPS防窜站 TLS 1.0和1.1禁用 伪静态配置
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_URI} !\.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot|less)$ [NC]
RewriteCond %{REQUEST_URI} !^/load.php [NC]
RewriteCond %{REQUEST_URI} !^/api.php [NC]
RewriteRule ^w/(.*)$ /index.php?title=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L,QSA]
wfLoadExtension( 'UrlShortener' );
$wgUrlShortenerTemplate = '/r/$1';
$wgUrlShortenerServer = "false";
$wgUrlShortenerEnableQrCode = true;
$wgUrlShortenerQrCodeShortenLimit = 200;
$actions = [
'view',
'edit',
'watch',
'unwatch',
'delete',
'revert',
'rollback',
'protect',
'unprotect',
'markpatrolled',
'render',
'submit',
'history',
'purge',
'info',
];
foreach ($actions as $action) {
$wgActionPaths[$action] = "/w/$action/$1";
}
$wgActionPaths['view'] = "/w/$1";
$wgArticlePath = $wgActionPaths['view'];
SSL
Apache安全配置
<Directory /www/wwwroot/lib/images/>
Options -ExecCGI -Indexes
AllowOverride None
<FilesMatch "\.(php|php5|pl|py|jsp|asp|htm|html|cgi|sh)$">
Require all denied
</FilesMatch>
Header always set X-Content-Type-Options "nosniff"
</Directory>
MySQL相关
官方建议:
- 将所有表转为 InnoDB
- 将所有表转为 utf8mb4
PHP相关
需要启用的插件(部分已默认启用)
php -m
Core date libxml openssl pcre sqlite3 zlib bcmath ctype curl dom filter ftp gd gettext hash iconv intl json mbstring SPL session pcntl standard mysqlnd PDO pdo_mysql pdo_sqlite Phar posix random Reflection mysqli shmop SimpleXML soap sockets sodium sysvsem tokenizer xml xmlreader xmlwriter wikidiff2 luasandbox zip imagick fileinfo apcu exif calendar
需要解除禁用的函数
proc_open
popen
putenv
站点配置
数据库信息安全
LocalSettings.php
include('/www/wwwroot/lib.php');
lib.php
<?php
$wgDBserver = 'localhost';
$wgDBname = '';
$wgDBuser = '';
$wgDBpassword = '';
?>
网站Logo
$wgLogos = [
'1x' => "$wgResourceBasePath/Libary-4l.png",
'icon' => "$wgResourceBasePath/Libary-4l.png",
];
$wgFavicon = "$wgResourceBasePath/images/logos/Libary-4l.png";
$wgAppleTouchIcon = "$wgResourceBasePath/images/logos/Libary-4l.png";
$wgFooterIcons['logo'] = [
'yourcustomicon' => [
'src' => '/images/logos/Libary-1ll.png ',
'url' => $wgServer,
'alt' => 'Logo',
'height' => '31',
'width' => '68',
],
];
移动端皮肤
$wgDefaultMobileSkin = 'citizen';
MediaWiki维护脚本
php maintenance/run.php update.php --quick && \
php maintenance/run.php rebuildrecentchanges.php && \
php maintenance/run.php rebuildall.php && \
php maintenance/run.php rebuildtextindex.php && \
php maintenance/run.php refreshLinks.php && \
php maintenance/run.php cleanupTitles.php --dry-run