Гид по технологиям

Установка BookStack на Ubuntu 16.04 с LEMP

• 7 min read • DevOps • Обновлено 27 Nov 2025
Установка BookStack на Ubuntu 16.04 (LEMP)
Установка BookStack на Ubuntu 16.04 (LEMP)

Введение

BookStack — это open source платформа для ведения документации и вики-проектов. Приложение написано на PHP с использованием фреймворка Laravel. В BookStack структура контента организована как «Книги» (Book) → «Главы» (Chapter) → «Страницы» (Page).

Цель этого руководства — показать подробную установку BookStack на Ubuntu 16.04 в окружении LEMP. Инструкции ориентированы на командную строку и предполагают доступ root или эквивалент через sudo.

Важно: Ubuntu 16.04 — относительно старая версия ОС. Если возможно, рассмотрите установку на более новую LTS-версию Ubuntu или убедитесь в доступности обновлений безопасности для вашей среды.

Что потребуется

  • Сервер с Ubuntu 16.04
  • Права root или возможность sudo
  • Доступ в интернет для загрузки пакетов и репозиториев
  • Домен (рекомендуется) или запись hosts для тестирования

План работ

  1. Обновление репозиториев и системы
  2. Установка Nginx
  3. Установка и настройка PHP-FPM 7.0 и расширений
  4. Установка и настройка MariaDB/MySQL
  5. Установка Composer
  6. Установка BookStack
  7. Настройка виртуального хоста Nginx
  8. Тестирование и базовая безопасность

Шаг 1 — Обновление системы

Перед установкой пакетов обновите список репозиториев и установленные пакеты:

sudo apt update
sudo apt upgrade

Это устранит проблемы с несовместимыми версиями пакетов.

Шаг 2 — Установка Nginx

Мы будем использовать Nginx в качестве веб-сервера в LEMP-стеке. Установите его из репозитория:

sudo apt install nginx -y

Запустите и включите автозапуск:

systemctl start nginx
systemctl enable nginx

Проверьте статус и открытые порты:

systemctl status nginx
netstat -plntu

Установка Nginx

ALT: Снимок экрана вывода команды netstat и статуса сервиса Nginx на Ubuntu 16.04

Nginx установлен и слушает HTTP-порт 80.

Шаг 3 — Установка и настройка PHP-FPM

BookStack требует PHP и набора расширений. В этом руководстве используется PHP 7.0 и PHP-FPM.

Установите PHP и нужные расширения:

sudo apt install php7.0-fpm php7.0-mcrypt php7.0-curl php7.0-cli php7.0-mysql php7.0-gd php7.0-xsl php7.0-json php7.0-intl php-pear php7.0-dev php7.0-common php7.0-mbstring php7.0-tidy php7.0-zip php-soap libcurl3 curl -y

После установки отредактируйте конфигурации php.ini для FPM и CLI — нужно отключить cgi.fix_pathinfo, чтобы предотвратить проблемы с обработкой путей:

vim /etc/php/7.0/fpm/php.ini

Найдите и установите:

cgi.fix_pathinfo=0

Сохраните и закройте файл. Повторите для CLI:

vim /etc/php/7.0/cli/php.ini

Установите то же значение.

Запустите PHP-FPM и включите автозапуск:

systemctl start php7.0-fpm
systemctl enable php7.0-fpm

Проверьте, что PHP-FPM слушает unix-сокет:

netstat -pl | grep fpm

Настройка PHP

ALT: Вывод команды netstat, показывающий сокет php7.0-fpm.sock

Если вы используете другую версию PHP, скорректируйте пути к сокету в конфигурации Nginx.

Шаг 4 — Установка и настройка MariaDB/MySQL

BookStack работает с MySQL/MariaDB (поддерживается MySQL >= 5.6). Установим MariaDB из репозитория:

sudo apt install mariadb-server mariadb-client -y

Запустите сервис и включите автозапуск:

systemctl start mysql
systemctl enable mysql

Защитите инсталляцию и задайте пароль root при помощи встроенного скрипта:

mysql_secure_installation

Отвечайте на вопросы скрипта, как предлагается (рекомендуется ответить утвердительно на удаление анонимных пользователей, запрет удалённого входа root, удаление тестовой базы и перезагрузку таблиц привилегий).

Далее создайте базу данных и пользователя для BookStack. Пример в руководстве создаёт базу bookstackdb и пользователя bookstack с паролем bookstack@. Рекомендуется заменить пароли на уникальные и надёжные.

Вход в MySQL shell:

mysql -u root -p

SQL-запросы (вставьте свои значения пароля и имени базы):

create database bookstackdb;
create user bookstack@localhost identified by 'bookstack@';
grant all privileges on bookstackdb.* to bookstack@localhost identified by 'bookstack@';
flush privileges;
exit;

