Установка · 10 min read · Oct 21, 2025
Как установить BookStack с Nginx на Ubuntu 20.04

BookStack — это саморазмещаемая, с открытым исходным кодом, простая в использовании платформа для организации и хранения информации. Она может использоваться для различных целей, таких как вики, веб-сайт документации и приложение для заметок. Она построена с использованием фреймворка Laravel PHP и использует MySQL для хранения данных. Для редактирования она предоставляет вам выбор между использованием WYSIWYG или Markdown редактора. Она поддерживает многофакторную аутентификацию и темный режим, а также является многоязычной.
Этот учебник научит вас, как установить BookStack на сервере на базе Ubuntu 20.04.
Предварительные условия
- Сервер с установленным Ubuntu 20.04
- Полное доменное имя (FQDN), указывающее на сервер.
- Пользователь, не являющийся root, с правами sudo.
- Версия PHP 7.3 или выше.
- MySQL>=5.6 и MariaDB>=10.0
- Git и Composer.
Шаг 1 - Настройка брандмауэра
Первый шаг — настроить брандмауэр. Ubuntu по умолчанию поставляется с ufw (Uncomplicated Firewall).
Проверьте, работает ли брандмауэр.
$ sudo ufw status
Вы должны получить следующий вывод.
Status: inactive
Разрешите порт SSH, чтобы брандмауэр не прервал текущее соединение при его включении.
$ sudo ufw allow OpenSSH
Также разрешите порты HTTP и HTTPS.
$ sudo ufw allow 80
$ sudo ufw allow 443
Включите брандмауэр
$ sudo ufw enable
Команда может нарушить существующие ssh-соединения. Продолжить операцию (y|n)? y
Брандмауэр активен и включен при запуске системы
Проверьте статус брандмауэра снова.
$ sudo ufw status
Вы должны увидеть аналогичный вывод.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Шаг 2 - Установка Git
Первый шаг — установить Git. Он потребуется для загрузки и обновления BookStack. Выполните следующую команду для установки Git.
$ sudo apt install git
Проверьте установку.
$ git --version
Шаг 3 - Установка PHP и расширений
Поскольку BookStack зависит от PHP, вам нужно установить PHP и его расширения.
Ubuntu поставляется с устаревшей версией PHP. Сначала нам нужно добавить репозиторий PHP от Ondrej.
$ sudo add-apt-repository ppa:ondrej/php
Затем установите PHP и его расширения, необходимые для BookStack.
$ sudo apt install php7.4-fpm php7.4-mbstring php7.4-gd php7.4-xml unzip php7.4-bcmath php7.4-curl php7.4-mysql
Проверьте установку.
$ php --version
PHP 7.4.25 (cli) (built: Oct 22 2021 12:34:33) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.25, Copyright (c), by Zend Technologies
Шаг 4 - Установка и настройка MariaDB
Ubuntu поставляется со старой версией MariaDB. Чтобы установить последнюю версию, добавьте официальный репозиторий MariaDB. Выполните следующие команды, чтобы добавить репозиторий.
$ curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
$ sudo bash mariadb_repo_setup --mariadb-server-version=10.6
Выполните следующую команду для установки сервера MariaDB.
$ sudo apt install mariadb-server
Обеспечьте безопасность установки MariaDB.
$ sudo mysql_secure_installation
Вы столкнетесь с различными подсказками. Ответьте на них следующим образом.
Enter current password for root (enter for none): Нажмите Enter
Switch to unix_socket authentication [Y/n] Введите y
Change the 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
Подключитесь к оболочке MariaDB, используя следующую команду.
$ sudo mysql
Создайте новую базу данных для Bookstack.
$ create database bookstack;
Создайте нового пользователя базы данных.
$ CREATE USER 'bookstackuser'@'localhost' identified by 'bookstackpassword';
Выберите надежный пароль.
Предоставьте пользователю права на базу данных.
$ grant CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `bookstack`.* to 'bookstackuser'@'localhost';
Выйдите из оболочки MySQL.
$ exit
Шаг 5 - Установка Composer
Composer — это инструмент управления зависимостями для PHP и необходим для Laravel, на котором основан BookStack.
Скачайте скрипт установщика Composer.
$ curl -sS https://getcomposer.org/installer -o composer-setup.php
Выполните следующие команды, чтобы проверить установщик.
$ HASH=`curl -sS https://composer.github.io/installer.sig`
$ echo $HASH
$ php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Вышеуказанные команды получают хеш-значение установщика и сопоставляют его с вашим загруженным скриптом. Вы должны увидеть следующий вывод, если установщик безопасен для запуска.
Installer verified
Установите Composer.
$ sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
Проверьте установку, проверив его версию.
$ composer --version
Composer version 2.1.9 2021-10-05 09:47:38
Шаг 6 - Загрузка и установка BookStack
Создайте корневую папку для приложения BookStack.
$ sudo mkdir -p /var/www/bookstack
Измените владельца директории /var/www/bookstack на текущего вошедшего пользователя.
$ sudo chown -R $USER:$USER /var/www/bookstack
Клонируйте ветку релиза репозитория BookStack на GitHub в только что созданную папку.
$ cd /var/www/bookstack
$ git clone https://github.com/BookStackApp/BookStack.git --branch=release --single-branch .
Не пропустите точку в конце команды clone. Это гарантирует, что все файлы загружаются в текущую директорию, а не создается новая.
Запустите установщик Composer из директории /var/www/bookstack.
$ composer install --no-dev
Скопируйте файл .env.example в .env, чтобы сохранить переменные окружения для установки.
$ cp .env.example .env
Откройте файл для редактирования.
$ sudo nano .env
Заполните URL приложения и данные базы данных. Если вы собираетесь использовать функции электронной почты, заполните данные SMTP, иначе удалите их из файла.
APP_URL=https://example.com
DB_HOST=localhost
DB_DATABASE=bookstack
DB_USERNAME=bookstackuser
DB_PASSWORD=bookstackpassword
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено. Есть много других настроек, которые вы можете настроить. Чтобы узнать больше о них, откройте файл .env.example.complete и скопируйте нужные вам в ваш файл .env.
Сгенерируйте уникальный ключ приложения. Это значение автоматически заполняется в файле .env. Введите yes, чтобы продолжить выполнение команды.
$ php artisan key:generate
**************************************
* Приложение в производстве! *
************************************
Вы действительно хотите выполнить эту команду? (yes/no) [no]:
> yes
Ключ приложения успешно установлен.
Обновите базу данных.
$ php artisan migrate************************************ * Приложение в производстве! * ************************************** Вы действительно хотите выполнить эту команду? (yes/no) [no]: > yes Таблица миграции успешно создана. Миграция: 2014_10_12_000000_create_users_table Мигрировано: 2014_10_12_000000_create_users_table (0.12 seconds) .......
Шаг 7 - Установка SSL Let’s Encrypt
Чтобы установить SSL-сертификат с использованием Let’s Encrypt, нам нужно установить инструмент Certbot.
Мы будем использовать установщик пакетов Snapd для этого. Большинство серверов Ubuntu не поставляются с инструментом Snap. Чтобы это исправить, установите Snap.
$ sudo apt install snapd
Убедитесь, что ваша версия Snapd обновлена.
$ sudo snap install core
$ sudo snap refresh core
Установите Certbot.
$ sudo snap install --classic certbot
Используйте следующую команду, чтобы убедиться, что команду Certbot можно запустить, создав символическую ссылку на директорию /usr/bin.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Проверьте установку.
$ certbot --version
certbot 1.20.0
Сгенерируйте SSL-сертификат.
$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -m [email protected] -d example.com
Вышеуказанная команда загрузит сертификат в директорию /etc/letsencrypt/live/etherpad.example.com на вашем сервере.
Сгенерируйте сертификат группы Диффи-Хеллмана.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Создайте корневую директорию для веб-челленджей для автоматического обновления Let’s Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Создайте задачу Cron для обновления SSL. Она будет запускаться каждый день, чтобы проверить сертификат и обновить его при необходимости. Для этого сначала создайте файл /etc/cron.daily/certbot-renew и откройте его для редактирования.
$ sudo nano /etc/cron.daily/certbot-renew
Вставьте следующий код.
#!/bin/sh
certbot renew --cert-name bookstack.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Измените разрешения на файл задачи, чтобы сделать его исполняемым.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Шаг 8 - Установка и настройка Nginx
Ubuntu поставляется со старой версией Nginx. Чтобы установить последнюю версию, вам нужно загрузить официальный репозиторий Nginx.
Добавьте репозиторий для стабильной версии Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Установите Nginx.
$ sudo apt install nginx
Проверьте установку.
$ nginx -v
nginx version: nginx/1.20.1
Включите службу Nginx.
$ sudo systemctl enable nginx
Настройка PHP-FPM
Откройте файл /etc/php/7.4/fpm/pool.d/www.conf.
$ sudo nano /etc/php/7.4/fpm/pool.d/www.conf
Нам нужно установить Unix пользователя/группу процессов PHP на nginx. Найдите строки user=www-data и group=www-data в файле и измените их на nginx.
...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = nginx
group = nginx
...
Также найдите строки listen.owner=www-data и listen.group=www-data в файле и измените их на nginx.
listen.owner = nginx
listen.group = nginx
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Перезапустите процесс PHP-fpm.
$ sudo systemctl restart php7.4-fpm
Настройка Nginx
Создайте и откройте файл /etc/nginx/conf.d/bookstack.conf для редактирования.
$ sudo nano /etc/nginx/conf.d/bookstack.conf
Вставьте следующий код в него.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name bookstack.example.com;
access_log /var/log/nginx/bookstack.access.log;
error_log /var/log/nginx/bookstack.error.log;
ssl_certificate /etc/letsencrypt/live/bookstack.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/bookstack.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/bookstack.example.com/chain.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
root /var/www/bookstack/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
}
# enforce HTTPS
server {
listen 80;
listen [::]:80;
server_name bookstack.example.com;
return 301 https://$host$request_uri;
}
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено после завершения.
Откройте файл /etc/nginx/nginx.conf для редактирования.
$ sudo nano /etc/nginx/nginx.conf
Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;.
server_names_hash_bucket_size 64;
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено. Снова проверьте Nginx.
Проверьте синтаксис конфигурационного файла Nginx.
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Наконец, запустите службу Nginx, чтобы включить новую конфигурацию.
$ sudo systemctl start nginx
Измените владельца директории на пользователя nginx, чтобы веб-сервер мог получить доступ и записывать в папку.
$ sudo chown -R nginx:nginx /var/www/bookstackШаг 9 - Запуск BookStack
Ваш Bookstack готов к использованию. Откройте URL https://bookstack.example.com в вашем браузере, и вы увидите страницу входа.

