MediaWiki
MediaWiki -- популярный бесплатный движок, на котором работает Википедия и другие проекты фонда WikiMedia. Легко устанавливается и расширяется.
Содержание
- 1 Установка MediaWiki
- 2 Как сделать (краткие ЧаВО)
- 2.1 Запрещаем редактирование не авторизованным пользователям:
- 2.2 Делаем ссылки короткими
- 2.3 Создаём пользователя из командной строки
- 2.4 Меняем права пользователей
- 2.5 Меняем пароль пользователя
- 2.6 Разрешаем включать страницы из других вики
- 2.7 Разрешаем загружать файлы
- 2.8 Добавляем классы таблиц
- 2.9 Сортируем данные в колонках
- 2.10 Переносим статьи и шаблоны из другой вики
- 2.11 Скрываем большие и незначительные блоки текста
- 2.12 Перевод сайта в режим только для чтения
- 2.13 Игнорируем перенаправление (redirect)
- 2.14 Меняем название заглавной страницы
- 2.15 Включаем обработку подстраниц
- 3 Добавление расширений
- 4 Резервное копирование
- 5 Редактировние статей
- 6 Поиск в Firefox по своей вики
- 7 Почта
- 8 Отображение файлов SVG
- 9 Борьба со спамом
- 10 Дополнительные настройки
- 11 Работа над ошибками
- 12 См. также
- 13 Полезные ссылки
Установка MediaWiki
Установка крайне проста: скачиваем последнюю версию с официального сайта http://www.mediawiki.org и распаковываем в нужный каталог сайта (например /var/www/site/w/); далее настраиваем через веб-интерфейс. Точка входа: http://domain.ru/w/mw-config/
Для установки из командной строки (CLI) выполняем:
Список всех параметров установщика:
Подробно об установке можно узнать из официальной инструкции, и ещё одна здесь.
Вики движок лучше не размещать в корне сайта. Почему, кратко объяснено в спец. статье.
После установки хорошо бы ознакомиться с задачами администратора 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>:
AllowOverride All RewriteEngine On RewriteOptions Inherit
и подключить модуль rewrite, после чего перезагрузить apache. В Debian это делается следующим образом:
ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled /etc/init.d/apache2 restart
Создаём пользователя из командной строки
Скрипт createAndPromote.php может создать пользователя, изменить его права (группу) и пароль.
Следующая команда создаёт пользователя NewUser с паролем UserPassword и добавляет его в группы бюрократоры и администраторы:
Меняем права пользователей
Права пользователя можно поменять на Special:Userrights. Подробно описано в официальном руководстве.
За изменение прав отвечает тип разрешения userrights. Дав это разрешение какой-либо группе в конфигурационном файле LocalSettings.php, мы позволяем участникам этой группы изменять права всех участников вики. Например, чтобы дать всем возможность управлять правами нужно добавить такую строчку:
$wgGroupPermissions['user']['userrights'] = true;
В реальной жизни это опасно и нецелесообразно, но может понадобиться в тестовой среде, чтобы быстро проверять и настраивать уровень доступа разных групп к ресурсам сайта:загрузка файлов, редактирование интервики и других служебных страниц вроде Edittools, а также редактирование защищённых страниц и т.п.
Меняем пароль пользователя
1. Пользователь может запросить забытый пароль на странице Special:UserLogin
2. Администратор может поменять пароль любого пользователя следующими способами:
2.1) скриптом из каталога maintenance:
php ./changePassword.php --user=example --password=newpassword
или для имён с пробелами:
php ./changePassword.php --user='Иван Иванович Иванов' --password=newpassword
2.2) SQL командой:
UPDATE user SET user_password = MD5(CONCAT(user_id, '-', MD5('Новый_Пароль'))) WHERE user_name = 'Имя_Пользователя';
2.3) на странице Special:PasswordReset. В этом случае пароль будет автоматически создан и отправлен на почтовый ящик участника.
Читайте подробней на официальном сайте. См также статью о MySQL.
Разрешаем включать страницы из других вики
Чтобы включить страницу или шаблон из другой вики, она должна быть описана в таблице интервики ссылок и в LocalSettings.php нужно добавить параметр $wgEnableScaryTranscluding:
$wgEnableScaryTranscluding = true;
Можно прочитать подбробней про включения (transclusion) вообще и про включения из других вики в частности.
Разрешаем загружать файлы
# Позволяем загружать файлы $wgEnableUploads = true; # Определяем макс. размер файла $wgMaxUploadSize = 5000000; # Отключаем проверку расширения файла $wgCheckFileExtensions = false; $wgStrictFileExtensions = false; # Отключаем проверку MIME-типов $wgVerifyMimeType = false;
Последние два параметра разрешают загружать все файлы (что не безопасно). Если их не указывать, то по умолчанию будут разрешены только изображения.
Чтобы самостоятельно задать тип файлов указываем:
$wgFileExtensions = array('png', 'gif', 'jpg', 'jpeg', 'svg', 'pdf', 'doc', 'docx', 'xls', 'xlsx','ods','odg','odt');
Для того, чтобы файлы могли быть загруженными, должен быть настроен и сам PHP. Максимальный размер загружаемого файла задаётся в php.ini (напр. /etc/php5/apache2/php.ini) параметром upload_max_filesize. Т.е. одной установки $wgMaxUploadSize будет мало.
Для повышения безопасности запретим выполнять скрипты из каталога изображений. Для этого в корне каталога images создадим файл .htaccess со следующими настройками (подробнее...):
# Serve HTML as plaintext, don't execute SHTML AddType text/plain .html .htm .shtml .phtml .php .php3 .php4 .php5 .php7 # Old way of registering php with AddHandler RemoveHandler .php # Recent way of registering php with SetHandler <FilesMatch "\.ph(p[3457]?s?|tml)$"> SetHandler None </FilesMatch>
Подробней о настройке загрузки файлов см. официальную документацию.
Добавляем классы таблиц
код для shared.css |
---|
/* -pm- as wikitable but without a table */ /*background and darker header background*/ table.standard { margin: 1em 1em 1em 0; border: 1px #aaa solid; border-collapse: collapse; } .standard th, .standard td { border: 1px #aaa solid; padding: 0.2em; } .standard th { background: #d2d2d2; text-align: center; } .standard caption { font-weight: bold; } /* -pm- as standart but with frame only */ table.frame { margin: 1em 1em 1em 0; border: 1px #aaa solid; border-collapse: collapse; } .frame th .frame td { padding: 0.2em; } .frame th { background: #d2d2d2; text-align: center; } .frame caption { font-weight: bold; } /* -pm- as standart but wide (100%) */ table.wide { margin: 1em 1em 1em 0; border: 1px #aaa solid; border-collapse: collapse; width: 100%; } .wide th, .wide td { border: 1px #aaa solid; padding: 0.2em; } .wide th { background: #d2d2d2; text-align: center; } .wide caption { font-weight: bold; } /* -pm- as wide but with frame only*/ table.wide-frame { margin: 1em 1em 1em 0; border: 1px #aaa solid; border-collapse: collapse; width: 100%; } .wide-frame th .wide-frame td { padding: 0.2em; } .wide-frame th { background: #d2d2d2; text-align: center; } .wide-frame caption { font-weight: bold; } |
По умолчанию в движке MediaWiki определён только один класс таблиц wikitable.
- Чтобы определить свои классы нужно отредактировать файл skins/common/shared.css. Вставьте в любое место приведённый справа код.
Пример классов таблиц:
вид |
|
|
| ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
код | {| 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 |} |
широкие |
| ||||||||
---|---|---|---|---|---|---|---|---|---|
|
Сортируем данные в колонках
Для добавления возможности сортировки данных в колонках достаточно в заголовке добавить к названию класса слово "sortable". Например:
{| class="wikitable sortable"
См. подробнее на английском на официальном сайте.
Переносим статьи и шаблоны из другой вики
- Special:Export - выгружаем требуемую статью или шаблон в промежуточный XML файл
- Special:Import - загружаем на новой вики XML файл
Подробнее в официальной документации. Иногда, в случае со сложными зависимостями, когда шаблон использует несколько других (как часто бывает в Википедии, например), проще переносить шаблон вручную, отредактировав его и убрав зависимости, заменив их на более простые конструкции (облегчённые шаблоны или просто текст).
Скрываем большие и незначительные блоки текста
- Можно добавить возможность сворачивать таблицы и фрагменты текста.
- Начиная с 1.18 для всех элементов добавлен класс "mw-collapsible", который можно указать не только для таблиц, но и для любого текста. Подробней см. справку по редактированию
- До версии 1.18 в официальной инструкции рекомендуется создать в вики страницы MediaWiki:Common.js и MediaWiki:Common.css Такое решение имеет свой плюс (при обновлении движка настройка останется) и минус (в случае вики фермы - страницу нужно будет создавать в каждой вики). Для вики фермы можно добавить код в конец следующих файлов в каталоге skins/common/:
- код для Common.js добавил в ajax.js
- код для Common.css добавил в shared.css
- Сворачивать можно также разделы, таблицы, ячейки в таблицах и удалённые от кнопки сворачивания блоки. Примеры можно посмотреть на сайте тестирования MediaWiki
Перевод сайта в режим только для чтения
Перевести сайт в режим только для чтения можно определив переменную $wgReadOnly:
$wgReadOnly = 'Внимание! Идёт обновление движка сайта. Редактирование временно будет не доступно!';
Игнорируем перенаправление (redirect)
Чтобы игнорировать перенапревление, нужно в адресной строке добавить параметр "redirect=no":
- https://mysite.org/w-wiki/index.php?title=Page_Name&redirect=no
Меняем название заглавной страницы
Если в URL не указать страницу сайта, то мы попадём на страницу "Заглавная страница". Название "Заглавной страницы" можно поменять как и любой другой - переименованием, но чтобы избежать сообщения о перенаправлении, нужно изменить системное сообщение MediaWiki:Mainpage. Подробнее в оф. документации.
Чтобы спрятать название страницы см. ниже.
Включаем обработку подстраниц
При включенной обработке подстраниц, если в заголовке страницы встречается косая черта (/), то система начинает распознавать всё, что за ней как подстраницу. То есть если есть в названии страницы эта косая черта, то она считается подстраницей, если нет - то это корневая (родительская) страница. Сколько косых черт в заголовке - таков и уровень подстраницы.
При выключенной обработке подстраниц все страницы считаются корневыми.
Обработка включается и выключается для каждого пространства имён отдельно:
# Включаем обработку подстраниц $wgNamespacesWithSubpages[NS_MAIN] = true; # Выключаем обработку подстраниц $wgNamespacesWithSubpages[NS_TEMPLATE] = false;
или для всех сразу:
# Включаем обработку подстраниц для всех пространств имён $wgNamespacesWithSubpages = array_fill( 0, 200, true );
При включенной обработке на подстраницах под заголовком появляется строка ссылок на все родительские страницы ("хлебные крошки" или BreadCrumbs). Также можно вывести список всех дочерних страниц (подстраниц) с помощью запроса:
{{Special:PrefixIndex/MediaWiki/ |hideredirects=1 |stripprefix=1}}
где
- hideredirects=1 скрывает страницы с перенаправлением, а
- stripprefix=1 удаляет из полного названия страницы названия родительских страниц; 1 - удаляет только самого первого родителя, 2 - первого и второго и т.д.
Подробнее смотрите на официальных страницах:
Добавление расширений
Этому посвящена статья MediaWiki/Расширения
Резервное копирование
Чтобы узнать, как скачать дампы базы данных со статьями Википедии, см. статью Википедии
Для создания собственного дампа локального сайта, использующего 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 можно получить, вызвав его без параметров, однако, в исходном коде этого скрипта есть ещё несколько недокументированных опций.
Редактировние статей
Об этом можно подробно узнать из Справки по редактированию.
Поиск в Firefox по своей вики
В Firefox с помощью шаблона %s и "Краткого имени" (keyword) в закладке можно настроить быстрый доступ к любому сайту.
Отрываем Закладки - Управление закладками (Bookmark/Manage bookmarks), создаём отдельную папку для быстрого поиска, скажем "Быстрый поиск"; создаём новую закладку, где указываем:
- Имя: Поиск по СисадминВики
- Адрес: http://sysadminwiki.ru/wiki/%s
- Краткое имя: св
Обратите внимание, что краткое имя может быть и на русском языке.
Теперь в адресной строке набираем: "св MediaWiki" и попадаем на эту страницу.
Если наберём просто "св", то попадём на начальную страницу сайта.
Почта
Разрешаем пересылку почты пользователям и устанавиваем ограничение на запрос напоминания пароля не чаще чем один в час.
## UPO means: this is also a user preference option $wgEnableEmail = true; $wgEnableUserEmail = true; # UPO $wgEnotifUserTalk = true; # UPO $wgEnotifWatchlist = true; # UPO $wgEmailAuthentication = true; $wgPasswordReminderResendTime = 1; $wgEmergencyContact = "wiki_admin@domain.ru"; $wgPasswordSender = "wiki_admin@domain.ru";
Чтобы задать особые настройки почтового сервера, с которого будут посылаться сообщения, определяем массив $wgSMTP.
$wgSMTP = array( 'host' => "mail.domain.ru", //could also be an IP address 'IDHost' => "domain.ru", 'port' => 25, 'auth' => false, 'username' => "wiki_admin@domain.ru", 'password' => "пароль" );
Но в этом случае нам понадобиться установленный пакет Mail из репозитория PEAR. Ставится командой
pear install MAIL Net_SMTP
Если же не установлен сам PEAR, то в Debian этом можно сделать так:
apt-get install php-pear
Отображение файлов SVG
Движок MediaWiki преобразует все изображения SVG (а также WMF, OpenEXR, DjVu и Graphviz) в формат PNG. Поэтому, для отображения файлов векторной графики в формате SVG необходимо доустановить утилиту конвертации графических файлов. На время выхода версии 1.27 поддерживаются следующие: ImageMagick, ImagickExt, sodipodi, inkscape, batik, rsvg, и imgserv.
Подробнее читайте на официальном сайте.
Борьба со спамом
- Расширение UserMerge:
- Блокировать пользователя с помощью UserMerge на служебной странице (блокирует ненадолго) или вручную.
- Удаление учётки: объединение спамерской учётки с Anonymous и удаление (расширение UserMerge).
- Удаление всех статей Anonymous (расширение Nuke)
- Отключить самостоятельную регистрацию пользователей и заводить их вручную.
Дополнительные настройки
- Описание переменных конфигурационного файла на английском.
- Интервики (interwiki) - это ссылки, оформленные как внутренние ссылки с использованием специального префикса, но ведущие на страницы других проектов. Интервики-ссылки позволяют сделать ссылку на страницы других вики-проектов, например Википедии, Викиучебника, Викиновостей и т.д., или, к примеру, на разделы вашего вики-проекта на разных языках.
- расширение SpecialInterwiki позволяет редактировать таблицу интервики ссылок через веб-интерфейс
- расширение Interwiki позволяет редактировать таблицу интервики через текстовый файл.
- Описание параметров интервики
Для редактирования таблицы интервики группой администраторов (sysop) нужно в конфигурацию добавить строчку:
$wgGroupPermissions['sysop']['interwiki'] = true;
Для разрешения включать шаблоны из других сайтов:
$wgEnableScaryTranscluding = true;
- На странице MediaWiki:Tagline можно изменить подпись "Материал из НазваниеВики". Подробнее в описании о настройке вида: Tagline
- Можно использовать "волшебные слова" (переключатели и переменные), например, для настройки отображение содержания, или вставки даты в определённом формате, или отображения статистики.
- Можно изменить некоторые умолчальные настройки профиля пользователя переменной $wgDefaultUserOptions. Например, чтобы не показывать ссылку "Правка" для секций для незарегистрированных пользователей, нужно добавить в LocalSettings.php
$wgDefaultUserOptions ['editsection'] = 0;
Работа над ошибками
Для вывода ошибок на экран, в конец конфигурационного файла LocalSettings.php дописываем.
# Debug $wgShowExceptionDetails = true; // Отладка работы базы данных $wgShowDBErrorBacktrace = true; $wgShowSQLErrors = true;
Чтобы видеть в браузере вообще всё, что пишется в журнал ошибок (текст показывается поверх сайта), добавляем ещё ниже строки:
error_reporting( -1 ); ini_set( 'display_errors', 1 );
Самостоятельная запись в журнал любого отладочного сообщения:
$wgDebugLogFile = "/home/user/logs/a-debug-{$wgDBname}.log"; wfErrorLog( "Текст сообщения", $wgDebugLogFile );
или в любой файл:
wfErrorLog( "Текст сообщения", "/home/user/logs/short.log" );
См. также
Тематические подстраницы для этой:
- API
- Botclasses.php
- Botclasses.php/en
- Botclasses.php/ru
- Wiki family (farm)/Способ 1
- Wiki family (farm)/Способ 2
- Вики семейство (ферма)
- Внешний вид
- Внешний вид/Monobook
- Внешний вид/Vector
- Внешний вид/VectorLight
- Многоязычность
- Мобильная версия
- Обновление
- Обновление движка вики фермы
- Ограничение доступа
- Параметры в шаблонах
- Параметры в шаблонах/en
- Параметры в шаблонах/ru
- Расширения
- Семантика
- Семантика/Подобъекты
- Семантика/Примеры
- Семантика/Примеры/Cписок свойств отдельно от страниц
- Семантика/Примеры/Список значений свойства
- Уменьшение нагрузки
- Формы
А также:
- Семантика - как установить, настроить и использовать её
- В категории MediaWiki есть ещё несколько статей, которые помогут настроить движок соответсвенно нуждам.
Полезные ссылки
Документация:
- http://meta.wikimedia.org/wiki/Помощь:Содержание
- http://ru.wikibooks.org/wiki/Вики -- небольшой Викиучебник
- http://workingwithmediawiki.com/book/ -- подробная книга о движке MediaWiki на англ.
Справочники:
- ЧАстые ВОпросы (FAQ)
- "Волшебные слова" в движке, а также встроенные служебные шаблоны для отображения статистики, даты и времени и т.д.
- http://www.wikireality.ru/wiki/Настройки_конфигурации_MediaWiki_(по_алфавиту) -- описание всех параметров LocalSettings.php на русском языке
Форум:
Описание движка MediaWiki:
- Скрипты обслуживания движка (находятся в каталоге maintenance)
- Официальные материалы для разработчика
- Описание API движка для тех, кто решил программировать под MediaWiki (например, создать бот)
- Информация по таблицам БД
- Жизненный цикл версий движка MediaWiki