Установка MariaDB

ALT: Окно терминала с командами mysql_secure_installation и подтверждением успешной настройки MariaDB

Создание базы данных

ALT: Скриншот MySQL shell с созданием базы и пользователя bookstack

Важно: для продакшен-среды используйте сложные пароли и, по возможности, выделенного пользователя с минимальными правами.

Шаг 5 — Установка PHP Composer

Composer — менеджер зависимостей для PHP. Он понадобится для установки библиотек BookStack.

Загрузите инсталлятор и переместите composer в /usr/bin:

cd ~
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/bin/composer
composer -v

Установка Composer

ALT: Вывод команды composer -v с указанием версии Composer

Проверьте, что composer доступен глобально.

Шаг 6 — Установка BookStack

Установим BookStack в /var/www.

cd /var/www/
git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch

Перейдите в папку проекта и установите зависимости через Composer:

cd BookStack/
composer install

Если Composer запросит интерактивные действия, следуйте подсказкам. В идеале — запускать от пользователя, который будет владеть файлами приложения, или изменить владельца позднее.

Копирование и редактирование примера конфигурации окружения:

cp .env.example .env
vim .env

Измените блок с параметрами базы данных на свои значения:

# Database details
DB_HOST=localhost
DB_DATABASE=bookstackdb
DB_USERNAME=bookstack
DB_PASSWORD=bookstack@

Сохраните файл.

Установите владельца файлов на www-data (пользователь веб-сервера):

chown -R www-data:www-data /var/www/BookStack

Сгенерируйте ключ приложения и примените миграции базы данных:

php artisan key:generate
php artisan migrate

При миграции подтвердите действие, набрав yes, если потребуется.

Установка BookStack

ALT: Терминал с выводом composer install и php artisan migrate для BookStack

Теперь BookStack установлен, ключ приложения сгенерирован, схема БД применена.

Шаг 7 — Настройка виртуального хоста Nginx

Пример конфигурации Nginx создаёт сайт с доменом book.hakase-labs.co. Адрес и корневой путь изменяйте под свои нужды.

Создайте файл конфигурации:

cd /etc/nginx/
vim sites-available/bookstack

Вставьте следующий блок (с учётом правильного пути к сокету php-fpm):

server {
  listen 80;
  server_name book.hakase-labs.co;
  root /var/www/BookStack/public;

  access_log  /var/log/nginx/bookstack_access.log;
  error_log  /var/log/nginx/bookstack_error.log;

  client_max_body_size 1G;
  fastcgi_buffers 64 4K;

  index  index.php;

  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }

  location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README) {
    deny all;
  }

  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.0-fpm.sock;
  }

  location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
    expires 30d;
    access_log off;
  }
}

Сохраните и активируйте сайт:

ln -s /etc/nginx/sites-available/bookstack /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

Проверьте отсутствие ошибок при тестировании конфигурации.

Шаг 8 — Тестирование и первоначальная настройка

Откройте браузер и перейдите по адресу, настроенному в server_name, например:

http://book.hakase-labs.co/

Вы должны увидеть страницу входа BookStack. По умолчанию в демо-инструкциях используется пользователь [email protected] с паролем password — немедленно смените эти учетные данные после первого входа.

Тест BookStack

ALT: Экран входа в BookStack

Панель BookStack

ALT: Дашборд BookStack после входа администратора

Меню Настроек

ALT: Страница настроек BookStack

Пользователи BookStack

ALT: Список пользователей BookStack, пример редактирования администратора

После входа: измените email и пароль администратора и настройте основные параметры сайта в разделе Settings → Settings.

Рекомендации по безопасности (базовые)

  • Сразу смените дефолтный пароль администратора.
  • Настройте брандмауэр (ufw): откройте порты 22 (SSH), 80 (HTTP) и 443 (HTTPS) только при необходимости.
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
  • Подключите HTTPS (рекомендуется использовать Let’s Encrypt через certbot).
  • Ограничьте доступ к административным страницам по IP, если возможно.
  • Регулярно обновляйте систему и PHP-пакеты.

Альтернативные подходы

  • Apache вместо Nginx (LAMP): BookStack совместим с Apache+mod_php или PHP-FPM + Apache; конфигурация виртуального хоста будет иной.
  • Контейнеризация: запуск BookStack в Docker-контейнерах (официальные/сообщества образы) для изоляции и удобства миграции.
  • Использовать отдельный сервер БД или managed DB-сервис для увеличения доступности.

Когда этот подход не подойдёт

  • Если у вас ограничены ресурсы хоста (низкая память/CPU), лучше использовать контейнеры или выделенный хостинг для приложений с более оптимизированным стеком.
  • Для крупных организаций с требованиями высокой доступности потребуется кластеризация БД, балансировщики и резервирование файловой системы.

