Установка и настройка MediaWiki

Материал из darklurker wiki
Перейти к: навигация, поиск

Установка MediaWiki

Предполагается, что уже установлен сервер Apache, PHP и MariaDB/MySQL.

Если нет, то читаем - Настройка WEB-сервера на Apache

Для движка Mediawiki 1.31.x и более актуальных версий требуется php 7.x, читаем - Обновление PHP до 7.2

Заметил, что на php 7.2 mediawiki 1.31.x работает некорректно, при этом отлично на php 7.0, следует учитывать этот нюанс.

Текущая инструкция была написана для версии 1.27.х, с php 5.6 и mariadb 5.5.x.



Для начала установим пакет wget, если он не был установлен

yum install wget

Переходим в директорию для wiki

cd /var/www/

Загрузим необходимый нам релиз mediawiki командой

wget https://releases.wikimedia.org/mediawiki/1.27/mediawiki-1.27.5.tar.gz
актуальные релизы можно посмотреть здесь

Распакуем загруженный архив

tar xvzf mediawiki-1.27.5.tar.gz

Удаляем архив

rm -rf mediawiki-1.27.5.tar.gz

Переименуем распакованную директорию из архива

mv mediawiki-1.27.5/ w/

Теперь путь до mediawiki у нас изменился на

/var/www/w

Необходимо изменить владельца директории командой

chown -R apache. /var/www/w

Cоздание базы данных

Заходим в БД

mysql -uroot -pPASSWORD

Создаем БД и пользователя

CREATE DATABASE wikidb;
GRANT ALL PRIVILEGES ON wikidb.* TO 'wikiuser'@'localhost' IDENTIFIED BY 'password';

Выходим из mysql

exit

Настройка MediaWiki

Создаем файл конфигурации для wiki

/etc/httpd/conf.d/wiki.conf

Наполняем содержимым

#
# Mediawiki page cfg
#

Alias /w /var/www/w

<Directory "/var/www/w">
  Options FollowSymLinks
  AllowOverride None
  Require all granted
</Directory>

Переходим по ссылке http://ip-адрес/w/mw-config/index.php для настройки wiki

Если возникает ошибка Forbidden, то необходимо отредактировать файл конфигурации apache

nano /etc/httpd/conf/httpd.conf

Добавляем index.php index.xml в конфигурации

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
   DirectoryIndex index.html index.php index.htm
</IfModule>

#

Настраиваем wiki нажимая "Далее", указывая название базы и пользователя базы, которых мы создали.

В конце установки будет загружен файл LocalSettings.php, который необходимо поместить в корневую директорию с вики, в моем случае /var/www/w/

Сделать это можно загрузив файл LocalSettings.php, например, на яндекс диск или FTP.

Можно использовать мой FTP-сервер - ftp://its:7412369@83.167.1.228/share/

Теперь необходимо загрузить LocalSettings в директорию с wiki

cd /var/www/w/
wget ftp://its:7412369@83.167.1.228/share/LocalSettings.php

Перезагружаем Apache

systemctl restart httpd

Теперь можем зайти и проверить работу wiki по адресу http://ip-адрес/w




Если все ок, то сразу стоит сделать короткие URL вида /wiki/Название_страницы

Для этого редактируем файл LocalSettings.php

nano /var/www/w/LocalSettings.php

Добавляем:

$wgScriptPath = "/w";
$wgScriptExtension = ".php";
$wgArticlePath = "/wiki/$1";

Переходим в редактирование файла конфигурации wiki

nano /etc/httpd/conf.d/wiki.conf

Добавляем строчку

Alias /wiki /var/www/w/index.php

Перезагружаем apache и теперь URL в коротком формате.

Все дальнейшие изменения, в основном делаются в файле LocalSettings.php

Расширенные настройки MediaWiki

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

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

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

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

Полный список прав см. в официальном руководстве

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

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

За изменение прав отвечает тип разрешения userrights. Дав это разрешение какой-либо группе в конфигурационном файле LocalSettings.php, мы позволяем участникам этой группы изменять права всех участников вики. Например, чтобы дать всем возможность управлять правами нужно добавить такую строчку:

$wgGroupPermissions['user']['userrights'] = true;

В реальной жизни это опасно и нецелесообразно, но может понадобиться в тестовой среде, чтобы быстро проверять и настраивать уровень доступа разных групп к ресурсам сайта:загрузка файлов, редактирование интервики и других служебных страниц вроде Edittools, а также редактирование защищённых страниц и т.п.

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

1. Пользователь может запросить забытый пароль на странице Special:UserLogin

2. Администратор может поменять пароль любого пользователя следующими способами:

2.1) скриптом из каталога maintenance:

php changePassword.php --user=example --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 будет мало.

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

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

код для 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. Вставьте в любое место приведённый справа код.


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

вид
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


Сортируем данные в колонках

Для добавления возможности сортировки данных в колонках достаточно в заголовке добавить к названию класса слово "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 = 'Внимание! Идёт обновление движка сайта. Редактирование временно будет не доступно!';


Меняем название заглавной страницы

Если в URL не указать страницу сайта, то мы попадём на страницу "Заглавная страница". Название "Заглавной страницы" можно поменять как и любой другой - переименованием, но чтобы избежать сообщения о перенаправлении, нужно изменить системное сообщение MediaWiki:Mainpage. Подробнее в оф. документации.

Чтобы спрятать название страницы см. ниже.

Прячем название страницы

Для того, чтобы спрятать название страницы (в примере ниже это "Заглавная_страница") добавляем на страницу MediaWiki:Common.css следующий код:

body.page-Заглавная_страница #siteSub,
body.page-Заглавная_страница #contentSub,
body.page-Заглавная_страница h1.firstHeading
{display:none !important}

Включаем обработку подстраниц

При включенной обработке подстраниц, если в заголовке страницы встречается косая черта (/), то система начинает распознавать всё, что за ней как подстраницу. То есть если есть в названии страницы эта косая черта, то она считается подстраницей, если нет - то это корневая (родительская) страница. Сколько косых черт в заголовке - таков и уровень подстраницы.

При выключенной обработке подстраниц все страницы считаются корневыми.

Обработка включается и выключается для каждого пространства имён отдельно:

  • Включаем обработку подстраниц
$wgNamespacesWithSubpages[NS_MAIN] = true;
  • Выключаем обработку подстраниц
$wgNamespacesWithSubpages[NS_TEMPLATE] = false;

или для всех сразу:

  • Включаем обработку подстраниц для всех пространств имён
$wgNamespacesWithSubpages = array_fill(
 	0, 200, true
 	);

При включенной обработке на подстраницах под заголовком появляется строка ссылок на все родительские страницы. Также можно вывести список всех дочерних страниц (подстраниц) с помощью запроса:

{{Special:PrefixIndex/MediaWiki/ |hideredirects=1 |stripprefix=1}}

где

  • hideredirects=1 скрывает страницы с перенаправлением, а
  • stripprefix=1 удаляет из полного названия страницы названия родительских страниц; 1 - удаляет только самого первого родителя, 2 - первого и второго и т.д.


Подробнее смотрите на официальных страницах:

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

Этому посвящена статья MediaWiki/Расширения

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

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

Отображение файлов SVG

Движок MediaWiki преобразует все изображения SVG (а также WMF, OpenEXR, DjVu и Graphviz) в формат PNG. Поэтому, для отображения файлов векторной графики в формате SVG необходимо доустановить утилиту конвертации графических файлов. На время выхода версии 1.27 поддерживаются следующие: ImageMagick, ImagickExt, sodipodi, inkscape, batik, rsvg, и imgserv.

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

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

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

Для редактирования таблицы интервики группой администраторов (sysop) нужно в конфигурацию добавить строчку:

$wgGroupPermissions['sysop']['interwiki'] = true;


  • На странице MediaWiki:Tagline можно изменить подпись "Материал из НазваниеВики". Подробнее в описании о настройке вида: Tagline
  • Можно использовать "волшебные слова" (переключатели и переменные), например, для настройки отображение содержания, или вставки даты в определённом формате, или отображения статистики.
  • Можно изменить некоторые умолчальные настройки профиля пользователя переменной $wgDefaultUserOptions. Например, чтобы не показывать ссылку "Правка" для секций для незарегистрированных пользователей, нужно добавить в LocalSettings.php
$wgDefaultUserOptions ['editsection'] = 0;

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

Для вывода ошибок на экран, в конец конфигурационного файла LocalSettings.php дописываем.

*Debug
$wgShowExceptionDetails = true;
  • Чтобы видеть в браузере вообще всё, что пишется в журнал ошибок (текст показывается поверх сайта), добавляем ещё ниже строки:
error_reporting( -1 );
ini_set( 'display_errors', 1 );


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

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

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

Форум:

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