跳至內容

說明:MediaWiki安裝指南

出自陋室
XP-jia​(對話 | 貢獻)2025年11月14日 (五) 00:24的修訂 (更新和修订环境配置)

注意: 此筆記基於 MediaWiki 官方手冊及其他網絡教程校對,適用於在 Debian Linux 伺服器(使用寶塔面板)上安裝 MediaWiki。

伺服器配置

伺服器提供商: 騰訊雲-輕量雲(輕量應用伺服器)

地域和可用區: 新加坡 | 新加坡一區

實例規格:

实例ID = lhins-****
实例名称 = sg
CPU = 2核
内存 = 2GB
系统盘 = SSD云硬盘 50GB
月流量包 = 1024GB(峰值带宽 30Mbps)
公网IPv4 = 43.163.****


域名:

  • www.houjue.digital
  • www.xuepengjia.baby

鏡像: Debian 12.0 64bit

伺服器環境

作業系統

作業系統: Debian GNU/Linux 12 (bookworm)

cat /etc/os-release

伺服器軟件

  • 寶塔Linux面板 : 7.9.8 (註:您提供的版本號 11.2.0 與命令中顯示的 7.9.8 不一致,請以實際為準)
  • Apache[httpd]: 2.4.65
  • MySQL: 8.0.36 (MediaWiki 最低要求 5.7。大內存機器可考慮 8.0+,官方也推薦 MongoDB)
  • PHP: 8.2.29 (MediaWiki 最低要求 8.1)
  • phpMyAdmin: 5.2(可通過寶塔安裝)

安裝前準備

在開始安裝 MediaWiki 前,請確保系統已更新並安裝了必要的依賴。

sudo apt update
sudo apt upgrade -y

MediaWiki 安裝步驟

1. 下載 MediaWiki

從官方下載頁面獲取最新的穩定版本(例如 1.44.0)。生產環境建議使用穩定版。

cd /www/wwwroot/
# 使用 wget 下载,请替换为官网最新的稳定版本链接
wget https://releases.wikimedia.org/mediawiki/1.44/mediawiki-1.44.0.tar.gz
tar -xzvf mediawiki-1.44.0.tar.gz
# 解压后得到 mediawiki-1.44.0 目录

2. 創建數據庫

為 MediaWiki 創建一個專用的數據庫和用戶。

-- 登录 MySQL,请使用您的 root 密码
mysql -u root -p

-- 在 MySQL 提示符下执行以下命令,请将 '****' 替换为强密码
CREATE DATABASE my_wiki;
CREATE USER 'wikiuser'@'localhost' IDENTIFIED BY '****';
GRANT ALL PRIVILEGES ON my_wiki.* TO 'wikiuser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

安全提示:MySQL/MariaDB 可能會在歷史記錄文件中記錄包含密碼的查詢命令。請留意並妥善處理 .mysql_history 文件。

3. 運行安裝腳本

通過瀏覽器訪問您的 MediaWiki 目錄,例如:http://您的域名或IP/mediawiki-1.44.0/。這將自動跳轉到安裝嚮導 (mw-config/)。

安裝嚮導關鍵步驟:

  1. 環境檢查:確保所有檢測通過。
  2. 數據庫設置:選擇 "MySQL" 或 "MariaDB"。填寫數據庫信息:
    1. 數據庫主機:localhost
    2. 數據庫名稱:my_wiki
    3. 數據庫用戶名:wikiuser
    4. 數據庫密碼:****
  3. Wiki 名稱:設置您的 Wiki 站點名稱。
  4. 管理員賬戶:創建初始管理員賬戶(用戶名如 WikiSysop)並設置強密碼。
  5. 其他選項:根據需求選擇擴展功能、皮膚等,或保持默認。

點擊 "安裝 MediaWiki"。如果安裝成功,頁面會提示並允許您下載 LocalSettings.php 文件。

4. 完成安裝

將下載的 LocalSettings.php 文件上傳到您的 MediaWiki 安裝目錄(例如 /www/wwwroot/mediawiki-1.44.0/)。上傳後,Wiki 即可通過 http://您的域名或IP/mediawiki-1.44.0/ 訪問。

安全建議:安裝完成後,可以考慮移除 config 目錄的世界可寫權限:

chmod a-w /www/wwwroot/mediawiki-1.44.0/config