Критерии приёмки

  • Веб-интерфейс BookStack доступен по назначенному домену (HTTP/HTTPS).
  • Удалось войти в систему под администратором и сменить пароль.
  • Migrations выполнены без ошибок (php artisan migrate).
  • Все статические ресурсы (CSS/JS/изображения) загружаются корректно.
  • Логи Nginx и Laravel не содержат критических ошибок при обычной работе.

Роль‑ориентированные чеклисты

Администратор сервера:

  • Обновил систему и установил пакеты.
  • Настроил брандмауэр и TLS.
  • Настроил резервное копирование /var/www и дампа БД.

Dev/Ops:

  • Настроил CI/CD для развёртывания обновлений.
  • Проверил права владельца файлов (www-data).
  • Включил мониторинг (доступность, метрики PHP-FPM).

Администратор приложения (BookStack):

  • Сменил дефолтные учётные данные.
  • Проверил настройки почты (SMTP) для уведомлений.
  • Настроил параметры резервного копирования и восстановления.

Тесты и критерии проверки

Примеры тест-кейсов для проверки успешной установки:

  1. Тест доступа:
    • Ожидаемый результат: GET / возвращает 200 и страницу входа.
  2. Тест аутентификации:
    • Ожидаемый результат: логин администратором успешен, после смены пароля старая пара логин/пароль больше не работает.
  3. Тест записи контента:
    • Ожидаемый результат: создание книги, главы и страницы проходит без ошибок; контент отображается.
  4. Тест бэкапа/восстановления (ручной):
    • Ожидаемый результат: дамп БД и копия каталога public/uploads восстановлены, сайт работает.

Технические подсказки и отладка

  • Если при обращении к PHP-файлам вы видите исходный код — проверьте fastcgi_pass и соответствие сокета в конфигурации Nginx.
  • 502 Bad Gateway: убедитесь, что php7.0-fpm запущен и правильно указан сокет или порт.
  • Ошибки миграции: проверьте настройки подключения к БД в .env и правильность учетных данных.
  • Проблемы с правами: каталог storage и bootstrap/cache должны быть доступны для записи пользователем веб-сервера (www-data).

Команды для проверки прав:

ls -la /var/www/BookStack
sudo chown -R www-data:www-data /var/www/BookStack
sudo chmod -R 775 /var/www/BookStack/storage /var/www/BookStack/bootstrap/cache

Резервное копирование и откат

Резервное копирование:

  • Дамп MySQL:
mysqldump -u root -p bookstackdb > bookstackdb-$(date +%F).sql
  • Копия файлов:
tar -czf bookstack-www-$(date +%F).tar.gz /var/www/BookStack

Откат (пример идейного сценария):

  1. Остановите веб-сервер (nginx) и поставьте сайт в режим техобслуживания.
  2. Восстановите дамп MySQL:
mysql -u root -p bookstackdb < bookstackdb-YYYY-MM-DD.sql
  1. Восстановите файлы приложения и права владельца.
  2. Запустите nginx и проверьте логи.

Модель принятия решений: LEMP или LAMP

flowchart TD
  A[Нужен быстрый, лёгкий веб-сервер?] -->|Да| B[Выберите Nginx 'LEMP']
  A -->|Нет| C[Выберите Apache 'LAMP']
  B --> D{Нужны .htaccess переопределения?}
  C --> D
  D -->|Да| C
  D -->|Нет| B

Короткий глоссарий (1‑строчные определения)

  • LEMP: Набор сервисов Linux + Nginx + MySQL/MariaDB + PHP-FPM.
  • Nginx: Высокопроизводительный HTTP-сервер и обратный прокси.
  • PHP-FPM: FastCGI-менеджер процессов PHP для повышения производительности.
  • Composer: Менеджер зависимостей для PHP.
  • Artisan: CLI инструмент Laravel для управления приложением.

Советы по миграции и совместимости

  • При переносе на более новую Ubuntu проверьте версии PHP и сокетов (php7.2/7.4/8.0 используют другие пути).
  • Если переходите с MySQL на MariaDB, проверьте совместимость SQL и кодировки (utf8mb4 рекомендуется).
  • Используйте environment-файл .env для лёгкой смены параметров окружения.

Итоговое резюме

BookStack можно успешно развернуть на Ubuntu 16.04 с LEMP: достаточно установить Nginx, PHP-FPM с нужными расширениями, MariaDB, Composer и саму платформу BookStack. После установки не забудьте переключиться на HTTPS, сменить дефолтные пароли, настроить бэкап и права доступа.

Важные действия после установки:

  • Смена дефолтного админа и пароля;
  • Настройка TLS и брандмауэра;
  • Резервное копирование базы и файлов;
  • Мониторинг и обновления.

Источники и дополнительная документация:

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро