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

Установка Drupal 8 на Ubuntu с Nginx, MariaDB и SSL

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

Введение

Drupal — известная свободная система управления содержимым (CMS) на PHP. Доступна бесплатно под лицензией GNU GPL. Drupal подходит для сайтов любого размера: от личных блогов до корпоративных и государственных порталов. Основной компонент называется Drupal Core — он обеспечивает управление контентом, пользователей, меню, оформление и администрирование. Сообщество предлагает множество модулей — в исходном материале упоминается более 31 000 модулей. Текущая версия, использованная в этом руководстве, — 8.0.

В этом руководстве показано, как установить Drupal 8 на Ubuntu с Nginx, MariaDB и PHP-FPM, а также как подключить SSL (самоподписанный сертификат). Приведённые команды выполняются из-под root или с sudo.

Основные этапы (коротко)

  1. Обновление системы.
  2. Установка Nginx и PHP-FPM.
  3. Настройка Nginx для работы с PHP-FPM.
  4. Установка и настройка MariaDB.
  5. Генерация самоподписанного SSL.
  6. Конфигурация виртуального хоста для Drupal.
  7. Установка Drupal (git/drush) и финальные настройки.

Важное примечание

Ubuntu 15.10 указана в исходных требованиях. Это устаревшая версия Ubuntu; для боевой эксплуатации рекомендуется использовать текущую LTS-версию Ubuntu и соответствующую версию PHP (например, PHP 7.x или выше). В примерах ниже сохранены команды и файлы, как в оригинальном материале, но при переносе на современные системы замените пакеты php5 на пакеты php7.х и проверьте совместимость модулей.

Требования

  • Ubuntu 15.10 — 64‑бит.
  • root-права или доступ через sudo.

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

Войдите на сервер по SSH, переключитесь на root и обновите репозитории:

sudo su
sudo apt-get update

Шаг 2 — Установка Nginx и PHP-FPM

Nginx (engine-x) — быстрый HTTP-сервер с небольшим потреблением памяти. Его можно использовать как прокси для HTTP/HTTPS, а также для POP3/IMAP. В этом руководстве Nginx будет выполнять роль SSL‑включённого HTTP‑сервера.

Установите Nginx:

sudo apt-get install nginx -y

Установите php-fpm и расширение GD, которое требуется Drupal:

apt-get install php5-fpm php5-cli php5-gd php5-mysql -y

На современных системах замените пакеты php5- на php7.х-.

Шаг 3 — Настройка Nginx и PHP-FPM

Настроим PHP-FPM и Nginx, чтобы Nginx отправлял PHP-запросы PHP-FPM.

Перейдите в директорию конфигурации PHP-FPM и отредактируйте php.ini:

cd /etc/php/fpm/
vim php.ini

Найдите строку, отвечающую за cgi.fix_pathinfo, и установите её в 0 (пример в исходном материале указывал строку 773):

cgi.fix_pathinfo=0

Сохраните и выйдите из редактора.

Отредактируйте виртуальный хост Nginx по умолчанию:

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

Включите директивы работы с php-fpm — в исходнике предложено раскомментировать секцию примерно с 45 по 52 строку:

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
        #
        #       # With php5-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
        }

Проверьте конфигурацию nginx и перезапустите службы:

nginx -t
systemctl restart nginx
systemctl restart php5-fpm

Проверьте работу PHP-FPM, создав phpinfo в корневой веб директории:

cd /var/www/html/
echo "" > info.php

Откройте в браузере http:///info.php. Вы должны увидеть страницу PHP Info.

Страница PHP Info с конфигурацией сервера

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

MariaDB — форк MySQL и функционально является заменой MySQL.

Установите MariaDB:

sudo apt-get install mariadb-client mariadb-server -y

Запустите сервис MariaDB:

systemctl start mysql

Обратите внимание: имя службы обычно mysql, поэтому используется systemctl start mysql.

Запустите безопасную начальную настройку MariaDB:

mysql_secure_installation

Создайте базу данных и пользователя для Drupal. В примере используется база drupaldb и пользователь drupaluser с паролем drupaluser@ — замените пароль на надёжный при установке.

mysql -u root -p

create database drupaldb;
create user drupaluser@localhost identified by 'drupaluser@';
grant all privileges on drupaldb.* to drupaluser@localhost identified by 'drupaluser@';
flush privileges;
\q

Создание базы данных Drupal в консоли MariaDB

База данных drupaldb и пользователь drupaluser созданы.

Шаг 5 — Генерация самоподписанного SSL-сертификата

Перейдите в директорию /etc/nginx и создайте папку ssl:

mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl

Создайте самоподписанный сертификат с помощью openssl:

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

Шаг 6 — Конфигурация виртуального хоста для Drupal

Мы будем устанавливать Drupal в /var/www/drupal8 с доменом drupal8.me — замените домен на ваш.

mkdir -p /var/www/drupal8

Создайте файл виртуального хоста:

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

Вставьте конфигурацию Nginx для Drupal (оставлена исходная конфигурация):

server {
    server_name drupal8.me;
    root /var/www/drupal8; ## <-- Your only path reference.

    listen 80;
    listen [::]:80;
    listen 443 default ssl;

    ssl_certificate      /etc/nginx/ssl/drupal.crt;
    ssl_certificate_key  /etc/nginx/ssl/drupal.key;

    # Redirect HTTP to HTTPS
    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;
    }

    # Very rarely should these ever be accessed outside of your lan
    location ~* \.(txt|log)$ {
        allow 192.168.0.0/16;
        deny all;
    }

    location ~ \..*/.*\.php$ {
        return 403;
    }

    location ~ ^/sites/.*/private/ {
        return 403;
    }

    # Block access to "hidden" files and directories whose names begin with a
    # period. This includes directories used by version control systems such
    # as Subversion or Git to store control files.
    location ~ (^|/)\. {
        return 403;
    }

    location / {
        # try_files $uri @rewrite; # For Drupal <= 6
        try_files $uri /index.php?$query_string; # For Drupal >= 7
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }

    # In Drupal 8, we must also match new paths where the '.php' appears in the middle,
    # such as update.php/selection. The rule we use is strict, and only allows this pattern
    # with the update.php front controller.  This allows legacy path aliases in the form of
    # blog/index.php/legacy-path to continue to route to Drupal nodes. If you do not have
    # any paths like that, then you might prefer to use a laxer rule, such as:
    #   location ~ \.php(/|$) {
    # The laxer rule will continue to work if Drupal uses this new URL pattern with front
    # controllers other than update.php in a future release.
    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
    }

    # Fighting with Styles? This little gem is amazing.
    # location ~ ^/sites/.*/files/imagecache/ { # For Drupal <= 6
    location ~ ^/sites/.*/files/styles/ { # For Drpal >= 7
        try_files $uri @rewrite;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

Сохраните файл, создайте символическую ссылку в sites-enabled и перезапустите Nginx:

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

Шаг 7 — Установка и настройка Drupal

Установите git и drush. Drush — командная оболочка для управления Drupal:

sudo apt-get install git drush -y

Скачайте Drupal в каталог установки:

cd /var/www/drupal8
git clone --branch 8.0.x http://git.drupal.org/project/drupal.git

Или через drush:

drush dl drupal-8

Переместите файлы в корень сайта:

mv drupal/* /var/www/drupal8/

Настройте файлы конфигурации сайта. Перейдите в sites/default и скопируйте шаблонные файлы:

cd sites/default
cp default.settings.php settings.php
cp default.services.yml services.yml

Создайте директорию files и назначьте права на запись для установки:

mkdir files/
chmod a+w *

Откройте в браузере https://drupal8.me (или https://ваш_домен). Установщик Drupal предложит выбрать язык и профиль установки. В исходном примере была выбрана “English” и профиль “Standard”. На этом шаге укажите параметры подключения к базе данных (drupaldb, drupaluser и пароль), которые вы создали ранее.

Выбор языка при установке

Выбор профиля установки Drupal

Конфигурация базы данных для Drupal

Дождитесь завершения установки.

Процесс установки Drupal

Задайте параметры сайта: имя сайта, учётную запись администратора, email.

Конфигурация профиля сайта

После установки вы попадёте на стартовую страницу сайта.

Установка Drupal завершена

Если появится сообщение о правах доступа к файлам settings.php и services.yml, верните им более строгие права:

cd sites/default/
chmod 644 settings.php services.yml

Поздравляем — Drupal 8 установлен с Nginx и SSL на Ubuntu 15.10.

Проверка работоспособности и критерии приёмки

  • Сайт доступен по HTTPS и перенаправляет HTTP → HTTPS.
  • На главной странице отображается установленная тема Drupal.
  • Подключение к базе данных успешно (нет ошибок при установке и в журнале).
  • PHP-info файл удалён или перемещён (info.php не должен быть доступен в проде).
  • Права на settings.php и services.yml установлены как 644, директория sites/default/files доступна для записи сервером веб-приложений.

Быстрая проверка и отладка

  • Проверка конфигурации Nginx:
nginx -t
  • Журналы Nginx (ошибки и доступ):
journalctl -u nginx
tail -f /var/log/nginx/error.log
  • Проверка статуса php-fpm:
systemctl status php5-fpm
  • Проверка подключения к MariaDB:
mysql -u drupaluser -p -D drupaldb

Безопасность и рекомендации для продакшна

Important: для публичного сайта не используйте самоподписанные сертификаты. Используйте Let’s Encrypt или другой сертификационный центр.

Рекомендации:

  • Используйте защищённые пароли для учётных записей БД и админа Drupal.
  • Переключитесь на поддерживаемую версию Ubuntu LTS и актуальную версию PHP (PHP 7.x и выше) для лучшей производительности и безопасности.
  • Отключите доступ к info.php и другим временным файлам.
  • Ограничьте права на файлы и директории: settings.php и services.yml — 644, приватные ключи — 600.
  • Включите брандмауэр (ufw) и откройте только порты 80 и 443.
  • Регулярно обновляйте ядро Drupal и модули.

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

  • Вместо Nginx можно использовать Apache + PHP-FPM. Apache проще для некоторых конфигураций .htaccess, но Nginx даёт лучшую производительность в статических нагрузках.
  • Для управления зависимостями и развертывания на продакшне используйте Composer и инструментальную цепочку CI/CD.
  • Для SSL в автоматическом режиме применяйте Certbot от Let’s Encrypt.

Когда этот подход не подходит

  • Если вы разрабатываете проект на современных релизах PHP и Ubuntu, используйте пакеты для PHP 7.x и соответствующие настройки php-fpm (сокет и путь могут отличаться).
  • Для крупных корпоративных развёртываний рекомендуется кластеризация базы данных, балансировка нагрузки и отдельный сервер файлов (CDN) для медиа.

Чек-листы по ролям

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

  • Обновить систему и пакеты.
  • Установить Nginx и PHP-FPM.
  • Настроить SSL (рекомендованно — Let’s Encrypt).
  • Настроить брандмауэр и SELinux/AppArmor при необходимости.

Разработчик:

  • Установить Drush и Composer.
  • Настроить окружение разработки (Xdebug, IDE).
  • Проверить совместимость модулей и тем.

Системный интегратор / DevOps:

  • Настроить автоматические бэкапы БД и файлов.
  • Настроить мониторинг (uptime, метрики PHP‑FPM).
  • Настроить деплоймент (CI/CD), миграции конфигурации Drupal.

Быстрый чек‑лист команд (шпаргалка)

  • Проверка nginx: nginx -t
  • Перезапуск nginx: systemctl restart nginx
  • Проверка php-fpm: systemctl status php5-fpm
  • Запуск MariaDB: systemctl start mysql
  • Создание SSL: openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/drupal.key -out /etc/nginx/ssl/drupal.crt

Мини‑методология развертывания (6 шагов)

  1. Подготовить ОС и обновить пакеты.
  2. Установить веб‑сервер и интерпретатор PHP.
  3. Настроить виртуальный хост и PHP-FPM.
  4. Установить СУБД и создать базу/пользователя.
  5. Развернуть Drupal и выполнить установщик.
  6. Проверить доступность, настроить безопасность и мониторинг.

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

  • Главная страница сайта открывается по HTTPS без ошибок.
  • Страница авторизации Drupal доступна и функционирует.
  • Права на файлы корректны, и нет предупреждений в админке о записи файлов.
  • Резервное копирование БД и файлов настроено и протестировано.

Заключение

Drupal — гибкая и расширяемая CMS с богатой экосистемой модулей. Это руководство показывает базовую установку Drupal 8 с Nginx, PHP-FPM и MariaDB, а также настройку самоподписанного SSL для тестовых окружений. Для боевой эксплуатации адаптируйте версии PHP/OS к современным LTS‑релизам, используйте валидные SSL‑сертификаты и настройте регулярные обновления и бэкапы.

Дополнительные ресурсы и примечания

Notes:

  • Всегда заменяйте примерные пароли и домены на реальные значения для вашей инфраструктуры.
  • На современных дистрибутивах пути сокетов PHP‑FPM могут отличаться (/var/run/php/php7.х-fpm.sock). Проверьте конфигурацию php-fpm и fastcgi_pass.
  • Если вы планируете масштабировать сайт, рассмотрите использование CDN для статических файлов и кластеризации базы данных.
Поделиться: 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 быстро