伺服器依賴配置

以下是為支持特定 MediaWiki 功能需要安裝的依賴。

php-wikidiff2

用於提供更好的差異比較顯示。

sudo apt-get install php-wikidiff2
# 查找扩展所在路径,通常不需要手动在 php.ini 中指定,宝塔面板的 PHP 管理可能已自动启用
find /usr/lib/ -name wikidiff2.so
php -m | grep wikidiff2 # 检查是否已加载

在 LocalSettings.php 中配置:

$wgDiffEngine = "wikidiff2";
$wgDiff3 = "/usr/bin/diff3";

php-luasandbox

用於支持 Scribunto 擴展,運行 Lua 腳本。

sudo apt install php-luasandbox -y
php -m | grep luasandbox # 检查是否已加载

在 LocalSettings.php 中啟用 Scribunto:

wfLoadExtension( 'Scribunto' );
$wgScribuntoEngineConf['luasandbox']['memoryLimit'] = 50 * 1024 * 1024; // 可根据需要调整内存限制

ffmpeg

用於處理視頻文件。

sudo apt install ffmpeg -y
ffmpeg -version # 验证安装

Composer

PHP 依賴管理工具,某些 MediaWiki 擴展需要。

# 安装 Composer (具体命令请参考 getcomposer.org)
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
composer --version # 验证安装

在 MediaWiki 根目錄下,可以更新依賴(非開發環境):

composer update --no-dev

擴展特定依賴

EasyTimeline 擴展

用於生成時間線圖表。

sudo apt install ploticus perl -y

在 LocalSettings.php 中配置:

$wgTimelinePloticusCommand = '/usr/bin/ploticus';
$wgTimelinePerlCommand = "/usr/bin/perl";
$wgTimelineFontDirectory = "/usr/share/fonts/truetype/freefont"; // 字体路径请根据系统实际情况调整
$wgTimelineFontFile = 'ascii'; // 字体文件名请根据系统实际情况调整

Score 擴展

用於渲染樂譜。

sudo apt install lilypond ghostscript fluidsynth imagemagick lame -y

在 LocalSettings.php 中配置:

$wgScoreTrim = true;
$wgImageMagickConvertCommand = '/usr/bin/convert';
$wgScoreSafeMode = false; // 注意:关闭安全模式可能有安全风险,请确保系统安全
$wgScoreLame = '/usr/bin/lame';

PdfHandler 擴展

用於預覽 PDF 文件。

sudo apt install poppler-utils -y # 提供 pdftotext, pdfinfo 等工具

在 LocalSettings.php 中配置(Ghostscript 和 ImageMagick 已在前面安裝):

$wgPdfProcessor = '/usr/bin/gs';
$wgPdfPostProcessor = $wgImageMagickConvertCommand; // 假设 $wgImageMagickConvertCommand 已定义为 '/usr/bin/convert'
$wgPdfInfo = '/usr/bin/pdfinfo';
$wgPdftoText = '/usr/bin/pdftotext';

伺服器配置

Apache 與 HTTPS

通過寶塔面板或手動配置,確保站點啟用了 HTTPS 並設置了重定向。

偽靜態配置(.htaccess) 將以下規則放入 /www/wwwroot/mediawiki-1.44.0/.htaccess 文件,以實現短連結(如 /w/PageTitle)和 HTTPS 強制跳轉。

RewriteEngine On
# 强制 HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# MediaWiki 短链接规则
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]

# 前端控制器模式,将所有其他请求路由到 index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L,QSA]

在 LocalSettings.php 中配置相應的動作路徑和文章路徑,以配合短連結:

$wgScriptPath = "/mediawiki-1.44.0"; // MediaWiki 的安装路径,根据实际情况修改
$wgArticlePath = "/w/$1"; // 设置文章短链接路径

// 以下代码为各种动作定义短链接路径(需与 .htaccess 规则配合)
$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";
}
// 确保 'view' 动作使用上面设置的 $wgArticlePath
$wgActionPaths['view'] = $wgArticlePath;

安全配置

保護上傳目錄:在 Apache 虛擬主機配置或 .htaccess 中,對上傳目錄(例如 images/)添加限制,禁止執行 PHP 等腳本。

<Directory "/www/wwwroot/mediawiki-1.44.0/images">
    # 禁止执行特定脚本类型
    <FilesMatch "\.(php|php5|pl|py|jsp|asp|htm|html|cgi|sh)$">
        Require all denied
    </FilesMatch>
    # 设置安全头
    Header always set X-Content-Type-Options "nosniff"

設置目錄權限:

chown -R www-data:www-data /www/wwwroot/mediawiki-1.44.0/images # 确保 Web 服务器用户有写权限
chmod 755 /www/wwwroot/mediawiki-1.44.0/images

MySQL 配置建議

  • 將所有錶轉換為 InnoDB 存儲引擎。
  • 使用 utf8mb4 字符集以支持更廣泛的 Unicode 字符。

PHP 配置

需要啟用的擴展: 通過寶塔面板的 PHP 管理界面或編輯 php.ini,確保以下擴展已啟用(大部分可能已默認安裝或啟用):

php -m # 查看已加载的扩展

核心擴展包括:gd, intl, xml, mbstring, pdo_mysql, json, fileinfo, curl, zip 等。根據前面安裝的依賴,還需確保 wikidiff2, luasandbox, imagick 等擴展已加載。

需要解除禁用的函數(某些擴展如 Score 需要): 在寶塔面板的 PHP 設置中,將以下函數從「禁用函數」列表中移除:

  • proc_open
  • popen
  • putenv

調整 PHP 限制以適應文件上傳和處理: 在 php.ini 中調整(具體值根據需求設定):

memory_limit = 128M
upload_max_filesize = 20M
post_max_size = 20M
max_execution_time = 60

站點配置 (LocalSettings.php)

數據庫信息安全

考慮將數據庫憑證從 LocalSettings.php 中分離。 1. 創建單獨的配置文件,例如 /www/wwwroot/lib.php:

<?php
$wgDBserver = 'localhost';
$wgDBname = 'my_wiki';
$wgDBuser = 'wikiuser';
$wgDBpassword = '****'; // 替换为实际密码
?>

2. 在 LocalSettings.php 開頭包含此文件:

include('/www/wwwroot/lib.php');
// 注意:确保 lib.php 文件权限严格(如 600),且不在 Web 可访问目录下。

網站 Logo 與圖標

$wgLogos = [
    '1x' => "$wgResourceBasePath/resources/assets/logo.png", // 替换为您的 logo 路径
    'icon' => "$wgResourceBasePath/resources/assets/icon.png", // 替换为您的图标路径
];
$wgFavicon = "$wgResourceBasePath/resources/assets/favicon.ico"; // 替换为您的 favicon 路径

移動端皮膚

如果安裝了 Citizen 等皮膚,可以將其設為移動端默認:

$wgDefaultMobileSkin = 'citizen';

MediaWiki 維護

定期運行維護腳本以保持 Wiki 健康運行。

# 进入 MediaWiki 安装目录
cd /www/wwwroot/mediawiki-1.44.0

# 运行数据库更新(扩展更新后尤其需要)
php maintenance/run.php update.php --quick

# 重建最近更改
php maintenance/run.php rebuildrecentchanges.php

# 重构链接表
php maintenance/run.php refreshLinks.php

# 其他可选维护任务
# php maintenance/run.php cleanupTitles.php --dry-run # 先干跑检查,确认无误后再移除 --dry-run 执行

可以將這些命令添加到 crontab 中定期執行。

故障排除

  • 安裝時無法寫入 config 目錄:檢查目錄權限和 SELinux 設置(尤其在 CentOS/RHEL 系系統上)。可能需要執行:
  # 临时调整权限(安装后应改回)
  chmod 755 /www/wwwroot/mediawiki-1.44.0/config
  # 如果使用 SELinux,可能需要调整上下文
  semanage fcontext -a -t httpd_sys_rw_content_t "/www/wwwroot/mediawiki-1.44.0/config(/.*)?"
  restorecon -R -v /www/wwwroot/mediawiki-1.44.0/config
  • 頁面顯示 Wiki 標記(WikiText)而非渲染後的內容:檢查 PHP 解析是否正常,以及 LocalSettings.php 是否存在且可讀。
  • 上傳文件失敗:檢查 images/ 目錄權限、PHP 文件上傳大小限制 (upload_max_filesize, post_max_size) 以及 Apache 配置。