Установка Drupal 8.1.10 на Ubuntu 16.04 с Nginx, MariaDB и PHP-FPM
О чём эта инструкция
Это подробная инструкция для системных администраторов и разработчиков, которые хотят развернуть Drupal 8.1.10 на Ubuntu 16.04. Здесь есть все основные шаги: установка сервисов, конфигурация Nginx для PHP-FPM, создание базы данных в MariaDB, генерация SSL, настройка виртуального хоста и запуск инсталлятора Drupal. В конце — дополнительные рекомендации по безопасности, тестам и откату.
Краткие определения
- Drupal — CMS на PHP с модульной архитектурой.
- Nginx — быстрый HTTP-сервер и обратный прокси.
- PHP-FPM — менеджер процессов PHP для высоконагрузочных сайтов.
- MariaDB — форк MySQL, совместимая СУБД.
Требования
- Ubuntu 16.04, 64-bit.
- Root или sudo-права.
- Доменное имя (например, drupal8.me) или IP-адрес для теста.
Файловая структура, которую мы будем использовать
- Веб-директория: /var/www/drupal8
- Nginx: /etc/nginx/sites-available/drupal8
- SSL: /etc/nginx/ssl/drupal.crt и /etc/nginx/ssl/drupal.key
- PHP-FPM socket: /run/php/php7.0-fpm.sock
Шаг 1 Обновление системы
Войдите на сервер по SSH и обновите списки пакетов:
sudo su
sudo apt-get update && sudo apt-get upgrade -yВажно: всегда делайте резервные копии перед обновлением на продакшн.
Шаг 2 Установка Nginx и PHP-FPM
Установим Nginx и необходимые пакеты PHP (PHP 7.0 и расширения, требуемые Drupal):
sudo apt-get install nginx -y
sudo apt-get install php7.0-fpm php7.0-cli php7.0-gd php7.0-mysql php7.0-xml -yPHP-GD нужен для обработки изображений в Drupal.
Шаг 3 Настройка PHP-FPM
Отредактируйте php.ini для PHP-FPM:
cd /etc/php/7.0/fpm/
vim php.iniНайдите строку cgi.fix_pathinfo и установите 0 (строка примерно 761):
cgi.fix_pathinfo=0Это закрывает классическую уязвимость обработки путей.
Перезапустите php-fpm после изменений:
systemctl restart php7.0-fpmШаг 4 Настройка Nginx для работы с PHP-FPM
Отредактируйте конфигурацию виртуального хоста по умолчанию:
cd /etc/nginx/sites-available/
vim defaultРазрешите обработку .php через php-fpm — в секции location ~ .php$ раскомментируйте вызов unix-сокета:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}Проверка конфигурации и перезапуск:
nginx -t
systemctl restart nginxПроверьте работу PHP, создав /var/www/html/info.php:
cd /var/www/html/
echo "" > info.phpОткройте http://YOUR_IP/info.php в браузере. Если страница выводит информацию о PHP — конфигурация корректна.

Шаг 5 Установка и конфигурация MariaDB
Установим MariaDB и настроим безопасность:
sudo apt-get install mariadb-client mariadb-server -y
systemctl start mysql
sudo mysql_secure_installationВо время mysql_secure_installation ответьте на вопросы по безопасности: задайте пароль root, удалите анонимных пользователей, запретите удалённый root-доступ, удалите тестовую базу и обновите привилегии.
Создайте базу данных и пользователя для Drupal (замените пароль на безопасный):
mysql -u root -p
create database drupaldb;
create user drupaluser@localhost identified by 'drupaluser@';
grant all privileges on drupaldb.* to drupaluser@localhost;
flush privileges;
\q
Важное: используйте сильный пароль, а не примерный drupaluser@.
Шаг 6 Генерация самоподписанного SSL
Для тестовой установки удобно использовать самоподписанный сертификат. Создадим директорию и ключ:
mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/drupal.key -out /etc/nginx/ssl/drupal.crt
chmod 600 drupal.keyЗаполните поля при генерации. На продакшне лучше использовать Let’s Encrypt или покупной сертификат.
Шаг 7 Создание виртуального хоста Nginx для Drupal
Создадим каталог сайта и файл конфигурации Nginx:
mkdir -p /var/www/drupal8
cd /etc/nginx/sites-available/
vim drupal8Вставьте конфигурацию (пример ниже) и замените server_name на ваш домен:
server {
server_name drupal8.me;
root /var/www/drupal8;
listen 80;
listen [::]:80;
listen 443 default ssl;
ssl_certificate /etc/nginx/ssl/drupal.crt;
ssl_certificate_key /etc/nginx/ssl/drupal.key;
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~* \.(txt|log)$ {
allow 192.168.0.0/16;
deny all;
}
location ~ \.*/.*\.php$ {
return 403;
}
location ~ ^/sites/.*/private/ {
return 403;
}
location ~ (^|/)\. {
return 403;
}
location / {
try_files $uri /index.php?$query_string;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?q=$1;
}
location ~ '\.php$|^/update.php' {
fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
include fastcgi_params;
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_intercept_errors on;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ ^/sites/.*/files/styles/ {
try_files $uri @rewrite;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}Активируйте виртуальный хост и перезапустите Nginx:
ln -s /etc/nginx/sites-available/drupal8 /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginxШаг 8 Установка Drupal и Drush
Установим git и drush, загрузим и распакуем Drupal:
sudo apt-get install git drush -y
cd /var/www/drupal8
wget https://ftp.drupal.org/files/projects/drupal-8.1.10.tar.gz
tar -xzvf drupal-8.1.10.tar.gz
mv drupal-8.1.10/* .
rm -rf drupal-8.1.10Альтернатива: drush dl drupal-8
Настройте файлы конфигурации:
cd sites/default
cp default.settings.php settings.php
cp default.services.yml services.yml
mkdir files
chmod a+w *Откройте https://ваш_домен/ или https://ваш_IP/ — установщик Drupal запустится.
Выберите язык, профиль установки (Standard или Minimal), введите данные базы данных (drupaldb/drupaluser) и завершите установку через веб-интерфейс.




После завершения установки установщик предложит задать имя сайта и администратора.

В конце вы попадёте на главную страницу Drupal.

Если появится предупреждение о правах на файлы settings.php и services.yml, верните права безопасности:
cd sites/default/
chmod 644 settings.php services.ymlДополнения и лучшие практики
Ниже — дополнительные рекомендации, чек-листы, отладка и варианты альтернативной установки.
Факт-бокс
- Версия Drupal: 8.1.10 (в руководстве).
- Используемая Ubuntu: 16.04 LTS.
- MariaDB: совместимая с MySQL.
- Количество модулей в сообществе: более 31 000.
Быстрые проверки после установки
- Доступ по HTTPS и редирект с HTTP.
- phpinfo недоступен из публичного доступа (удалите info.php).
- Права на sites/default/settings.php — 644.
- Директория sites/default/files доступна для записи веб-сервером.
- Службы nginx и php7.0-fpm запущены.
Безопасность и hardening
- Используйте реальный SSL от Let’s Encrypt в продакшне.
- Отключите отображение ошибок PHP в production (display_errors = Off).
- Ограничьте доступ к /update.php и /install.php IP-адресами администраторов.
- Регулярно обновляйте ядро и модули Drupal.
- Настройте fail2ban для защиты SSH и по необходимости для Nginx.
- Используйте CSP и HSTS заголовки:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;- Ограничьте доступ к файлам конфигурации в Nginx (мы уже возвращаем 403 для скрытых файлов).
Резервное копирование и откат
- Регулярно делайте дамп базы:
mysqldump -u root -p drupaldb > drupaldb_$(date +%F).sql- Сохраняйте файлы сайта: /var/www/drupal8 и sites/default/files.
- План отката: восстановить SQL-дамп, вернуть файлы, очистить кеш Drush: drush cr.
Тесты и критерии приёмки
- Сайт загружается по HTTPS без ошибок.
- Панель администратора доступна и авторизация работает.
- Загрузка изображений работает (GD установлен).
- Cron задачи выполняются (через cron или систему очередей).
Отладка распространённых проблем
- 502 Bad Gateway — проверьте, запущен ли php7.0-fpm и совпадает ли путь сокета.
- 500 Internal Server Error — смотрите логи: /var/log/nginx/error.log и /var/log/php7.0-fpm.log.
- Ошибки соединения с БД — убедитесь в правильности учетных данных и что MariaDB слушает сокет/порт.
Роли и чек-листы
Администратор сервера:
- Настроить бэкапы (файлы + БД).
- Обновлять ПО сервера и пакеты безопасности.
- Настроить мониторинг и alert-ы.
DevOps / Разработчик:
- Настроить CI/CD развертывание кода (composer, drush rsync).
- Обеспечить миграции конфигурации через config export/import.
Контент-менеджер:
- Проверить шаблоны, права ролей.
- Настроить резервные копии контента, если нужно.
Альтернативные подходы
- Использовать Apache + mod_php или php-fpm вместо Nginx. Apache проще для .htaccess, но Nginx эффективнее по памяти.
- Использовать Docker: контейнеры для nginx, php-fpm и mariadb упрощают воспроизводимость окружения.
- Устанавливать Drupal через Composer (рекомендуется для современных версий): composer create-project drupal/recommended-project.
Миграция и совместимость
- Для обновления до более новых версий Drupal (9/10) потребуется PHP 7.3+ / 7.4+ и обновление модулей.
- План миграции: тестовая среда → проверка совместимых модулей → бэкап → обновление ядра → тесты.
Шаблон принятия изменений
- Критерии приёмки:
- Установка несломала сайт и функционал на тестовой среде.
- Нет ошибок в логах в течение 24 часов после обновления.
- Резервная копия и план отката доступны.
Маленькая методология развертывания
- Подготовьте инфраструктуру (сервер, DNS).
- Установите зависимости (Nginx, PHP, MariaDB).
- Настройте конфигурацию (Nginx, php.ini, SSL).
- Установите Drupal и протестируйте функции.
- Перенесите на продакшн с бэкапом и мониторингом.
Короткий глоссарий
- PHP-FPM — FastCGI Process Manager для PHP.
- Drush — CLI-утилита для управления Drupal.
- Virtual Host — конфигурация сайта в Nginx/Apache.
Когда этот подход не годится
- Если вы хотите использовать Composer-управляемую установку с современными зависимостями — лучше начать с Composer-матрицы.
- Для крупных многосайтовых установок может потребоваться кластеризация БД и объектный кеш (Redis/Memcached).
- Для соблюдения соответствия PCI/HIPAA понадобится детальная безопасность и сертифицированный SSL.
Краткий чек-лист перед переходом в продакшн
- SSL от доверенного центра, не самоподписанный.
- Отключён phpinfo и другие отладочные страницы.
- Права файлов корректны, settings.php не доступен для записи веб-сервером.
- Регулярные бэкапы и мониторинг настроены.
- Механизм обновлений и тестовая среда готовы.
Резюме
Вы установили Drupal 8.1.10 на Ubuntu 16.04 с Nginx, PHP-FPM и MariaDB. В руководстве описаны все шаги — от установки пакетов до запуска веб-инсталлятора. Также представлены рекомендации по безопасности, тестированию и откату.
Если нужно, могу подготовить:
- Docker-compose конфигурацию для локальной разработки.
- Скрипт автозапуска установки и конфигурации (Bash).
- Пошаговый план миграции на Drupal 9/10.
Важно: для продакшена замените самоподписанный сертификат на сертификат от доверенного центра, используйте сложные пароли и настройте мониторинг и резервное копирование.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента