BookStack — это бесплатная вики-программа с открытым исходным кодом, написанная на PHP с использованием веб-фреймворка Laravel. BookStack представляет собой простую и самодостаточную платформу для хранения и организации информации.
В этом руководстве мы шаг за шагом проведем вас через процесс установки BookStack на сервер Debian 12, чтобы у вас появилась собственная wiki-платформа для размещения информации.
Предварительные условия
Прежде чем приступить к работе, убедитесь, что у вас есть следующее:
- Сервер Debian 12.
- Пользователь не root с правами администратора sudo.
- Доменное имя, указывающее на IP-адрес сервера.
Установка зависимостей
BookStack — это вики-платформа, написанная на PHP и MySQL/MariaDB. На данный момент она полностью поддерживается в версии PHP 8.2. На этом этапе вы установите зависимости для BookStack, которые включают пакеты LAMP Stack (Apache2, MariaDB, PHP), Git и Composer.
Обновите индекс пакетов Debian с помощью следующей команды.
sudo apt update
После обновления репозитория установите зависимости пакетов для BookStack, выполнив следующую команду apt install. С помощью этой команды вы установите пакет LAMP Stack, Composer и Git.
sudo apt install apache2 mariadb-server composer curl php php-xml libapache2-mod-php php-fpm php-curl php-mbstring php-ldap php-tidy php-zip php-gd php-mysql git
Введите y для продолжения установки.
После установки зависимостей проверьте каждую зависимость, выполнив следующую команду.
Проверьте службу apache2 с помощью приведенной ниже команды systemctl, чтобы убедиться, что служба запущена и включена.
sudo systemctl is-enabled apache2
sudo systemctl status apache2
Следующий вывод подтвердит, что служба apache2 запущена и включена.
Теперь проверьте работу службы mariadb с помощью следующей команды.
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb
В результате должно быть показано, что служба mariadb запущена и включена в вашей системе.
Далее проверьте версию PHP и список включенных расширений с помощью следующей команды.
php -v
php -m
Судя по приведенному ниже результату, PHP 8.2 установлен в вашей системе.
Наконец, проверьте Composer с помощью следующей команды. В результате будет найден бинарный файл Composer и проверена его версия.
which composer
sudo -u www-data composer -v
Вы должны увидеть, что Composer 2.5.5 установлен по адресу /usr/bin/composer.
Настройка PHP
После установки зависимостей следующим шагом будет настройка установки PHP путем внесения изменений в файл php.ini на машине Debian.
Откройте стандартную конфигурацию PHP /etc/php/8.2/apache2/php.ini с помощью следующей команды редактора nano.
sudo nano /etc/php/8.2/apache2/php.ini
Измените некоторые параметры по умолчанию с помощью следующей конфигурации. Обязательно настройте параметры date.timezone и memory_limit в соответствии с окружением вашего сервера.
date.timezone = Europe/Amsterdam
memory_limit = 512M
Сохраните файл и по завершении работы выйдите из редактора.
Теперь выполните следующую команду systemctl для перезапуска службы apache2 и применения сделанных изменений.
sudo systemctl restart apache2
Настройка сервера MariaDB
Теперь, когда PHP настроен, следующим шагом будет настройка установки сервера MariaDB с помощью утилиты mariadb-secure-installation, которая позволяет настроить базовую безопасность для MariaDB. Также будет создана новая база данных и пользователь, который будет использоваться в BookStack.
Для защиты установки MariaDB выполните следующую команду mariadb-secure-installlation.
sudo mariadb-secure-installation
В процессе работы вам будет задан вопрос о некоторых конфигурациях. Введите Y, чтобы согласиться и применить новые изменения, или n для No, чтобы отклонить конфигурацию.
- Для установки сервера MariaDB по умолчанию без пароля корневого пользователя нажмите ENTER, когда вас спросят о пароле.
- Локальная аутентификация для корневых пользователей MariaDB по умолчанию защищена, введите ‘n’, когда вас попросят изменить метод аутентификации на ‘unix_socket’.
- Введите ‘Y’ для создания нового пароля пользователя MariaDB root. Затем введите надежный пароль для корневого пользователя MariaDB и повторите процедуру.
- На вопрос об отключении удаленной аутентификации для корневого пользователя MariaDB введите «Y», чтобы согласиться.
- По умолчанию сервер MariaDB устанавливается с базой данных ‘test’ и позволяет анонимному пользователю получить к ней доступ. Введите «Y» для обоих параметров, чтобы удалить базу данных по умолчанию ‘test’ и убрать привилегии анонимного пользователя.
- Наконец, введите ‘Y’ для подтверждения прав на перезагрузку таблиц.
После настройки MariaDB с помощью команды mariadb client необходимо создать новую базу данных MariaDB и пользователя, которые будут использоваться BookStack.
Войдите на сервер MariaDB, используя следующую команду mariadb. При появлении запроса введите пароль пользователя MariaDB root.
sudo mariadb -u root -p
Теперь выполните следующие запросы для создания новой базы данных и пользователя BookStack. В данном примере будет создана новая база данных и пользователь bookstack с паролем p4ssword.
CREATE DATABASE bookstack;
CREATE USER bookstack@localhost IDENTIFIED BY 'p4ssword';
GRANT ALL ON bookstack.* TO bookstack@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;
Далее выполните следующий запрос для проверки привилегий пользователя bookstack.
SHOW GRANTS FOR bookstack@localhost;
Вы должны увидеть, что пользователю bookstack разрешен доступ и управление базой данных bookstack, которая будет использоваться BookStack.
Введите quit для выхода из сервера MariaDB.
Загрузка Bookstack
Теперь, когда вы настроили сервер PHP и MariaDB, вы готовы к установке BookStack. В этом разделе мы установим BookStack с помощью Git и Composer.
Сначала создайте новые каталоги /var/www/.config и /var/www/.cache, которые будут использоваться Composer для хранения кэша зависимостей и конфигурации. Затем необходимо также изменить права собственности на оба каталога на пользователя www-data.
mkdir -p /var/www/{.config,.cache}
sudo chown -R www-data /var/www/{.config,.cache}
Перейдите в каталог /var/www и загрузите исходный код BookStack в каталог bookstack. Ваш каталог установки BookStack должен иметь вид /var/www/bookstack.
cd /var/www
git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch bookstack
Теперь измените право собственности на каталог /var/www/bookstack на пользователя www-data и перейдите в него.
sudo chown -R www-data:www-data /var/www/bookstack
cd /var/www/bookstack
Далее скопируйте файл .env.example в .env и откройте новый файл с помощью следующей команды редактора nano.
sudo -u www-data cp .env.example .env
sudo -u www-data nano .env
Введите имя вашего домена в параметр APP_URL и введите данные о вашей базе данных MariaDB в параметры DB_ ниже.
# The application URL
APP_URL=http://bookstack.hwdomain.io
# Database values also need to be modified
# If you follow previous command, you only need to add your DB_PASSWORD
DB_DATABASE=bookstack
DB_USERNAME=bookstack
DB_PASSWORD=p4ssword
После завершения работы сохраните и закройте файл.
Далее выполните следующую команду для установки зависимостей PHP через Composer.
sudo -u www-data composer install --no-dev --no-plugins
Во время установки на экран будет выведено следующее сообщение.
После установки зависимостей PHP выполните следующую команду для генерации секретного ключа и миграции базы данных.
sudo -u www-data php artisan key:generate --no-interaction --force
sudo -u www-data php artisan migrate --no-interaction --force
Секретный ключ в файле .env будет обновлен, и ниже приведен процесс миграции базы данных.
После завершения работы выполните следующую команду, чтобы изменить права собственности на некоторые каталоги на пользователя www-data и убедиться, что эти каталоги доступны для записи.
sudo chown www-data:www-data -R bootstrap/cache public/uploads storage
sudo chmod u+rw bootstrap/cache public/uploads storage
Наконец, выполните приведенную ниже команду, чтобы изменить разрешение файла .env на 640. В результате только пользователь www-data сможет вносить изменения в этот файл.
sudo chmod -R 640 /var/www/bookstack/.env
Настройка виртуального хоста Apache2
В следующем разделе будет создана новая конфигурация виртуального хоста Apache2, который будет использоваться для работы BookStack. Для этого необходимо подготовить доменное имя и убедиться, что оно указывает на IP-адрес сервера.
Перед созданием конфигурации виртуального хоста выполните следующую команду для включения модуля перезаписи на Apache2.
sudo a2enmod rewrite
Теперь создайте новую конфигурацию виртуального хоста /etc/apache2/sites-available/bookstack.conf с помощью следующей команды редактора nano.
sudo nano /etc/apache2/sites-available/bookstack.conf
Вставьте следующую конфигурацию и не забудьте изменить имя домена в опции ServerName. В следующем примере для установки BookStack будет использоваться домен bookstack.hwdomain.io.
<VirtualHost *:80>
ServerName bookstack.hwdomain.io
ServerAdmin webmaster@localhost
DocumentRoot /var/www/bookstack/public/
<Directory /var/www/bookstack/public/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/bookstack-error.log
CustomLog ${APACHE_LOG_DIR}/bookstack-access.log combined
</VirtualHost>
После завершения работы сохраните и закройте файл.
Далее выполните следующую команду для активации файла виртуального хоста bookstack.conf и проверки синтаксиса Apache2.
sudo a2ensite bookstack.conf
sudo apachectl configtest
Если вы используете правильный синтаксис, то в терминал будет выведен вывод «Syntax OK».
Наконец, выполните приведенную ниже команду systemctl для перезапуска службы aapche2 и применения сделанных изменений.
sudo systemctl restart apache2
Защита Bookstack с помощью SSL/TLS-сертификатов
В этом руководстве мы обеспечим безопасность Bookstack с помощью SSL/TLS-сертификатов, которые могут быть сгенерированы в Letsencrypt с помощью инструмента Certbot.
Установите Certbot и плагин Certbot Apache с помощью команды apt install, приведенной ниже. Введите y для подтверждения и продолжения установки.
sudo apt install certbot python3-certbot-apache
Теперь выполните приведенную ниже команду certbot для генерации SSL/TLS-сертификатов и обеспечения безопасности установки BookStack. Обязательно измените доменное имя и адрес электронной почты в следующей команде.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d bookstack.hwdomain.io
После завершения процесса ваши SSL/TLS-сертификаты будут доступны в каталоге /etc/letsencrypt/live/bookstack.hwdomain.io. Кроме того, в вашей установке BookStack будет автоматически настроен HTTPS, который конфигурируется с помощью плагина Certbot Apache.
Доступ к Bookstack
На этом этапе все настроено, и установка BookStack завершена. Теперь вы можете получить доступ к своей установке BookStack.
Запустите веб-браузер и перейдите на доменное имя вашей установки BookStack, например https://bookstack.hwdomain.io/, после чего вы будете перенаправлены на страницу входа в систему BookStack.
Введите указанный по умолчанию адрес электронной почты [email protected] и пароль password, затем нажмите кнопку Login.
В случае успеха вы увидите приборную панель BookStack, как показано ниже:
Заключение
В заключение можно сказать, что вы успешно установили BookStack на сервер Debian 12, выполнив пошаговую инструкцию. Вы установили BookStack через Git, Composer и с помощью пакетов LAMP Stack (Apache2, MariaDB и PHP). Вы также защитили BookStack сертификатами SSL/TLS от Letsencrypt. Теперь можно заполнять информацию и создавать собственную документацию.