Если вам нужна своя Вики, но не знаете с чего начать — добро пожаловать. В Linux я новичок, этим мой степ-бай-степ будет особенно полезен. Рассматривается:
Выбор дистрибутивов
- ОС – выбираю Debian. Не знаю почему. Конкретнее — debian-10.2.0-amd64-netinst.iso. Дистрибутив, конечно, всегда стоит брать последний из стабильных, ищите на debian.org.
- Mediawiki — потому что этот проект хорошо поддерживается по сей день. Я присматривался к DokuWiki, но последний дистрибутив датируется 2018м годом, а мануалы явно не рассчитаны на новичков.
- Apache, MariaDB и php73 – как рекомендуется Mediawiki.
- Linux и всё, что на нём работает, очень чувствительно к регистру.
- Никто не запрещает вам работать под root, но лучшая практика – подключаться к вашему серверу под неадминистративной записью и повышать, при необходимости, права командой su. Выполнив действия (например, завершив установку), откажитесь от повышенных прав командой exit.
- Если иное не указано явно, когда я перечисляю команды, предполагается, что мы подключены по ssh и уже выполнили команду su для повышения прав.
- В качестве клиента ssh использую PuTTY. И вам советую.
Оборудование
- вообще это не имеет никакого значения. Это может быть виртуалка, может быть железка.
Если у вас совсем мало ресурсов, ознакомьтесь с Installation requirements.
Установка ОС Debian
Целевая аудитория мана – новички в Linux, вроде меня, поэтому опишу установку, даже пошагово. В ней мало принципиально важных настроек, поэтому можете действовать по принципу «Далее»-«Далее», только не забудьте включить в компонентах сервер SSH, если планируете управлять этим сервером удалённо. Графический интерфейс может понадобиться, если все настройки планируете выполнять с этой машины, т.к. на этапе "настройка Mediawiki" понадобится браузер.
Под спойлерами много скриншотов.
Выбираю графическую установку.
Язык установки – English
Location – Russian Federation (other – Europe – Russian Federation)
Locales – оставляю United States
Keymap to use – American English
Сеть
В большинстве случаев, как и в моём, в сети есть DHCP-сервер, поэтому настраивать сеть вручную не придётся.
Hostname for this system.
На ваше усмотрение, я указываю wiki02. Совет: воздержитесь от того, чтобы называть узел просто wiki или mediawiki – это даст вам возможность править нужные конфиги методом замены текста. Может это никогда и не понадобится, но может.
Domain name
Укажите принятый в вашей сети DNS-суффикс.
Пользователи и пароли. Root password
User for non-administrative activities
- Full name of the user – снова на ваше усмотрение, я назвал aslan. Если вас коробит имя, написанное с прописной, пишите с заглавной, только не забывайте что регистр важен почти везде, где вы будете писать команды, скрипты, пути etc.
- Username для этого пользователя – я использовал тот же aslan
- Задаём пароль для созданного пользователя
Часы
Часовой пояс — Moscow
Разделы дисков
- Partitioning method – Guided – use entire disk
- Select disk to partition – у меня он один
- Partitioning scheme – All files in one partition, как и рекомендовано
- Finish partitioning and write changes to disk
- Write changes to disks – Yes
Configure the package manager
- Scan another CD or DVD – мой выбор No
- Debian archive mirror country – Russian Federation
- Debian archive mirror – deb.debian.org
HTTP proxy
Прокси-сервер у меня не используется, оставляю пустым
Configuring popularity-contest
Participate in the package usage survey – лично я в этом не заинтересован.
Software selection
Choose software to install: меня интересуют только сервер SSH и стандартные системные утилиты. Может и утилиты не нужны… но раз стандартные, пусть будут.
Install the GRUB
- Install the GRUB boot loader to the master boot record? – мне подходит, Yes.
- Device for boot loader installation – выбираю единственный в списке (не Enter device manually)
Finish the installation
- Убедитесь, что извлекли образ/диск из привода.
- Проверяем обновления системы
Подключаемся по SSH к нашему серверу с созданной ранее учётной не-root записью.
su #вводим пароль пользователя root apt-get update && apt-get upgrade
Создаю контрольную точку "Установлен Debian"
Шаг не обязательный, все, кто уверен в своих силах, или у кого много свободного времени, могут его пропустить как минимум до установки LAMP (PHP, MariaDB и Apache). Я осторожен, и сделаю снапшот уже на этом этапе.
Установка и настройка LAMP Stack
Предполагается, что мы всё ещё подключены по SSH и выполнили команду su. Выполняем описанную в руководстве команду для установки, не пропуская мимо ушей то, что mysql не поддерживается начиная с Debian “buster” (10.3):
apt-get install apache2 mariadb-server php php-mysql libapache2-mod-php php-xml php-mbstring #без sudo, добавляем параметр -y, чтобы пропустить запросы с подтверждениями.
Необязательные компоненты
apt-get install php-apcu php-intl imagemagick inkscape php-gd php-cli php-curl git -y
systemctl restart apache2
Настройка MySQL
mysql -u root -p
CREATE USER 'new_mysql_user'@'localhost' IDENTIFIED BY 'THISpasswordSHOULDbeCHANGED';
CREATE DATABASE my_wiki;
use my_wiki;
GRANT ALL ON my_wiki.* TO 'new_mysql_user'@'localhost';
quit;
#Не для всех это очевидно, но вместо THISpasswordSHOULDbeCHANGED в кавычках действительно нужно указать другой пароль.
Настройка PHP
Тоже не обязательный пункт, и в моей конфигурации менять пришлось не всё, но тем не менее:
- откройте в текстовом редакторе /etc/php/7.3/apache2/php.ini (например nano /etc/php/7.3/apache2/php.ini), не забудьте, что он должен запускаться из-под рута (выполните su, если это новый сеанс консоли)
- Увеличьте до необходимых значения
- upload_max_fileseze = 2M #я для себя поставил 50. Для документов и изображений должно быть достаточно, а делать больше – стрёмно, человеческий фактор никто не отменял, кто-то может по невнимательности загрузить файлы, для которых этот портал не предназначен.
- memory_limit = 128M #в руководстве рекомендуется минимум до 128, у меня так и было – не стал менять
- Сохраните изменения и выйдите из редактора
- Ctrl+O, Ctrl+X для nano
- :wq для vi
Контрольная точка «Установлен LAMP»
Без неё всё будет работать, и перед запуском в прод все контрольные точки (по крайней мере на Hyper-V) стоит удалить, но сейчас я настоятельно рекомендую этот снапшот сделать.
Установка MediaWiki
Первый вариант – скачать и распаковать.
Он описан в том же документе, и позволяет установить более актуальную версию:
cd /tmp/
wget https://releases.wikimedia.org/mediawiki/1.34/mediawiki-1.34.0.tar.gz
tar -xvzf /tmp/mediawiki-*.tar.gz
mkdir /var/lib/mediawiki
mv mediawiki-*/* /var/lib/mediawiki
Второй вариант – установка из пакета.
Я выбираю его. Так будет проще обновляться в будущем.
apt-get install mediawiki -y
Версия доступного для ручной установки пакета выше (1.34 vs 1.31), apt-get update не находит обновлений. Меня это не смущает, но вы можете выбрать первый вариант установки, на дальнейшую настройку это не повлияет.
Создание контрольной точки «Установлена Mediawiki»
Если в ходе дальнейшей настройки портала что-то пойдёт не так, эта точка нам может пригодиться. В руководстве говорится, что никакие изменения не сохранятся до загрузки в нужный каталог файла с конфигурацией (см. ниже), но я немного параноик, лучше пусть будет лишний снапшот.
Настройка MediaWiki
Перейдите в браузере по ссылке http://ваш сервер/mediawiki и следуйте появляющимся инструкциям. При возникновении ошибок при открытии самой страницы, обратитесь к руководству, у меня их не возникало. #напомню, мой узел называется wiki02.aslan.local, далее на скринах и ссылках будет фигурировать именно он. И да, советую использовать FQDN. Не могу сказать, что это обязательно, но советую.
Язык
Ваш язык: ru – русский. Язык, который будет использовать вики: ru — русский
Убедитесь, что прошла проверка внешней среды
Параметры БД
- Укажите заданные при настройке MySQL имя базы данных, пользователя и пароль. Префикс таблиц БД указывать не обязательно, но я рекомендую – если завтра на этом же сервере захочется развернуть другую Вики, например, это очень выручит.
- Для доступа к базе данных из веб-сервера я использую ту же учётную запись.
Название
- Название вики – всего лишь текст, который будет отображаться в заголовке.
- Пространство имён проекта: я использовал то же, что имя вики.
- Учётная запись администратора
- Ваше имя участника – я привык создавать одну «главную», безличную учётную запись, данные которой при необходимости смогу передать другим людям. Здесь поступлю так же, укажу portal02admin
- Пароль. КО рекомендует использовать здесь пароль, не совпадающий ни с одним из использованных выше.
- Адрес электронной почты я не буду указывать.
- Отложу тонкую настройку.
Настройки
- Я планирую хранить в Вики информацию разного уровня чувствительности, поэтому для себя выбираю закрытый профиль прав. В будущем рассчитываю использовать авторизацию Active Directory. Об этом, если звёзды сложатся, напишу отдельно. Выбирайте для себя подходящий — тут нет лучше/хуже/правильнее. Изменить профиль можно будет позднее, если сомневаетесь — тоже выбирайте закрытый.
- Включу WikiEditor, CodeEditor.
- Разрешу загрузку файлов.
- Все остальные настройки я оставлю пока по умолчанию.
Загрузка на сервер LocalSettings.php
Итак, на финальной странице установки MediaWiki нам предлагают скачать файл (обычно его загрузка происходит автоматически). В моём случае, т.к. это уже не первая инсталляция, его имя не стандартное – ‘LocalSettings (3).php’. Переименую его, указав вместо «3» адрес хоста и сегодняшнюю дату. Файл этот нужно загрузить на наш сервер, в указанную на странице директорию (там он уже должен называться именно LocalSettings.php, и не забудьте про регистр).
- Скачиваем на последней странице настройки файл конфигурации.
Загружаем файл на сервер с Вики. Я выполнял настройку с удалённой машины под Windows, поэтому для передачи файла на сервер использую pscp. Далее инструкции для пользователей Windows, пользователи других систем наверняка разберутся сами. Пользователи, выполнявшие настройку с того же хоста, где установлена Вики, просто перемещают файл в /etc/mediawiki/LocalSettings.php, mv в помощь.
Для вашего удобства, разместите файл конфигурации и файл pscp.exe в одной папке. Папка Downloads вполне для этого подойдёт. Открываем окно команд powershell из этой папки (Shift+ПКМ по свободному «месту» в папке, либо перейдите в неё, используя команды powershell, например cd)
Выполняем команду в powershell:
.\pscp.exe '.\LocalSettings (wiki02_20200225).php' aslan@wiki02.aslan.local:/home/aslan/LocalSettings.php #Разъясню её по частям: #.\pscp.exe – собственно исполняемый файл # '.\LocalSettings (wiki02_20200225).php' – файл, который копируем #aslan@wiki02.aslan.local – логин@адрес_нашего_сервера #:/home/aslan/ - каталог на сервере, куда сохраняем. Использую домашний каталог пользователя, т.к. при работе не под рутом другие не доступны для записи и возвращают ошибку Access Denied #LocalSettings.php – конечное имя файла в целевой папке
- Возвращаемся к терминалу нашего сервера и перемещаем файл конфигурации «куда надо»
mv /home/aslan/LocalSettings.php /etc/mediawiki/LocalSettings.php#Снова напоминаю про регистр!
Настройки применяются сразу.
Arech
Может кому пригодится — много лет назад так же решал проблему выбора вики-движка для хранения и упорядочивания собственных заметок. Остановился в конечном счете вовсе не на MediaWiki, а на DocuWiki по следующим причинам:
— хранение данных и картинок в прямо в файловой системе, в текстовых файлах в том виде, в котором они видны в редакторе. Это значит — легко бекапить, легко делать внешнее версионирование, легко править и сконвертить _в_случае_чего_.
— прямо «от производителя» есть вариант скачать бандл «DocuWiki on the stick» со своим веб-сервером, чтобы запускать вики хоть с флешки, хоть с диска при необходимости.
— написан на тривиальном PHP и достаточно много весьма полезных плагинов от комъюнити (не идеальных часто, но приемлемой глючности), которые очень заметно развивают и улучшают экспириенс.
Пользуюсь ей уже лет 5 по меньшей мере. Альтернатив с учетом перечисленных особенностей не знаю. Печалит только одно — проект давно не обновлялся, что наводит на грустные мысли.
ADD: если б надо было выбирать, — использовал бы ее и сегодня, бо альтернатив, удовлетворяющих требования, нет, а лет 10-15-20 еще точно работать все будет из коробки.
Arris
Посмотрите в сторону TiddlyWiki
Arech
Спасибо. Посмотрел, но по критерию безопасности хранения инфы не проходит. Да и первая же страница описания просто орет «ДЕЛАЙТЕ БЭКАПЫ!!!111». Совсем не вариант, если они сами не готовы обеспечивать целостность и безопасность…
Arris
Ну а что же вы хотите от wiki in single html file? :)
Весь «бэкэнд» там — JS.
Зато работает буквально везде, искапропки и так далее.
P.S. Как человек, 10+ лет хранивший заметки (и не только) в TW, не могу с вами согласиться, кроме того бэкапы не мешали никому и никогда.
Arech
Ну вот это как раз и правда очень просто. Я хочу, чтобы моя инфа хранилась и обрабатывалась максимально аккуратно и безопасно. А уж какие технологии для этого будут использоваться мне практически все равно.
И да, JS в правильных руках ничем не хуже других языков. Просто судя по всему автору хотелось скорее поиграть с новой технологией, чем сделать нормальный инструмент. Я не против, его право, но инфу свою доверить такой поделке не могу. Обратите внимание, как там описываются юзкейсы потери инфы — например, глюканул браузер и вся база похерилась — ну как так то? Это совершенно неприемлемо… Не реально после каждого чиха делать svn commit и т.п…
Arris
Вы некомпетентны.
Автор играет с «новой технологией» с 2004 года.
И без него «играют с новыми технологиями»:
github.com/TiddlyWiki
github.com/Jermolene/TiddlyWiki5
github.com/Jermolene
Совершенно некомпетентные (саркаааааазм!) разработчики.
Цитату, будьте любезны.
Если вы такой параноик — не забудьте сделать ежесекундный бэкап вашей докувики в 3 облака (а вдруг браузер глюканёт и база похерится?).
Описанная вами «невозможность делать svn commit после каждого чиха» решается хуком git commit на изменение даты файла.
stantum
Буквально на выходных выбирал себе вики для небольшого проекта. С удивлением остановился на Wiki.js — сыроватом, но бодро развивающемся проекте.
Первые ощущения за 4 дня — местами глючит, но выглядит хорошо. Критических багов пока не обнаружено.
Arech
Посмотрел, спасибо. Что базируется на markdown, это хорошо (markdown большая заноза с DocuWiki, где он ненативен, а комъюнити-плагин стар и глюковат)
Но хранение инфы в СУБД — сразу нет. Пусть даже в грамотной СУБД, вроде PostgreSQL. Вытаскивать потом и конвертировать в случае чего — возни слишком много ненужной. В DocuWiki файлы можно хоть через шару открыть и смотреть при необходимости напрямую, это _очень_ весомый плюс в некоторых ситуациях.