MediaWiki/Вики семейство (ферма)

From SysadminWiki.ru
Jump to: navigation, search
MediaWiki-family-logo.png

Внимание!

СисадминВики совместно с журналом "Системный администратор" запустила специальный учебный проект по созданию сайта вики семейства на движке MediaWiki.

Точка входа: http://wikifamily.sysadminwiki.ru

Описание задачи

Нужно создать вики семью (wiki family) или ферму (wiki farm) на движке MediaWiki. То есть чтобы в одном проекте использовался один движок, но разные таблицы для хранения данных.

После выполнения этой инструкции мы получим:

  • Один движок для нескольких вики, т.е. используются одни и теже php файлы, что облегчит обновление движка.
  • Одна база данных. Для каждой вики свой префикс к таблицам.
  • Едининый центр авторизации проекта для всех вики. Пользователь в одной вики астоматически является пользователем остальных.
  • Общее хранилище изображений и др. файлов.
  • Каждая вики существует на нескольких языках.
  • Пользователи разграничены в правах на разных вики.

В планах расширить статью до включения возможностей:

  • Поиск возможен как по отдельной вики, так и по всему проекту.
  • Автоматическое создание интервики ссылок на другие (также внешние) вики. Написать бот.

Все настройки будем выполнять поэтапно, наращивая функционал. Таким образом те, кому не нужны все возможности, сможет остановиться на любом шаге и получить работающий проект. Описанный алгоритм позволит добавлять в проект сколько угодно вики.

В нашем тестовом проекте TestWiki (testwiki.org это имя занято и здесь используется просто для примера) мы

1. создадим 3 вики:

  • testwiki.org/main/ - основной сайт с техническими статьями, служебными шаблонами и описанием всего проекта
  • testwiki.org/pool/ - общий для всех склад изображений, мультимедиа файлов, шаблонов и т.д. а также статей их описывающих
  • testwiki.org/lib/ - сайт с документацией и книгами, на которые будут ссылаться статьи в основном сайте

2. добавим многоязыковую поддержку каждой вики

  • ru.testwiki.org/main/
  • ru.testwiki.org/pool/
  • ru.testwiki.org/lib/
  • en.testwiki.org/main/
  • en.testwiki.org/pool/
  • en.testwiki.org/lib/

и т.д. Количество и имена вики в языковых разделах не зависят друг от друга и могут быть разными.

3. создадим порталы (не вики: php или просто html) в корневых каталогах сайтов, которые будут описывать все вики находящиеся в них:

  • testwiki.org - общий портал для всего проекта
  • ru.testwiki.org - портал для русскоязычных вики (можно просто перенаправить на ru.testwiki.org/main/
  • en.testwiki.org - портал для англоязычных вики

Установка первой вики

Общая информация приведена в главной статье по MediaWiki.

  • Для облегчения последующих обновлений рабочий каталог w лучше сделать ссылкой на каталог с исходным кодом w16 (где 16 - версия MediaWiki), тогда при обновлении распакуем новую версию в каталог, скажем, w18 и заменим ссылку рабочего каталога. Таким образом, распаковываем движок MediaWiki в каталог w16, делаем ссылку:
ln -s ./w16 ./w
  • Для MediaWiki 1.16.x заходим в браузере на страницу http://testwiki.org/w/config и настраиваем необходимые параметры:
    • Wiki name: TestWiki.org
    • Contact e-mail: your@mail.domain
    • Language: ru
    • Copyright/license: Public Domain
    • Admin username: <Имя админа>
    • Object caching: No caching
    • Настройки доступа к БД: Database host, Database name, DB username, DB password
    • Database table prefix: main__

Жмём Install MediaWiki!

Инсталлятор MediaWiki > 1.16 требует меньше параметров и уже руссифицирован. В браузере адрес иной: http://testwiki.org/w/mw-config

  • Переносим файл LocalSettings.php из w/config/ в w/. Также сделаем его копию LocalSettings_сommon.php, которую позже будем использовать.
  • Проверяем, что вики работает как следует по адресу testwiki.org/w/. Тонкую настройку лучше оставить на потом.

Преобразуем URL в короткий вид

  • Создаём файл .htaccess в корневом каталоге сайта, т.е. там же где лежит каталог "w"
RewriteEngine On

RewriteRule ^main/(.*)$ /w/index.php?title=$1 [PT,L,QSA]
RewriteRule ^main/*$ /w/index.php [L,QSA]
RewriteRule ^/*$ /w/index.php  [L,QSA]
  • В LocalSettings.php добавляем строку:
$wgArticlePath = "/main/$1"; 


Добавление ещё вики

С этого шага и начинается формирование вики семьи (фермы). Есть несколько способов как это сделать:

В описанных выше способах не используется, но может быть кому-нибудь будет полезно расширение Extension:CentralAuth использующее объект $wgConf

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

Можно сделать общими ещё несколько таблиц (кроме user - списка пользователей) для всех вики в проекте:

  • interwiki - таблица интервики ссылок
  • ipblocks - таблица заблокированных ip адресов, например спамеры и др. злодеи.
  • user_groups - группы пользователей

Для этого добавим их в секцию:

$wgSharedDB='db_Name';
$wgSharedPrefix='main_';
$wgSharedTables=['interwiki'];
$wgSharedTables=['ipblocks'];
$wgSharedTables=['user_groups'];

Полезные ссылки

Работающие примеры

Проекты построенные по этой инструкции: