Задумался я над разворачиванием у себя системы для создания, хранения и совместной работы с документацией. И выбор пал на BookStack.
Есть опыт разворачивания двух систем:
- Atlassian Confluence — огромное количество настроек, потребляет большое количество системных ресурсов. Работает медленно, если не «залить» системными ресурсами.
- Gitea — система хранения кода, однако имеет и встроенную Wiki. Каждый репозиторий имеет свою отдельную Wiki. Хочешь вести документацию без привязки к разрабатываемому коду? Всё равно надо создать репозиторий. Wiki здесь проста и не настраивается, группировки страниц нет. Для простых задач подходит, но не для меня.
Изучил что есть в этой сфере и выбрал для себя BookStack. Система простая, удобная и работает очень шустро. Но с установкой придётся повозиться, если заходите руками каждый пакет устанавливать и настраивать.
Установка
В документации BookStack есть ссылки на статьи по установке на различные системы (https://www.bookstackapp.com/docs/). В одной из статей я нашёл скрипт для установки на RHEL и CentOS 8. Слегка поправив скрип мне удалось установить BookStack на CentOS 9. Теперь опишем установку с помощью готового скрипта.
Скрипт предназначен для установки на чистую систему. Если у вас на сервере установлена MariaDB, PHP, Nginx, то вам, скорее всего, необходимо будет править скрипт. Пробуйте и экспериментируйте.
Скачайте скрипт для автоматической установки.
Если ходите установить на CentOS 8, то измените в скрипте строку 17 заменив remi-release-9.rpm на remi-release-8.rpm. Далее следуйте инструкции из статьи.
Определим какая версия PHP будет установлена после запуска скрипта:
yum info php
Видим версию PHP:
Пропишем данную версию в скрипте в строках 50, 63, 66. В моём конкретном случае я изменю на 8.0 (не нужно указывать в версии третье число после второй точки):
строка 50: dnf -y module enable php:remi-8.0
строка 63: dnf --enablerepo=remi install -y php80-php-tidy php80-php-json php80-php-pecl-zip
строка 66: ln -s /opt/remi/php80/root/usr/lib64/php/modules/tidy.so /usr/lib64/php/modules/tidy.so
По умолчанию в скрипте прописана версия 7.4. На момент установки в репозитории CentOS, скорее всего, устанавливаемая версия PHP уже отличается от прописанной в скрипте.
Поместите скачанный файл bookstack-install.sh в каталог /tmp. Сделайте файл исполняемым:
sudo chmod +x /tmp/bookstack-install.sh
Запустите скрипт:
sudo /tmp/bookstack-install.sh
Дожидаемся полной установки. После установки скрипт выведет в терминал логин и пароль от базы данных MariaDB, а также логин и пароль для входа в систему BookStack (запомните/запишите их). Логин и пароль от базы данных MariaDB также будут в файле /tmp/DB_ROOT.delete.
Удалите файлы:
sudo rm -f /tmp/DB_ROOT.delete
sudo rm -f /tmp/bookstack-install.sh
Перейдите по адресу http://{IP-BookStack}. Логин и пароль администратора стандартные admin@admin.com:password
Приятной работы с BookStack.
Смена порта
После установки BookStack будет открываться на 80 порту. Если вы хотите изменить порт, то вам необходимо указать порт в файле /var/www/BookStack/.env в строке:
APP_URL=http://192.168.1.50:8090
Изменить порт в файле /etc/nginx/conf.d/bookstack.conf:
server {
listen 8090;
Перезагрузить nginx:
systemctl restart nginx.service
Откройте требуемый порт в системе:
firewall-cmd --zone=public --add-port=8090/tcp --permanent
firewall-cmd --reload
Если у вас уже ведётся документация в системе, то надо перегенерировать ссылки в базе данных на существующие документы, для этого выполнить команды:
cd /var/www/BookStack/
php artisan bookstack:update-url http://192.168.1.50 http://192.168.1.50:8090
Теперь переходите по адресу http://{IP-BookStack}:{ПОРТ}. Пример: http://192.168.1.50:8090
P.S. На момент написания статьи устанавливался BookStack 23.01.1 Если вы данную статью читаете через десятилетия и нужна именно эта версия, то скачайте BookStack 23.01.1. В остальных случаях используйте самую последнюю версию, которую скрипт скачает автоматически.