MediaWiki/Обновление

From SysadminWiki.ru
Jump to: navigation, search

Подробная инструкция на английском приведена на http://www.mediawiki.org/wiki/Manual:Upgrading

Для обновления вики семейства (фермы) см отдельную статью.

Вкратце

В общих чертах для обновления движка MediaWiki нужно:

  1. Сделать резервные копии БД и файлов
  2. Распаковать и заменить файлы
  3. Обновить структуру БД. Можно через веб-интерфейс по адресу http://site.name/w/mw-config/


Пошаговая инструкция

Предположим, что:

  • имя текущего каталога с движком "w" (который может быть на самом деле ссылкой на другой каталог)
  • имя каталога с новым движком w31 (который тоже может быть ссылкой на другой каталог)

Чтобы для посетителей сайта обновление прошло максимально быстро выполним некоторые подготовительные работы перед самим обновлением.


Предварительные работы, не затрагивающие работающий движок

  • файлы новой версии распакуем во временный каталог (скажем w31) рядом с основным
  • в него копируем настроечные файлы (по умолчанию он один: LocalSettings.php)
  • добавим свои изменения в иные файлы (если вносили): темы оформления, languages/data/Names.php (ранее languages/Names.php) (межязыковые ссылки) и т.п.
  • если использовалась своя тема оформления, то скопируем её
  • копируем каталог /images. Если он слишком большой, то в каталоге нового движка можно сделать на него ссылку для проверки работоспособности, а затем, после окончательного перехода на этот движок перенести папку из старого каталога в новый - перенос происходит гораздо быстрее, чем копирование
  • Если для установки и обновления расширений используем Composer, то копируем исполняемый файл в каталог нового движка (w31) и запускаем его обновление. Это обновит также и совместимые с ним расширения:
php composer.phar update --no-dev
  • Обновляем расширения, не входящие в базовую комплектацию и не обновлённые Composer. Скачиваем вручную новую версию, распаковываем и копируем её в каталог extensions.

Само обновление движка MediaWiki

  • Переведём сайт в режим "только для чтения" указав в LocalSettings.php переменную (сообщение можно сделать любым):
$wgReadOnly = '<div style="color: red;"><big>Редактирование не будет сохранено! Upgrading MediaWiki</big></div>';
  • Переименовываем каталог w в w.old, а w31 в w. Если w был ссылкой, то удаляем её и далаем новую:
rm ./w ln -s ./w31 ./w
  • Обновим структуру БД, запустив скрипт:
php maintenance/update.php
если конфигурационный файл лежит в другом месте, то указываем это:
php ./update.php --conf /Путь_к_сайту/LocalSettings.php
или используя инсталлятор через веб-интерфейс (sitename.ru/w/mw-config). В случае вики фермы, структуру БД нужно менять для каждой вики, каждый раз задавая нужный префикс таблиц. Так как браузер кэширует информацию инсталлятора, то для обновления каждой следующей БД нужно будет чистить кэш, либо менять имя каталога с дистрибутивом (например на w31-2 и т.д.). В Firefox очистить недавнюю историю (и кэш) можно Ctrl+Shift+Del.
  • Переименовываем каталог w в w.old, а w31 в w. Если w был ссылкой, то удаляем её и далаем новую:
rm ./w ln -s ./w31 ./w
  • Если в каталоге нового движка делали ссылку на image, то удаляем ссылку и переносим сам каталог
  • Проверяем версию движка и расширений на странице Служебная:Версия.

Работа над ошибками

Пустая страница

  • Проверим на самом ли деле нам возвращается пустая страница. В Firefox нажмём Ctrl + U для просмотра исходного кода страницы.
  • Проверим работоспособность API движка. Выведем общую информацию о движке:
http://sitename.ru/w/api.php?action=query&meta=siteinfo&siprop=general|statistics
  • Проверим журнал ошибок веб сервера для этого сайта.

Сбой в кодировке

Если после обновления со страниц исчез текст, а в списках статей остались только те, что содержат не кириллические символы, значит произошёл сбой в кодировке. В этом случае большинство таблиц нуждаются в перекодировке.

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

wiki_hitcounter
wiki_msg_resource
wiki_msg_resource_links
wiki_searchindex

Команды SQL для обновления всех необходимых таблиц:

ALTER TABLE wiki_archive CONVERT TO CHARACTER SET binary;

ALTER TABLE wiki_category CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_categorylinks CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_change_tag CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_external_user CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_externallinks CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_filearchive CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_image CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_imagelinks CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_interwiki CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_ipblocks CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_iwlinks CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_job CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_l10n_cache CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_langlinks CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_log_search CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_logging CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_module_deps CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_objectcache CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_oldimage CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_page CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_page_props CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_page_restrictions CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_pagelinks CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_protected_titles CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_querycache CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_querycache_info CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_querycachetwo CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_recentchanges CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_redirect CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_revision CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_site_stats CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_tag_summary CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_templatelinks CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_text CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_transcache CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_updatelog CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_uploadstash CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_user CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_user_former_groups CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_user_groups CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_user_newtalk CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_user_properties CONVERT TO CHARACTER SET binary; ALTER TABLE wiki_valid_tag CONVERT TO CHARACTER SET binary;

ALTER TABLE wiki_watchlist CONVERT TO CHARACTER SET binary;

Все таблицы MediaWiki для версии 1.27.х:

wiki_archive
wiki_category
wiki_categorylinks
wiki_change_tag
wiki_external_user
wiki_externallinks
wiki_filearchive
wiki_hitcounter
wiki_image
wiki_imagelinks
wiki_interwiki
wiki_ipblocks
wiki_iwlinks
wiki_job
wiki_l10n_cache
wiki_langlinks
wiki_log_search
wiki_logging
wiki_module_deps
wiki_msg_resource
wiki_msg_resource_links
wiki_objectcache
wiki_oldimage
wiki_page
wiki_page_props
wiki_page_restrictions
wiki_pagelinks
wiki_protected_titles
wiki_querycache
wiki_querycache_info
wiki_querycachetwo
wiki_recentchanges
wiki_redirect
wiki_revision
wiki_searchindex
wiki_site_stats
wiki_tag_summary
wiki_templatelinks
wiki_text
wiki_transcache
wiki_updatelog
wiki_uploadstash
wiki_user
wiki_user_former_groups
wiki_user_groups
wiki_user_newtalk
wiki_user_properties
wiki_valid_tag
wiki_watchlist


mediawiki/maps: 5.3.0 installed, ~5 required

Причина: скрипт обновления не понял синтаксис описания подверсий в файле composer.json. Параметр "~5" означает, что composer должен установить последнюю подверсию расширения Maps, выпущенную для версии 5.
Решение: в файле composer.json указать явным образом требуемую версию. т.е. заменить строку:
"mediawiki/maps": "~5"
на:
"mediawiki/maps": "5.3.0"
и запустить обновление ещё раз.

Сбой в обновлении Semantic MediaWiki

См. статью Семантика.


Дополнительные ссылки

Процесс обновления и решение возможных проблем: