Перейти к содержанию

RAMBA Wiki Migration 1.43

Материал из RAMBA Wiki
Версия от 11:52, 2 сентября 2026; Artem (обсуждение | вклад) (Новая страница: «__TOC__ <div class="portal-header"> <div style="font-size:2em; font-weight:700;">🚀 Миграция RAMBA Wiki на MediaWiki 1.43</div> <div style="margin-top:8px; opacity:.85;"> Переезд RAMBA Wiki со старого TurnKey Linux / MediaWiki 1.39 на новую инфраструктуру Debian 12 и MediaWiki 1.43 LTS. </div> </div> {{DISPLAYTITLE:Миграция RAMBA Wiki на MediaWiki 1.43}} == Общая информация == В...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
🚀 Миграция RAMBA Wiki на MediaWiki 1.43

Переезд RAMBA Wiki со старого TurnKey Linux / MediaWiki 1.39 на новую инфраструктуру Debian 12 и MediaWiki 1.43 LTS.


Общая информация

В сентябре 2026 года была выполнена полная миграция RAMBA Wiki на новую платформу.

Основной задачей было заменить устаревшую установку MediaWiki, сохранив:

  • все существующие статьи;
  • историю изменений;
  • пользователей и права доступа;
  • загруженные изображения;
  • оформление Wiki;
  • мобильную версию;
  • необходимые расширения;
  • собственное расширение RambaGameMonitor;
  • существующий публичный адрес wiki.ramba-art.ru.

Миграция выполнялась по схеме parallel migration: старая Wiki продолжала существовать во время подготовки новой системы и использовалась как аварийный вариант возврата.

После полного тестирования трафик был переключён на новую Wiki, а старая система была сохранена в Proxmox Backup Server и удалена из рабочей инфраструктуры.

Исходная система

До миграции RAMBA Wiki работала в контейнере Proxmox:

Параметр Значение
Proxmox CT 115
Имя WiKi
Дистрибутив TurnKey MediaWiki 17.1 / Debian 11 Bullseye
MediaWiki 1.39.2 LTS
PHP 7.4
MariaDB 10.5
Web-сервер Apache 2.4
IP 192.168.1.11
RAM 512 MB
CPU 1 vCPU
Диск 8 GB

MediaWiki 1.39 к моменту миграции уже являлась устаревшей веткой, поэтому было принято решение не обновлять существующий TurnKey-контейнер на месте, а построить новую систему.

Новая архитектура

Для новой RAMBA Wiki был создан отдельный LXC-контейнер:

Параметр Значение
Proxmox CT 102
Имя wiki-v2
ОС Debian 12 Bookworm
MediaWiki 1.43.9 LTS
PHP 8.2
MariaDB 10.11
Web-сервер Apache 2.4
IP 192.168.1.79
RAM 2048 MB
Swap 512 MB
CPU 2 vCPU
RootFS 16 GB
Storage OMV-SSD1

Система работает как unprivileged LXC-контейнер.

Схема работы

Публичный HTTPS завершается на reverse proxy BrainyCP.

Internet
   │
   │ HTTPS :443
   ▼
wiki.ramba-art.ru
   │
   ▼
BrainyCP / nginx
CT 105
192.168.1.12
   │
   │ HTTP :80
   ▼
RAMBA Wiki
CT 102 — wiki-v2
192.168.1.79
   │
   ├── Apache
   ├── PHP 8.2
   ├── MediaWiki 1.43
   └── MariaDB 10.11

TLS-сертификат обслуживается reverse proxy.

Сам MediaWiki-контейнер не требует собственного HTTPS-сервера.

Создание нового контейнера

Новая Wiki была развёрнута на чистом Debian 12.

Основные установленные компоненты:

apache2
mariadb-server
imagemagick

php8.2
libapache2-mod-php8.2
php8.2-mysql
php8.2-intl
php8.2-mbstring
php8.2-xml
php8.2-curl
php8.2-gd
php8.2-zip
php8.2-apcu

Для Apache были активированы необходимые модули:

a2enmod rewrite
a2enmod headers
a2enmod expires

Основная директория MediaWiki:

/var/www/mediawiki

Перенос базы данных

База данных старой Wiki была экспортирована из CT 115 и импортирована в MariaDB нового CT 102.

После импорта был выполнен штатный процесс обновления схемы базы данных MediaWiki.

cd /var/www/mediawiki
runuser -u www-data -- php maintenance/run.php update

Обновление схемы прошло успешно.

В результате были сохранены:

  • статьи;
  • ревизии;
  • категории;
  • пользователи;
  • права пользователей;
  • служебные страницы MediaWiki;
  • история изменений.

Перенос изображений

Каталог загруженных файлов старой Wiki был перенесён в:

/var/www/mediawiki/images

После переноса были восстановлены корректные права доступа для Apache:

chown -R www-data:www-data /var/www/mediawiki/images
find /var/www/mediawiki/images -type d -exec chmod 755 {} \;
find /var/www/mediawiki/images -type f -exec chmod 644 {} \;

Также был перенесён логотип RAMBA Wiki:

/var/www/mediawiki/resources/assets/ramba_b.png

Короткие URL

Для статей сохранена привычная структура адресов:

https://wiki.ramba-art.ru/wiki/Название_страницы

В MediaWiki используется:

$wgScriptPath = "";
$wgArticlePath = "/wiki/$1";
$wgServer = "https://wiki.ramba-art.ru";

Apache выполняет перенаправление запросов вида:

/wiki/Название

на MediaWiki `index.php`.

Reverse Proxy

Reverse proxy RAMBA Wiki находится в BrainyCP:

Параметр Значение
Proxmox CT 105
IP 192.168.1.12
Web-сервер nginx
Backend 192.168.1.79:80
Frontend HTTPS :443

Основной upstream:

location / {
    proxy_pass http://192.168.1.79:80;

    proxy_http_version 1.1;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Port 443;

    proxy_redirect off;
}

До миграции upstream указывал на старый сервер:

192.168.1.11:80

После проверки новой Wiki он был изменён на:

192.168.1.79:80

Это позволило переключить production без изменения DNS.

HTTPS за reverse proxy

Поскольку HTTPS завершается на nginx, а между nginx и Apache используется HTTP, MediaWiki необходимо корректно сообщать исходный протокол запроса.

В `LocalSettings.php` добавлена проверка доверенного reverse proxy:

if (
    ($_SERVER["REMOTE_ADDR"] ?? "") === "192.168.1.12" &&
    ($_SERVER["HTTP_X_FORWARDED_PROTO"] ?? "") === "https"
) {
    $_SERVER["HTTPS"] = "on";
}

Заголовок `X-Forwarded-Proto` принимается только от reverse proxy RAMBA с адресом `192.168.1.12`.

Мобильная версия

Для мобильного интерфейса используются:

  • MobileFrontend
  • MinervaNeue

Конфигурация:

wfLoadSkin( 'MinervaNeue' );

$wgDefaultMobileSkin = 'minerva';

wfLoadExtension( 'MobileFrontend' );

Расширение MobileFrontend установлено в версии, совместимой с MediaWiki 1.43.

После миграции была дополнительно переработана главная страница RAMBA Wiki, чтобы карточки корректно отображались на небольших экранах.

На мобильных устройствах карточки автоматически перестраиваются в один столбец.

Редактирование исходного кода

Для работы с исходным кодом страниц используются:

wfLoadExtension( 'WikiEditor' );
wfLoadExtension( 'CodeEditor' );
wfLoadExtension( 'SyntaxHighlight_GeSHi' );

$wgDefaultUserOptions['usebetatoolbar'] = 1;
$wgWikiEditorRealtimePreview = true;

`SyntaxHighlight_GeSHi` используется для оформления команд, конфигурационных файлов и программного кода в технических статьях RAMBA Wiki.

Основные расширения

После миграции были активированы необходимые стандартные расширения:

wfLoadExtension( 'ParserFunctions' );
wfLoadExtension( 'Cite' );
wfLoadExtension( 'TemplateData' );
wfLoadExtension( 'InputBox' );
wfLoadExtension( 'ImageMap' );
wfLoadExtension( 'Nuke' );
wfLoadExtension( 'ReplaceText' );

DynamicPageList3

Для существующих страниц RAMBA Wiki была сохранена поддержка DynamicPageList3.

Установлен:

DynamicPageList3 3.5.2

Активация:

wfLoadExtension( 'DynamicPageList3' );

После установки расширение было проверено на MediaWiki 1.43.

RambaGameMonitor

Сохранено собственное расширение RambaGameMonitor.

Расширение предоставляет тег:

<rambamonitor />

который позволяет отображать состояние игровых серверов непосредственно на страницах RAMBA Wiki.

В текущей реализации выполняются запросы:

  • Rust — Source Engine Query / UDP;
  • Minecraft Java Edition — Server List Ping / TCP.

Пример результата:

Сервер Состояние Игроки Дополнительная информация
Rust Online / Offline текущие / максимум карта
Minecraft Online / Offline текущие / максимум версия

После переноса расширение было проверено непосредственно на MediaWiki 1.43 и PHP 8.2.

Отказ от устаревших компонентов

Во время миграции была проведена ревизия расширений старой Wiki.

Некоторые компоненты намеренно не переносились.

Компонент Решение Причина
GameQ Не переносить RambaGameMonitor больше не зависит от GameQ
LocalisationUpdate Не переносить Устаревшее расширение
GoogleCodePrettify Не переносить Заменено SyntaxHighlight
Renameuser Не переносить Функциональность присутствует в современном MediaWiki

Таким образом новая установка не является простой копией старого сервера — устаревшие компоненты были удалены.

Права доступа

Анонимным пользователям разрешено чтение Wiki, но запрещено редактирование и самостоятельная регистрация.

$wgGroupPermissions['*']['read'] = true;
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['createpage'] = false;
$wgGroupPermissions['*']['createaccount'] = false;

$wgGroupPermissions['user']['edit'] = true;
$wgGroupPermissions['user']['createpage'] = true;

Для администратора Wiki дополнительно было назначено право:

interface-admin

Это необходимо для редактирования системных CSS/JS-страниц, включая:

MediaWiki:Common.css

Безопасность

После миграции были сгенерированы новые значения:

$wgSecretKey
$wgUpgradeKey

Старые значения больше не используются.

Значения ключей в документации намеренно не публикуются.

Пароль базы данных также не должен храниться в статьях Wiki или открытых конфигурационных примерах.

Резервное копирование

После успешного запуска production была создана полная резервная копия нового CT 102 в Proxmox Backup Server.

Идентификатор backup:

ct/102/2026-09-02T08:36:30Z

Объём файловой системы на момент резервного копирования составлял приблизительно:

1.77 GiB

После дедупликации и сжатия в PBS было передано около:

568 MiB

Так как используемое для rootfs NFS-хранилище не поддерживает необходимый тип snapshot, Proxmox автоматически переключил backup из режима `snapshot` в режим `suspend`.

Контейнер был приостановлен приблизительно на две секунды.

Backup завершился успешно.

Переключение production

После проверки новой системы был изменён upstream nginx:

СТАРЫЙ:
192.168.1.11:80

НОВЫЙ:
192.168.1.79:80

Перед применением конфигурации nginx была выполнена проверка:

nginx -t

После успешной проверки:

systemctl reload nginx

Публичный запрос подтвердил:

https://wiki.ramba-art.ru/
        ↓
HTTP 301
        ↓
https://wiki.ramba-art.ru/wiki/Заглавная_страница
        ↓
HTTP 200

Проверка после миграции

После переключения production были протестированы:

  • открытие главной страницы;
  • HTTPS;
  • короткие URL;
  • авторизация;
  • редактирование статей;
  • редактирование `MediaWiki:Common.css`;
  • загрузка файлов;
  • отображение изображений;
  • мобильный интерфейс;
  • MinervaNeue;
  • DynamicPageList3;
  • SyntaxHighlight;
  • RambaGameMonitor;
  • Apache;
  • MariaDB.

Финальная проверка:

HTTP: 200
Redirects: 1
Final:
https://wiki.ramba-art.ru/wiki/Заглавная_страница

Вывод старой системы из эксплуатации

После успешной работы CT 102 старый контейнер CT 115 был остановлен.

После остановки была повторно проверена публичная Wiki:

CT 102: running
CT 115: stopped
wiki.ramba-art.ru: HTTP 200

Это подтвердило отсутствие зависимости production от старого контейнера.

После этого была создана финальная резервная копия CT 115 в Proxmox Backup Server.

Старый контейнер был удалён:

pct destroy 115

Proxmox подтвердил удаление старого диска:

Logical volume "vm-115-disk-0" successfully removed.

После полного удаления CT 115 Wiki была проверена ещё раз:

HTTP: 200
Time: 0.262066s

Таким образом старая установка полностью выведена из эксплуатации.

Итоговая конфигурация

🌐 Production

wiki.ramba-art.ru

MediaWiki 1.43.9 LTS

Debian 12 Bookworm

📦 Контейнер

CT 102

wiki-v2

192.168.1.79

🔀 Reverse Proxy

BrainyCP

CT 105

192.168.1.12

💾 Backup

Proxmox Backup Server

Резервируются новая и архивная версии Wiki

Результат

Миграция RAMBA Wiki выполнена успешно.

Старая архитектура:

TurnKey Linux
Debian 11
MediaWiki 1.39
PHP 7.4
CT 115
192.168.1.11

заменена на:

Debian 12
MediaWiki 1.43.9 LTS
PHP 8.2
MariaDB 10.11
CT 102
192.168.1.79

При этом были сохранены существующие данные Wiki и необходимые функции, удалены устаревшие компоненты, восстановлена мобильная версия, настроен reverse proxy и HTTPS, обновлены ключи безопасности и создана новая точка восстановления в Proxmox Backup Server.

RAMBA Wiki полностью переведена на новую инфраструктуру.