帮助:MediaWiki安装指南:修订间差异
来自陋室
更多操作
删除的内容 添加的内容
修改内容 |
Maintenance script(留言 | 贡献) 帮助命名空间规范化:移除一级标题并修正渲染安全写法 |
||
| (未显示3个用户的12个中间版本) | |||
| 第1行: | 第1行: | ||
本页给出通用安装流程,并提供本站当前环境可复用的参数示例。实际部署请以官方文档为准。 |
|||
这个页面介绍了本站的 [[mw:Download|MediaWiki]] 的安装笔记. |
|||
== |
== 参考环境 == |
||
* 操作系统:Debian 12 |
|||
* Web 服务器:Nginx |
|||
* PHP:8.2(PHP-FPM) |
|||
* 数据库:MariaDB 10.11 |
|||
== 1. 安装系统依赖 == |
|||
'''服务器提供商''': [https://cloud.tencent.com/ 腾讯云]-轻量云(轻量应用服务器) |
|||
'''地域和可用区''': 新加坡 | 新加坡一区 |
|||
'''实例规格''': |
|||
* '''CPU''': 2 核 |
|||
* '''内存''': 2GB |
|||
* '''系统盘''': SSD 云硬盘 50GB |
|||
* '''流量包''': 1024GB/月(峰值带宽 30Mbps) |
|||
== 服务器环境 == |
|||
=== 操作系统 === |
|||
'''镜像名称''': [https://www.debian.org/distrib/ Debian] |
|||
'''操作系统''': Debian 12.0 64bit |
|||
<syntaxhighlight lang="bash"> |
<syntaxhighlight lang="bash"> |
||
sudo apt update && sudo apt upgrade -y |
|||
cat /etc/os-release |
|||
sudo apt install nginx mariadb-server php8.2-fpm php8.2-cli php8.2-mysql php8.2-gd php8.2-mbstring php8.2-xml php8.2-curl php8.2-zip php8.2-intl php8.2-apcu unzip git -y |
|||
sudo apt update |
|||
sudo apt upgrade |
|||
</syntaxhighlight> |
</syntaxhighlight> |
||
== 2. 下载并解压 MediaWiki == |
|||
=== 服务器软件 === |
|||
* '''[https://www.bt.cn/new/download.html 宝塔Linux面板]''' : 正式版 9.4.0 |
|||
<syntaxhighlight lang="bash"> |
<syntaxhighlight lang="bash"> |
||
cd /var/www |
|||
wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && bash install_panel.sh ed8484bec |
|||
wget https://releases.wikimedia.org/mediawiki/1.45/mediawiki-1.45.0.tar.gz |
|||
tar -xzvf mediawiki-1.45.0.tar.gz |
|||
mv mediawiki-1.45.0 mediawiki |
|||
</syntaxhighlight> |
</syntaxhighlight> |
||
== 3. 创建数据库与账号 == |
|||
* '''Apache [https://httpd.apache.org/download.cgi httpd] 2.4.62 (PHP+fpm)''' |
|||
<syntaxhighlight lang=" |
<syntaxhighlight lang="sql"> |
||
CREATE DATABASE my_wiki CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; |
|||
which apache2 |
|||
CREATE USER 'wikiuser'@'localhost' IDENTIFIED BY '强密码'; |
|||
apache2 -v |
|||
GRANT ALL PRIVILEGES ON my_wiki.* TO 'wikiuser'@'localhost'; |
|||
FLUSH PRIVILEGES; |
|||
</syntaxhighlight> |
</syntaxhighlight> |
||
== 4. 运行安装向导 == |
|||
* '''[https://dev.mysql.com/downloads/windows/installer/ MySQL 5.7.44]'''(MediaWiki 最低要求 5.7,大内存机器首选 8.0+,官方推荐 MongoDB) |
|||
访问:<code>https://你的域名/mw-config/</code> |
|||
<syntaxhighlight lang="bash"> |
|||
which mysql |
|||
systemctl status mysql |
|||
</syntaxhighlight> |
|||
完成后将生成的 <code>LocalSettings.php</code> 放入站点根目录。 |
|||
* '''[https://www.php.net/downloads.php PHP] 8.2.27'''(MediaWiki 最低要求 8.1) |
|||
<syntaxhighlight lang="bash"> |
|||
which php |
|||
php -v |
|||
</syntaxhighlight> |
|||
* '''[https://www.phpmyadmin.net/downloads/ phpMyAdmin] 5.2'''(可通过宝塔安装) |
|||
== 服务器依赖 == |
|||
=== php-[[mw:Wikidiff2|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> |
|||
== 5. 关键配置示例 == |
|||
<syntaxhighlight lang="php"> |
<syntaxhighlight lang="php"> |
||
$wgScriptPath = ''; |
|||
$wgDiffEngine = "wikidiff2"; |
|||
$wgArticlePath = '/wiki/$1'; |
|||
$wgDiff3 = "/usr/bin/diff3"; |
|||
</syntaxhighlight> |
</syntaxhighlight> |
||
== 6. 常用安装后维护 == |
|||
=== php-[https://www.mediawiki.org/wiki/LuaSandbox luasandbox] === |
|||
<syntaxhighlight lang="bash"> |
<syntaxhighlight lang="bash"> |
||
php /var/www/mediawiki/maintenance/run.php update.php |
|||
sudo apt update |
|||
php /var/www/mediawiki/maintenance/run.php rebuildrecentchanges.php |
|||
sudo apt install php-luasandbox -y |
|||
php /var/www/mediawiki/maintenance/run.php refreshLinks.php |
|||
find /usr/lib/php/ -name "luasandbox.so" |
|||
php /var/www/mediawiki/maintenance/run.php runJobs.php |
|||
extension=/usr/lib/php/20220829/luasandbox.so |
|||
php -m | grep luasandbox |
|||
</syntaxhighlight> |
</syntaxhighlight> |
||
== 7. 安全与排错 == |
|||
<syntaxhighlight lang="php"> |
|||
* 确保 <code>LocalSettings.php</code> 权限最小化。 |
|||
wfLoadExtension( 'Scribunto' ); |
|||
* 上传失败时检查 PHP 上传大小限制与目录权限。 |
|||
$wgScribuntoEngineConf['luasandbox']['memoryLimit'] = 50 * 1024 * 1024; |
|||
* 页面无法渲染时优先检查 PHP-FPM 与 Nginx 日志。 |
|||
</syntaxhighlight> |
|||
== 官方文档 == |
|||
=== [https://ffmpeg.org/download.html ffmpeg] 6.1(可通过宝塔安装) === |
|||
* https://www.mediawiki.org/wiki/Manual:Installing_MediaWiki |
|||
<syntaxhighlight lang="bash"> |
|||
which ffmpeg |
|||
ffmpeg -version |
|||
</syntaxhighlight> |
|||
=== [https://getcomposer.org/download/ Composer] === |
|||
<syntaxhighlight lang="bash"> |
|||
composer update --no-dev |
|||
</syntaxhighlight> |
|||
== MediaWiki 插件依赖 == |
|||
=== [[mw:Extension:EasyTimeline|EasyTimeline]] === |
|||
==== [https://ploticus.sourceforge.net/doc/download.html Ploticus] ==== |
|||
<syntaxhighlight lang="bash"> |
|||
sudo apt update |
|||
sudo apt install ploticus |
|||
ploticus -version |
|||
</syntaxhighlight> |
|||
==== [https://www.perl.org/get.html perl] ==== |
|||
<syntaxhighlight lang="bash"> |
|||
sudo apt update |
|||
sudo apt install perl |
|||
perl -v |
|||
</syntaxhighlight> |
|||
<syntaxhighlight lang="php"> |
|||
$wgTimelinePloticusCommand = '/usr/bin/ploticus'; |
|||
$wgTimelinePerlCommand = "/usr/bin/perl"; |
|||
$wgTimelineFontDirectory = "/usr/share/fonts/truetype/freefont"; |
|||
$wgTimelineFontFile = 'ascii'; |
|||
</syntaxhighlight> |
|||
=== [[mw:Extension:Score|Score]] === |
|||
==== [https://lilypond.org/ LilyPond] ==== |
|||
<syntaxhighlight lang="bash"> |
|||
sudo apt update |
|||
sudo apt install lilypond |
|||
lilypond --version |
|||
</syntaxhighlight> |
|||
==== [https://www.ghostscript.com/releases/index.html Ghostscript] ==== |
|||
<syntaxhighlight lang="bash"> |
|||
sudo apt update |
|||
sudo apt install ghostscript |
|||
gs --version |
|||
</syntaxhighlight> |
|||
==== php-ImageMagick ==== |
|||
==== [https://www.fluidsynth.org/download/ FluidSynth] ==== |
|||
<syntaxhighlight lang="bash"> |
|||
sudo apt update |
|||
sudo apt install fluidsynth |
|||
fluidsynth --version |
|||
</syntaxhighlight> |
|||
<syntaxhighlight lang="php"> |
|||
$wgScoreTrim = true; |
|||
$wgImageMagickConvertCommand = '/usr/bin/convert'; |
|||
$wgScoreSafeMode = false; |
|||
$wgScoreLame = '/usr/bin/lame'; |
|||
</syntaxhighlight> |
|||
=== [[mw:Extension:PdfHandler|PdfHandler]] === |
|||
==== Ghostscript ==== |
|||
==== php-imagemagick ==== |
|||
==== [https://pypi.org/project/poppler-utils/#files poppler-utils] ==== |
|||
<syntaxhighlight lang="bash"> |
|||
sudo apt update |
|||
sudo apt install poppler-utils |
|||
pdftotext -v |
|||
</syntaxhighlight> |
|||
<syntaxhighlight lang="php"> |
|||
$wgPdfProcessor = '/usr/bin/gs'; |
|||
$wgPdfPostProcessor = $wgImageMagickConvertCommand; |
|||
$wgPdfInfo = '/usr/bin/pdfinfo'; |
|||
$wgPdftoText = '/usr/bin/pdftotext'; |
|||
</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''' |
|||
* 将所有表转为 <code>utf8mb4</code> |
|||
=== 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> |
|||
== 站点配置 == |
|||
=== 数据库信息安全 === |
|||
<code>LocalSettings.php</code> |
|||
<syntaxhighlight lang="php"> |
|||
include('/wwwroot/lib.php'); |
|||
</syntaxhighlight> |
|||
<code>lib.php</code> |
|||
<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> |
|||
{{Template:站点帮助文档}} |
{{Template:站点帮助文档}} |
||
[[Category:帮助文档]] |
|||
2026年5月21日 (四) 11:18的最新版本
本页给出通用安装流程,并提供本站当前环境可复用的参数示例。实际部署请以官方文档为准。
参考环境
- 操作系统:Debian 12
- Web 服务器:Nginx
- PHP:8.2(PHP-FPM)
- 数据库:MariaDB 10.11
1. 安装系统依赖
sudo apt update && sudo apt upgrade -y
sudo apt install nginx mariadb-server php8.2-fpm php8.2-cli php8.2-mysql php8.2-gd php8.2-mbstring php8.2-xml php8.2-curl php8.2-zip php8.2-intl php8.2-apcu unzip git -y
2. 下载并解压 MediaWiki
cd /var/www
wget https://releases.wikimedia.org/mediawiki/1.45/mediawiki-1.45.0.tar.gz
tar -xzvf mediawiki-1.45.0.tar.gz
mv mediawiki-1.45.0 mediawiki
3. 创建数据库与账号
CREATE DATABASE my_wiki CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wikiuser'@'localhost' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON my_wiki.* TO 'wikiuser'@'localhost';
FLUSH PRIVILEGES;
4. 运行安装向导
完成后将生成的 LocalSettings.php 放入站点根目录。
5. 关键配置示例
$wgScriptPath = '';
$wgArticlePath = '/wiki/$1';
6. 常用安装后维护
php /var/www/mediawiki/maintenance/run.php update.php
php /var/www/mediawiki/maintenance/run.php rebuildrecentchanges.php
php /var/www/mediawiki/maintenance/run.php refreshLinks.php
php /var/www/mediawiki/maintenance/run.php runJobs.php
7. 安全与排错
- 确保
LocalSettings.php权限最小化。 - 上传失败时检查 PHP 上传大小限制与目录权限。
- 页面无法渲染时优先检查 PHP-FPM 与 Nginx 日志。