Войдите, используя учетную запись администратора по умолчанию [email protected] с паролем password. Откройте страницу Настройки >> Пользователи и нажмите кнопку ДОБАВИТЬ НОВОГО ПОЛЬЗОВАТЕЛЯ.

Заполните данные пользователя, установите галочку в поле Администратор под Роли пользователей и снимите галочку с Отправить приглашение пользователю по электронной почте, так как мы не настроили данные SMTP. Выберите надежный пароль. Нажмите Сохранить, когда закончите.

Затем нажмите на пользователя по умолчанию Admin и удалите пользователя, нажав кнопку Удалить пользователя.

Перед удалением передайте права администратора вашему вновь созданному пользователю, выбрав его из выпадающего меню. Нажмите Подтвердить, чтобы завершить. Если вы вошли в систему с этим пользователем, вы будете автоматически выведены из системы. Вам нужно будет снова войти в систему с вновь созданным пользователем.

Резервное копирование и восстановление BookStack
Резервное копирование BookStack
Вам нужно отдельно создать резервную копию базы данных и файлов. Чтобы создать резервную копию базы данных, используйте инструмент mysqldump.
$ sudo mysqldump -u bookstackuser bookstack > bookstack.backup.sql
Вам также нужно создать резервные копии следующих файлов и папок.
.env- файл, содержащий важную конфигурацию.public/uploads- папка, содержащая загруженные изображения.storage/uploads- папка, содержащая загруженные вложения страниц.
Выполните следующую команду, чтобы создать сжатый архив вышеуказанных файлов и папок.
$ sudo tar -czvf bookstack-files-backup.tar.gz .env public/uploads storage/uploads
Восстановление BookStack
Выполните следующую команду для восстановления базы данных.
$ sudo mysql -u bookstack < bookstack.backup.sql
Если вы восстанавливаете на новую версию BookStack, вам нужно будет выполнить команду sudo php artisan migrate.
Чтобы восстановить сжатые файлы, созданные выше, используйте следующую команду.
$ sudo tar -xvzf bookstack-files-backup.tar.gz
Вам также нужно будет изменить разрешения.
Обновление BookStack
Перед обновлением BookStack убедитесь, что вы сделали правильную резервную копию, используя ранее описанный процесс.
Чтобы обновить BookStack, извлеките оригинальные файлы из его репозитория Git.
$ cd /var/www/bookstack
$ sudo git pull origin release
Выполните следующие команды, чтобы продолжить установку.
$ sudo composer install --no-dev
$ sudo php artisan migrate
Вам также нужно будет выполнить следующие команды, чтобы очистить кэш.
$ sudo php artisan cache:clear
$ sudo php artisan config:clear
$ sudo php artisan view:clear
Заключение
Это завершает наш учебник по установке BookStack на сервере Ubuntu 20.04. Если у вас есть какие-либо вопросы, оставьте их в комментариях ниже.
Get new posts in your inbox
No spam. Unsubscribe anytime.