MediaWiki/Вики семейство (ферма)
Внимание!
СисадминВики совместно с журналом "Системный администратор" запустила специальный учебный проект по созданию сайта вики семейства на движке 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";
Добавление ещё вики
С этого шага и начинается формирование вики семьи (фермы). Есть несколько способов как это сделать:
- Способ 1 - использование мягких ссылок
- Способ 2 - использование куки (cookie)
- Способ 3 - расширение Farmer
В описанных выше способах не используется, но может быть кому-нибудь будет полезно расширение Extension:CentralAuth использующее объект $wgConf
Дополнительные настройки
Можно сделать общими ещё несколько таблиц (кроме user - списка пользователей) для всех вики в проекте:
- interwiki - таблица интервики ссылок
- ipblocks - таблица заблокированных ip адресов, например спамеры и др. злодеи.
- user_groups - группы пользователей
Для этого добавим их в секцию:
$wgSharedDB='db_Name'; $wgSharedPrefix='main_'; $wgSharedTables=['interwiki']; $wgSharedTables=['ipblocks']; $wgSharedTables=['user_groups'];
Полезные ссылки
- Несколько руководств по настройке вики семейства на официальном сайте MediaWiki
- http://www.mediawiki.org/wiki/Extension:WikiFarm - расширение, облегчающее администрирование вики фермы
Работающие примеры
Проекты построенные по этой инструкции:
- http://teopedia.org - Теопедия, теософская энциклопедия