MediaWiki

Материал из Ай да Linux Wiki
Перейти к навигации Перейти к поиску

Установка MediaWiki

Установка крайне проста: скачиваем последнюю версию с официального сайта http://www.mediawiki.org и распаковываем в нужный каталог сайта (например /var/www/site/w/); далее настраиваем через веб-интерфейс. Точка входа http://domain.ru/w/config/

Подробно об установке можно узнать из официальной инструкции, и ещё одна здесь.

Вики движок лучше не размещать в корне сайта. Почему, кратко объяснено в спец. статье.

После установки хорошо бы ознакомиться с задачами администратора MediaWiki, где сказано что ещё можно доделать.

Как настроить (кратко)

Хорошие краткие инструкции (ЧаВО или FAQ) есть на официальном сайте MediaWiki как на русском языке, так и на английском.

Запрещаем редактирование не авторизованным пользователям:

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

Делаем ссылки короткими

По умолчанию ссылки выглядят так: http://domain.ru/wiki/index.php?title=article. Чтобы сделать их такими же короткими и наглядными, как в Википедии, есть много способов. Один из них - это добавить в LocalSettings.php:

$wgScriptPath   = "/w";  
$wgArticlePath  = "/wiki/$1";
$wgUsePathInfo  = true;

где $wgScriptPath - каталог установки вики-сайта, а $wgArticlePath - виртуальный каталог, который нужно будет указать в URL при обращении к статье, имя не должно совпадать с реальным каталогом.

Затем, в корневом каталоге сайта (т.е. рядом с каталогом "w") нужно создать файл .htaccess:

RewriteEngine On
RewriteRule ^wiki/(.*)$ /w/index.php?title=$1 [PT,L,QSA]
RewriteRule ^wiki/*$ /w/index.php [L,QSA]
RewriteRule ^/*$ /w/index.php [L,QSA]

Для лучшего понимания этого кода можно подробней ознакомиться с синтаксисом дерективы RewriteRule.

Если на сервере установлено несклько виртуальных хостов, то нужно ещё добавить  настройку виртуального хоста в секцию <VirtualHost>:

RewriteEngine On
RewriteOptions Inherit


и подключить модуль rewrite, после чего перезагрузить сервер. В Debian это делается следующим образом:

ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled
/etc/init.d/apache2 restart

Добавляем логотип

Картинку не более 135х135 пикселей с прозрачным фоном загружаем в папку images и добавляем в LocalSettings.php:

$wgLogo ={$wgScriptPath}/images/logofinal.png”;

Меняем favicon

Это изображение появляется возле адреса страницы в адресной строке сайта, а также в закладках. Его размер должен быть либо 16x16 либо 32x32 пикселей. Не все браузеры поддерживают формат favicon отличный от ico, подробней читайте на http://en.wikipedia.org/wiki/Favicon#Browser_support

Чтобы добавить favicon.ico можно

  • положить как обычно в корневой каталог сайта, т.е. на одном уровне с каталогом "w/" или
  • скопировать изображение в папку images и добавить в LocalSettings.php:
$wgFavicon = "$wgScriptPath/images/favicon.ico";

Настраиваем навигационную панель (слева)

Создаём страницу MediaWiki:Sidebar, где описываем содержание навигационной панели.

Синтаксис:

* <название блока 1>
** <ссылка на статью 1>|<отображаемый текст 1>
** <ссылка на статью 2>|<отображаемый текст 2>
* <название блока 2>
** <ссылка на статью 3>|<отображаемый текст 3>
** <ссылка на статью 4>|<отображаемый текст 4>

Пример:

* navigation
** mainpage|Начальная
** Служебная:AllPages|Все статьи
** Служебная:Categories|Все категории
** portal-url|Сообщество
** helppage|help
* Популярное
** Служебная:PopularPages|Статьи
** Служебная:MostLinkedCategories|Категории
** recentchanges-url|recentchanges
** randompage-url|randompage
* SEARCH
* TOOLBOX

Добавляем слева ссылки на другие вики

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

[[lang:Имя статьи]]

где lang - префикс языка. См. файл languages/Names.php

В случае, если нужно добавить ссылку на любой другой сайт, нужно создать интервики ссылку (см. ниже) и с таким же именем запись в languages/Names.php

Например, в таблице ссылок интервики создали ссылку my-wiki, тогда в Names.php добавляем строчку (в рамках объявления массива):

'my-wiki' => 'My Wiki',  # Link to my wiki

Теперь, в статью можно поместить строку:

[[my-wiki:Имя статьи]]

Подробней читать на офф. сайте.

Меняем права пользователей

Права пользователя можно поменять на Special:Userrights. Подробно описано в официальном руководстве.

Меняем пароль пользователя

Пароль любого пользователя можно поменять SQL командой:

UPDATE user SET user_password = MD5(CONCAT(user_id, '-', MD5('Новый_Пароль'))) WHERE user_name = 'Имя_Пользователя';

Разрешаем включать страницы из других вики

Чтобы включить страницу или шаблон из другой вики, она должна быть описана в таблице интервики ссылок и в LocalSettings.php нужно добавить параметр $wgEnableScaryTranscluding:

$wgEnableScaryTranscluding = true;
! В версии MediaWiki 16.2 при попытке подключить внешний шаблон {{WikiName:Template:TemplateName}} PHP выдаёт ошибку:
PHP Fatal error:  Cannot redeclare class HttpRequest in /local_path_to_site/w/includes/HttpFunctions.php on line 122

Разрешаем загружать файлы

# Позволяем загружать файлы
$wgEnableUploads = true;

# Определяем макс. размер файла
$wgMaxUploadSize = 5000000; 

# Отключаем проверку расширения файла
$wgCheckFileExtensions = false;
$wgStrictFileExtensions = false;

Последние два параметра разрешают загружать все файлы (что не безопасно). Если их не указывать, то по умолчанию будут разрешены только изображения.

Чтобы самостоятельно задать тип файлов указываем:

$wgFileExtensions = array('png', 'gif', 'jpg', 'jpeg', 'svg', 'pdf', 'doc', 'docx', 'xls', 'xlsx','ods','odg','odt');

Для того, чтобы файлы могли быть загруженными, должен быть настроен и сам PHP.

Подробней см. официальную документацию.

Добавляем классы таблиц

По умолчанию в движке MediaWiki определён только один класс таблиц wikitable.

  • Чтобы определить свои классы нужно отредактировать файл skins/common/shared.css. Вставьте в любое место приведённый справа код.

Пример классов таблиц:

вид
wikitable
Заголовок 1 Заголовок 2
Ячейка 1*1 Ячейка 2*1
Ячейка 1*2 Ячейка 2*2
Ячейка 1*3 Ячейка 2*3
standard
Заголовок 1 Заголовок 2
1 Ячейка 2 Ячейка
2 Ячейка 1 Ячейка
3 Ячейка 3 Ячейка
frame
Латиница Кириллица Цифры
D Г 3
E Щ 2
F Б 11
код
{| class="wikitable"
|-
!Заголовок 1||Заголовок 2 
|-
|Ячейка 1*1||Ячейка 2*1
|-
|Ячейка 1*2||Ячейка 2*2
|-
|Ячейка 1*3||Ячейка 2*3
|}
{| class="standard sortable"
|-
!Заголовок 1||Заголовок 2 
|-
| 1 Ячейка || 2 Ячейка
|-
| 2 Ячейка || 1 Ячейка 
|-
| 3 Ячейка || 3 Ячейка
|}
{| class="frame sortable"
|-
!Латиница||Кириллица||class="unsortable"|Цифры
|-
| D || Г || 3 
|-
| E || Щ || 2
|-
| F || Б || 11
|}
широкие
wide
Заголовок 1 Заголовок 2
Ячейка 1*1 Ячейка 2*1
Ячейка 1*2 Ячейка 2*2
Ячейка 1*3 Ячейка 2*3
wide-frame
Заголовок 1 Заголовок 2
Ячейка 1*1 Ячейка 2*1
Ячейка 1*2 Ячейка 2*2
Ячейка 1*3 Ячейка 2*3
  • Можно добавить возможность сворачивать таблицы. В официальной инструкции рекомендуется создать в вики страницы Common.js и Common.css, но в случае вики семьи такое решение не подойдёт, так действует только на одну вики, поэтому я добавил код в конец следующих файлов в каталоге skins/common/:
    • код для Common.js добавил в ajax.js
    • код для Common.css добавил в shared.css

Скопируйте и вставте следующий код в MediaWiki:Common.js и MediaWiki:Common.css:

Добавление расширений

Список всех уже установленных расширений можно увидеть на странице Special:Version а в руссифицированных версиях также Служебная:Version

Все расширения (extensions) устанавливаются в MediaWiki одинаково:

  1. копируются в свой подкаталог в каталоге extensions. Список расширений можно узнать из официального списка.
  2. в LocalSettings.php добавляется строка:
require_once( "$IP/extensions/Каталог_Расширения/Главный_Файл_Расширения.php" );

Некоторые полезные расширения

  • FCKeditor - визуальный (WYSIWYG) редактор. У этого расширения можно обновить сам редактор. Подключаем:
require_once( "$IP/extensions/FCKeditor/FCKeditor.php" );
  • Cite.php - добавляет поддержку тэгов <ref> и <references />, что позволяет использовать в тексте статьи сноски. Подключаем:
require_once( "$IP/extensions/Cite/Cite.php" );
  • ParserFunctions - позволяет использовать тэги: #expr: #if: #ifeq: #ifexist: #ifexpr: #switch: #time: #rel2abs: #titleparts: #iferror:. На Википедии можно почитать как использовать функции парсера. Устанавливать лучше из репозитория Subversion (скачать клиент):
cd extensions/
svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/ParserFunctions
  • SyntaxHighlight GeSHi - подсветка синтаксиса программного кода, позволяет использовать тэги <syntaxhighlight> и <source>. Это расширенная версия GeSHi
cd extensions/
svn co  svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/SyntaxHighlight_GeSHi

Подключаем:

require_once("$IP/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.php");

Параметры:

    • lang="??": Определяет язык программировария, сказывается на самой подсветке
    • line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS": Как нумеровать линии (по умолчанию никак)
    • line start="??": Какой номер у первой строки, используется вместе с line
    • highlight="??": Какую линию подсветить, не зависит от line start
    • enclose="??": В какой контейнер поместить блок. Принимает значения "pre" (по умолчанию), "div", "none".
    • strict: Присутствие этого параметра указывает, что нужно использовать режим strict.
  • CategoryTree - добавляет более удобную навигацию по категориям. Позволяет использовать тэг <categorytree>

Копируем в каталог расширений и подключаем:

require_once("$IP/extensions/CategoryTree/CategoryTree.php");
  • Collection - даёт возможность создавать книги в формате PDF из статей сайта.

! Требует чтобы PHP поддерживал cURL ! Возможно потребуется доуставить.

Копируем в каталог расширений и подключаем:

require_once("$IP/extensions/Collection/Collection.php");

Чтобы дать пользователям возможность сохранять и делиться своими книгами с другими, добавьте в Localsettings.php:

$wgGroupPermissions['user']['collectionsaveasuserpage'] = true;
$wgGroupPermissions['user']['collectionsaveascommunitypage'] = true;

С настройками по умолчанию книги будут генерироваться на сервере разработчика этого расширения.

  • CharInsert - быстрое добавление любых символов или шаблонных тегов. Ниже окна редактирования размещается дополнительная панель инструментов.

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

Чтобы узнать, как скачать дампы базы данных со статьями Википедии, см. статью Википедии

Для создания собственного дампа локального сайта, использующего MediaWiki, есть подробная инструкция.

Если кратко, то полная резервная копия - это дамп из СУБД (у меня MySQL) в виде SQL выражений, а частичная в виде xml файла. Особенности последней в том, что она не зависит от структуры базы данных и может быть перенесена, например, на нувую версию MediaWiki с изменнённой структурой БД, но в xml не выгружаются информация о логинаx пользователей, журналы и метаданные изображений.

  • Для SQL дампа выполняем:
mysqldump -h $SERVER -u $USER -p$PASSWORD --default-character-set=$CHARSET $DATABASE -c \
| /bin/gzip -9 > ~/backup/wiki-$(date '+%a').sql.gz
параметры $USER, $PASSWORD и $DATABASE берём из LocalSettings.php
cat ./LocalSettings.php  | grep wgDB
параметр --default-character-set=$CHARSET нужен, если возникли проблемы с кодировкой (подробней см. статью выше)
параметр -h $SERVER нужен если подключаемся не через сокет, иначе получим ошибку:
mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect
  • Для XML дампа используем скрипт dumpBackup.php, расположенный в каталоге maintenance:
php maintenance\dumpBackup.php --full > full.xml

Список параметров dumpBackup.php можно получить, вызвав его без параметров, однако, в исходном коде этого скрипта есть ещё несколько недокументированных опций.

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

Об этом можно подробно узнать из Справки по редактированию.

Уменьшение нагрузки

Полезно запретить поисковым роботам индексировать все служебные страницы, а ограничить их только статьями. Для этого редактируем файл robots.txt в корне сайта:

User-agent: *
Disallow: /w/

В случае вики семьи (фермы), в корневой каталог сайта кладём:

 User-agent: *
 Disallow: /w/
 Disallow: /ru/w-
 Disallow: /en/w-

а в языковые подкаталоги:

 User-agent: *
 Disallow: /w/
 Disallow: /w-

Подробнее см. на официальном сайте

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

  • Интервики (interwiki) - это ссылки, оформленные как внутренние ссылки с использованием специального префикса, но ведущие на страницы других проектов. Интервики-ссылки позволяют сделать ссылку на страницы других вики-проектов, например Википедии, Викиучебника, Викиновостей и т.д., или, к примеру, на разделы вашего вики-проекта на разных языках.
  • Tagline - можно изменить подпись "Материал из НазваниеВики".

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

Документация:

Советы по настройке:

Справочники:

Скины:

Утилиты:

Описание движка MediaWiki: