RAMBA Wiki Migration 1.43: различия между версиями
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}} == Общая информация == В...» |
Artem (обсуждение | вклад) м Artem переименовал страницу Миграция RAMBA Wiki на MediaWiki 1 43 в RAMBA Wiki Migration 1.43 |
(нет различий)
| |
Текущая версия от 11:57, 2 сентября 2026
Переезд 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.11TLS-сертификат обслуживается 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 115Proxmox подтвердил удаление старого диска:
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 полностью переведена на новую инфраструктуру.