Установка 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 для тестирования
План работ
- Обновление репозиториев и системы
- Установка Nginx
- Установка и настройка PHP-FPM 7.0 и расширений
- Установка и настройка MariaDB/MySQL
- Установка Composer
- Установка BookStack
- Настройка виртуального хоста Nginx
- Тестирование и базовая безопасность
Шаг 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
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
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 -pSQL-запросы (вставьте свои значения пароля и имени базы):
create database bookstackdb;
create user bookstack@localhost identified by 'bookstack@';
grant all privileges on bookstackdb.* to bookstack@localhost identified by 'bookstack@';
flush privileges;
exit;
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
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, если потребуется.

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

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

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

ALT: Страница настроек 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) для уведомлений.
- Настроил параметры резервного копирования и восстановления.
Тесты и критерии проверки
Примеры тест-кейсов для проверки успешной установки:
- Тест доступа:
- Ожидаемый результат: GET / возвращает 200 и страницу входа.
- Тест аутентификации:
- Ожидаемый результат: логин администратором успешен, после смены пароля старая пара логин/пароль больше не работает.
- Тест записи контента:
- Ожидаемый результат: создание книги, главы и страницы проходит без ошибок; контент отображается.
- Тест бэкапа/восстановления (ручной):
- Ожидаемый результат: дамп БД и копия каталога 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Откат (пример идейного сценария):
- Остановите веб-сервер (nginx) и поставьте сайт в режим техобслуживания.
- Восстановите дамп MySQL:
mysql -u root -p bookstackdb < bookstackdb-YYYY-MM-DD.sql- Восстановите файлы приложения и права владельца.
- Запустите 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 и брандмауэра;
- Резервное копирование базы и файлов;
- Мониторинг и обновления.
Источники и дополнительная документация:
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента