Сервис MediaWiki: различия между версиями
Владимир (обсуждение | вклад) Новая страница: «Да дело дошло именно до установки собственного сервиса Wiki. Как это работает? Некий серви...» |
Владимир (обсуждение | вклад) |
||
| Строка 315: | Строка 315: | ||
Начинается все с установки '''Parsoid''', как ни странно. Но чтобы он работал нужен еще и '''VisualEditor'''. про него есть упоминания, но настолько не очевидно, что можно и не понять что это обязательно. | Начинается все с установки '''Parsoid''', как ни странно. Но чтобы он работал нужен еще и '''VisualEditor'''. про него есть упоминания, но настолько не очевидно, что можно и не понять что это обязательно. | ||
<br /> | <br /> | ||
= Устарело!!! = | |||
=== Parsoid === | === Parsoid === | ||
Версия от 15:32, 28 августа 2021
Да дело дошло именно до установки собственного сервиса Wiki.
Как это работает? Некий сервис MediaWiki предоставляет веб сервис, с неким функционалом. Веб сервис базируется на железе пользователя. Сервер пользователя хранит все данные, выполняет запросы, к страницам и является веб сервером. Данный веб сервис позволит сделать все то, что делает Wiki. В ней я планирую документировать свои действия связанные со сложными системами, начиная установкой подобных сервисов, изучением Linux, кодированием видео, проектированием, и так далее. Возможно в дальнейшем расширить функционал до нескольких пользователей, с возможностью ими оформлять собственные сложные и интересные процессы познания. =)
Установка данного веб сервиса очень проста. Переходим на официальную страничку установки MediaWiki для Ubunta/Debian. Очень много, но мало толку. Поэтому будет так.
Настройка Proxmox для MediaWiki
Загрузка образа Ubuntu
Получается мы устанавливаем ubuntu server как виртуальную в среде Proxmox.
На данный момент это версия 18.04.4 LTS.
На этот раз ни на какие накопители ничего записывать не нужно.
Требуется загрузить образ в пространство Proxmox, в хранилище. В нашем случае подойдет local.
Выбираем local в узле pve, переходим в “Содержимое”.
Нажимаем “Загрузить” и выбираем наш образ.
Загружаем, ожидаем.
Создание VM
Нажимаем: создать VM:
В разделе Общее:
Узел: pve
VM ID: 106
Имя: mediawiki
В разделе ОС:
Хранилище: local
ISO образ: То, что загрузили с официального сайта Ubuntu.
В разделе Жесткий диск:
Шина: VirtIO Block
Хранилище: local-lvm
Размер: 10
Кэш: Write through
В разделе Процессор:
Ядра: 2
В разделе Память:
Память: 512
Готово.
Установка OS
Описываю только то, на что стоит обратить внимания, так как установить ос для Nginx можно просто по умолчанию.
Тут все также, как и в nexcloud.
Но при вопросе в разделе Filesystem setup выбираем автоматическую, и наш единственный раздел. Для того чтобы, установщик на своё усмотрение разбил диск.
Тут очень мало важны размеры виртуальной оперативной памяти, так как машина выполняет очень узкую задачу.
Начинается установка. При этом она идет в фоне.
В это время заполняем данные пользователя и машины.
Your name: vova
your server’s name: mediawiki
Pick a username: vova
Choose password: пароль_пользователя
Confirm your password: пароль_пользователя
Готово
На вопрос установить ли ssh соглашаемся, поставив крестик пробелом.
Готово
Ничего не выбираем и говорим Готово. Ждем окончания установки.
По окончании Reboot
enter
ОС перезагрузится, но уже в установленном виде. С ней бы выполнить стандартный набор операций.
Обновляем репозитории:
apt-get update
Выполняем обновление пакетов из репозиториев
apt-get upgrade –y
Устанавливаем файловый менеджер mc
ОС готова переходим к установке MediaWiki.
Установка MediaWiki
Установка LAMP
LAMP - включает в себя Linux, Apache, MySQL и PHP
sudo apt-get install apache2 mariadb-server php php-mysql libapache2-mod-php php-xml php-mbstring -y
Да это очень быстро и в одну строку. Но потом настраивать.
MediaWiki
Установкой в данном случае является перемещение файлов веб сервиса в нужную папку. Важно то в какую. Так как я неравнодушен к кратким и красивым URL, моей целью было убрать из строки /mediawiki после доменного имени. Но про это позднее. А пока установка происходит не по интродукциям, а с целю получить вышеуказанное. Суть в том, что сайты запускаются в определенном месте linux. К ним обращается Apache2 на основе конфигурационных файлов. Располагается это все по пути /var/www/html и название "сайта". Это нужно для того, чтобы была возможность установить больше одного на один сервер. Но в нашем случае это не требуется. Сайт будет один. поэтому распаковка веб сервиса будет напрямую в директорию /var/www/html.
Получить архив веб сервиса можно на официальном сайте MediaWiki в разделе загрузок. Предполагается что загрузка выполняется в директорию /home/имя пользователя.
wget https://releases.wikimedia.org/mediawiki/1.34/mediawiki-1.34.1.tar.gz
На момент написания это версия 1.34.1.
Находясь все в той же директории выполняем распаковку архива:
tar -xvzf /tmp/mediawiki-1.34.1.tar.gz
Имя файла будет разным в зависимости от версии.
Теперь переместим распакованные файлы. По стандартной инструкции перемещали бы в /var/www/html/mediawiki.
cp -r mediawiki-1.34.1 /var/www/html/
Сделаем папку /var/www/html/ принадлежащей группе и пользователю www-data, и дадим права на запись маской 777.
chown -R www-data:www-data /var/www/html chmod -R 777 /var/www/html
Настройка
Любой софт нужно настраивать. Это большая часть работы.
Конфигурация MariaDB
Первичная настройка базы данных:
mysql_secure_installation
Придумываем вводим пароль для входа в базу, отвечаем на все вопросы Y. По у молчанию от пользователя root.
Enter current password for root (enter for none): Set root password? [Y/n]: N Remove anonymous users? [Y/n]: Y Disallow root login remotely? [Y/n]: Y Remove test database and access to it? [Y/n]: Y Reload privilege tables now? [Y/n]: Y
Переходим к созданию базы и пользователя:
mysql -u root -p
Эта команда создаст базу с названием "mediadb". Можно указать любое имя.
CREATE DATABASE mediadb;
Создаем пользователя с именем "media" и даём ему пароль. Пароль лучше делать сложный.
CREATE USER 'media'@'localhost' IDENTIFIED BY 'пароль пользователя media';
Даём привилегии выше созданному пользователю:
GRANT ALL ON mediadb.* TO 'media'@'localhost' IDENTIFIED BY 'пароль пользователя media' WITH GRANT OPTION;
Теперь отчищаем привилегии и выходим из настройки:
FLUSH PRIVILEGES; EXIT;
Настройка Apache2
Переходим к настройке Apache2, по стандартной схеме мы бы создали конфигурационный файл в папке /etc/apache2/sites-enabled с названием нашего сервиса. Но так как у нас mediaWiki в корне var/html/ требуется настраивать корневой файл конфигурации 000-default.conf.
nano /etc/apache2/sites-enabled/000-default.conf
Теперь добавляем в документ нужные элементы. На примере не указаны Коментарии. Добавленные строки выделены утолщенным шрифтом.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<Directory /var/www/html/>
Options +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog /var/log/apache2/media-error_log
CustomLog /var/log/apache2/media-access_log common
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Настройка PHP
Отредактируем файл конфигурации php.ini.
nano /etc/php/7.2/apache2/php.ini
Укажем размеры загружаемого файла в 100 мегабайт.
upload_max_filesize = 100M
Укажем ограничение по оперативной памяти в 256 мегабайт.
memory_limit = 256M
Так же проверим включена ли загрузка файлов.
file_uploads = On
Сохраняем документ, и выполняем перезапуск службы apache2:
systemctl reload apache2
Запуск MediaWiki
После всех выполненных операций можно приступить к проверке того, что все хорошо.
Первичная настройка
Вводим в строке веб поиска адрес нашей машины в моем случае это 192.168.1.122. Это локальный адрес.
http://192.168.1.122
Если все сделано правильно то откроется страница первого запуска. Нужно будет выполнить несколько настроек:

Нажимаем "начать настройку" Далее нам дают выбрать язык, указываем естественно наш родной. Соглашаемся со всем указанным. Попадаем в окно настройки базы SQL.
Имя базы указываем то, что указывали ранее при настройке MariaDB.
mediadb
Имя пользователя базы указываем:
media
Пароль берем все из той же части настройки. Далее.
Даём имя нашей wiki, в моем случае это:
wolfram
Придумаем имя пользователя и пароль.
Далее оставляем все по умолчанию. После чего появится окно с сообщением об окончании настройки. Данные для настроек находятся в сгенерированном файле LocalSettings.php. Который потребуется поместить в корневой каталог веб сервиса, в нашем случае /var/www/html. Нажимаем на ссылку, начинается скачивание. загрузить файл на сервер можно множеством способов, например подключиться через winscp.
Конфигурация LocalSettings.php
После помещения файла в папку /var/www/html, вносим в него первичные правки:
nano /var/www/html/LocalSettings.php
Меняем локальный адрес на доменное имя. Так как могут возникнуть проблемы с доступом из вне.
$wgServer = "https://wiki.mywolfram.ru";
Разрешим загрузку файлов, это нужно для размещения картинок на страницах.
$wgEnableUploads = true;
Отключить редактирование для не зарегистрированных пользователей.
$wgGroupPermissions['*']['edit'] = false;
На моей wiki вести записи планирую только "Я", поэтому я даю запрет на регистрацию, оставляя возможность добавлять пользователей вручную.
$wgGroupPermissions['*']['createaccount'] = false;
Запрещаю редактирование страниц всем кроме админов (sysop):
$wgGroupPermissions['user']['edit'] = false; $wgGroupPermissions['sysop']['edit'] = true;
Добавляю путь для иконки сайта. По умолчанию её нет. Файл favicon.ico требуется разместить на сервере в корне сайта /var/www/html.
$wgFavicon = "$wgScriptPath/favicon.ico";
Та же логотип wiki так же можно установить свой, для этого нужно разместить файл в формате png с разрешение 135x135 пикселей, с именем wiki.png, путь /var/www/html/resources/assets/.
С первичной настройкой mediawiki можно закончить. Сайт работает, и выполняет базовый функционал.
Красивые адреса MediaWiki
Что за красивые адреса? В адресной строке браузера отображен путь к страницам. По умолчанию после установки wiki по официально инструкции, чтобы попасть на сайт требуется ввести домен.ru/mediawiki/. Если ввести просто домен то мы попадаем на страницу Apache. Хотелось бы попадать на сайт введя лишь доменное имя. Что мы и исправили установив в нашу mediawiki в папку var/www/html в разделе по установке MediaWiki.
Теперь наш адрес выглядит домен.ru/index.php/Заглавная_страница.
Уже лучше но имеется непонятное index.php, это последствие того что наши страница строятся на основе PHP. Этот файл является конфигом страницы. Он есть всегда. Но его можно скрыть в адресной строке, пользователю эта информация не нужна.
Чтобы это сделать нужно:
Настроить Apache2
Для этого редактируем файл конфигурации 000-default.conf.
nano /etc/apache2/sites-enabled/000-default.conf
В нем вписываем следующее:
...
<Directory /var/www/html/>
Options +FollowSymLinks
AllowOverride All
RewriteEngine On
RewriteRule ^/(.*):(.*) /index.php/$1:$2
</Directory>
...
Настройка LocalSettings.php
Чтобы убрать index.php нужно внести изменения в 2 переменных $wgArticlePath и $wgActionPaths. Первая нужна для скрытия index.php на обычных страницах. Но на страницах редактирования настроек и так далее все равно останется этот злополучный index.php. Для этого и нужна вторая переменная.
Открываем файл конфигурации LocalSettings.php
nano /var/www/html/LocalSettings.php
и в носим в конце следующее
#Скрываем index.php
$wgArticlePath = "/$1";
$wgUsePathInfo = true;
$wgActionPaths['edit'] = "$wgScriptPath/edit/$1";
$actions = array( 'edit', 'watch', 'unwatch', 'delete','revert', 'rollback', 'protect', 'unprotect', 'markpatrolled', 'render', 'submit', 'history', 'purge', 'info' );
foreach ( $actions as $action ) {
$wgActionPaths[$action] = "/$1/$action";
}
$wgActionPaths['view'] = "/$1";
$wgArticlePath = $wgActionPaths['view'];
Данные параметры позволят нам скрыть index.php на 90 процентах страниц.
При редактировании и подобных операция будет появляться домен/edit/название страницы.
Настройка .htaccess
Пока не пойму что это, но это не мешает внести в него все что нужно. Это что то очень важно и без него работать не будет.
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) /index.php/$1 [L,QSA]
RewriteRule ^/([a-z]*)/(.*)$ %{DOCUMENT_ROOT}/index.php [L,QSA]
На этом реврайты можно закончить. Если найдется еще информация о, том как сделать еще лучше, обязательно дополню.
После всех манипуляций перезапускаем службу apache:
systemctl reload apache2
Установка расширений
Для MediaWiki существует множество расширений. Все они что то добавляют.
Удобное редактирование страниц
По умолчанию в MediaWiki редактирование не совсем приветливое, выделение строк и подобные элементы выполняются в ручную. И конечный результат можно увидеть на предпросмотре. Для решения подобной сложности существует расширение Parsoid. Оно внедряется в код MediaWiki и работает как одно целое. На момент создания страницы есть информация о слиянии данного расширения с MediaWiki, сроком указана дата 2020 год. Пока что нет.
Установка абсолютно не интуитивно понятная, и совершенно не последовательная. Хуже того нет никаких мануалов или статей по установке этой связки, кроме самой MediaWiki.
Начинается все с установки Parsoid, как ни странно. Но чтобы он работал нужен еще и VisualEditor. про него есть упоминания, но настолько не очевидно, что можно и не понять что это обязательно.
Устарело!!!
Parsoid
Установка
Устанавливаем какой то там dirmngr, от root.
apt install dirmngr apt-key advanced --keyserver keys.gnupg.net --recv-keys AF380A3036A03444
Добавляем в репозитории сервер.
apt-add-repository "deb https://releases.wikimedia.org/debian jessie-mediawiki main"
Выполняем установку.
apt install apt-transport-https apt update && sudo apt install parsoid
Готово Parsoid есть.
Настройка
Переходим к настройке кофига config.yaml, располагается в /etc/mediawiki/parsoid/.
nano /etc/mediawiki/parsoid/config.yaml
В нём нужно
исправить строку uri: 'http:// на
uri: 'http://localhost/api.php'
Так как у нас находится mediawiki в корне html. Больше ничего менять не нужно.
Возможно нужно поменять порт для подключения serverPort, на 8142. Но у меня работает и без этого. В случае если не запускается Parsoid нужно раскоментировать строку и вписать:
serverPort: 8142
Переходим к внесению изменений в LocalSettings.php.
nano /var/www/html/LocalSettings.php
Вписываем в конце следующее в файл:
#Настройка Parsoid
$wgVirtualRestConfig['modules']['parsoid'] = array(
'url' => 'http://localhost:8142',
'domain' => 'localhost',
'prefix' => 'localhost'
);
#Запрет доступа к редактированию кому попало в Pardoid
$local_ip = '127.0.0.1';
if ( $_SERVER['REMOTE_ADDR'] == $local_ip ) {
$wgGroupPermissions['*']['read'] = true;
$wgGroupPermissions['*']['edit'] = true;
}else{
$wgGroupPermissions['*']['read'] = true;
$wgWhitelistRead = array ("Special:Userlogin", "MediaWiki:Common.css", "MediaWiki:Common.js", "MediaWiki:Monobook.css", "MediaWiki:Monobook.js", "-");
$wgGroupPermissions['*']['edit'] = false;
}
Больше ничего, дальнейшая настройка происходит в VisualEditor.
VisualEditor
Установка
Переходим по на страницу загрузки, выбираем нашу версию копируем ссылку, и пишем.
wget наша_ссылка
Пример:
wget https://www.mediawiki.org/wiki/Special:ExtensionDistributor/VisualEditor
После загрузке нужно распаковать архив.
tar -xzf то_что_скачалось.tar.gz -C /var/www/html/extensions
Готово.
Настройка
Конфигурируем файл LocalSettings.php.
nano /var/www/html/LocalSettings.php
Вписываем в конце.
#Визуальный редактор
wfLoadExtension( 'VisualEditor' );
$wgDefaultUserOptions['visualeditor-enable'] = 1;
После всех манипуляций перезагружаем parsoid и apache2.
systemctl restart parsoid systemctl reload apache2
Заходим на любую станицу, нажимаем редактировать, должна пройти загрузка VisualEditor. Готово.
Проблемы
Если будут возникать проблемы, буду описывать их решения.
MultimediaViewer
Установка
Переходим по на страницу загрузки MultimediaViewer, выбираем нашу версию копируем ссылку, и пишем.
wget наша_ссылка
Пример:
wget https://extdist.wmflabs.org/dist/extensions/MultimediaViewer-REL1_34-30ea768.tar.gz
После загрузке нужно распаковать архив.
tar -xzf то_что_скачалось.tar.gz -C /var/www/html/extensions
Готово.
Настройка
Конфигурируем файл LocalSettings.php.
nano /var/www/html/LocalSettings.php
Вписываем в конце.
#Медиа-просмотрщик
wfLoadExtension( 'MultimediaViewer' );
Готово
Переходим на страницу своей wiki
домен/Special:Version
чтобы убедится что расширение добавлено. Теперь просмотр медиафайлов более удобен.
MassEditRegex
поиск и замена текста в статьях