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

Установка Drupal 8.1.10 на Ubuntu 16.04 с Nginx, MariaDB и PHP-FPM

• 6 min read • DevOps • Обновлено 21 Nov 2025
Установка Drupal 8 на Ubuntu 16.04 с Nginx и MariaDB
Установка Drupal 8 на Ubuntu 16.04 с Nginx и MariaDB

О чём эта инструкция

Это подробная инструкция для системных администраторов и разработчиков, которые хотят развернуть 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 -y

PHP-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 — конфигурация корректна.

Страница phpinfo

Шаг 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

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

Важное: используйте сильный пароль, а не примерный 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

Установка Drupal

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

Настройка профиля сайта

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

Установка 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 часов после обновления.
    • Резервная копия и план отката доступны.

Маленькая методология развертывания

  1. Подготовьте инфраструктуру (сервер, DNS).
  2. Установите зависимости (Nginx, PHP, MariaDB).
  3. Настройте конфигурацию (Nginx, php.ini, SSL).
  4. Установите Drupal и протестируйте функции.
  5. Перенесите на продакшн с бэкапом и мониторингом.

Короткий глоссарий

  • 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.

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

Поделиться: 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 быстро