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

Установка Drupal на Debian 12 — пошаговый гид

7 min read Drupal Обновлено 25 Nov 2025
Установка Drupal на Debian 12
Установка Drupal на Debian 12

Логотип Drupal и экран установки

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

Основные варианты запроса (SEO-интент)

  • Установка Drupal на Debian 12
  • Установка Drupal LAMP Debian
  • Drupal на Apache2 и MariaDB
  • Настройка SSL Letsencrypt для Drupal

Предварительные требования

Перед началом убедитесь, что у вас есть:

  • Сервер с Debian 12.
  • Непользователь root — учётная запись с правами администратора (sudo).
  • Доменное имя, указывающее на IP сервера.

Установка зависимостей

Drupal написан на PHP и использует MySQL/MariaDB. В этом разделе мы установим LAMP (Apache2, MariaDB, PHP), Composer и необходимые расширения PHP.

Обновите индекс пакетов Debian:

sudo apt update

Установите все пакеты сразу:

sudo apt install apache2 mariadb-server composer php php-apcu php-dev libapache2-mod-php libcurl4-openssl-dev php-cli php-mysql php-zip php-gd php-fpm php-json php-common php-intl php-mbstring php-curl php-xml php-pear php-tidy php-soap php-bcmath php-xmlrpc

Подтвердите установку, введя y при запросе.

После установки проверьте состояние сервисов и версий.

Проверка Apache2:

sudo systemctl is-enabled apache2
sudo systemctl status apache2

Проверка службы Apache2

Проверка MariaDB:

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

Проверка службы MariaDB

Проверка Composer:

which composer
sudo -u www-data composer -v

Вы должны увидеть установленный Composer 2.x, например расположение /usr/bin/composer.

Проверка Composer

Проверка PHP и модулей:

php -v
php -m

В руководстве используется PHP 8.2; убедитесь, что у вас установлена корректная версия и расширения включены.

Проверка PHP

Настройка MariaDB

Защитите установку MariaDB и создайте базу данных и пользователя для Drupal.

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

sudo mariadb-secure-installation

Во время процесса рекомендуем:

  • Нажать ENTER, если по умолчанию пароля нет.
  • Установить пароль для root (ответ Y).
  • Удалить анонимных пользователей (Y).
  • Отключить удалённый вход для root (Y).
  • Удалить тестовую базу данных (Y).
  • Перезагрузить привилегии (Y).

Затем войдите в MariaDB как root:

sudo mariadb -u root -p

Создайте базу данных и пользователя (замените пароль на надёжный):

CREATE DATABASE drupaldb;
CREATE USER drupal@localhost IDENTIFIED BY 'secure_password_here';
GRANT ALL ON drupaldb.* TO drupal@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;

Создание базы данных и пользователя

Проверьте привилегии пользователя:

SHOW GRANTS FOR drupal@localhost;

Проверка прав пользователя

Совет: в продакшн-среде давать минимально необходимые права. Для установки часто нужны широкие права, но в дальнейшем стоит ограничить привилегии.

Настройка PHP

Нам понадобятся дополнительные расширения, например uploadprogress, и правки в php.ini.

Установка расширения uploadprogress через PECL

Uploadprogress помогает отслеживать прогресс загрузки файлов. Установите его так:

sudo pecl install uploadprogress

Установка uploadprogress

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

cat <

Включите расширение для Apache2:

sudo ln -s /etc/php/8.2/mods-available/uploadprogress.ini /etc/php/8.2/apache2/conf.d/15-uploadprogress.ini

Включение uploadprogress

Правки в php.ini

Откройте конфигурацию PHP для Apache2:

sudo nano /etc/php/8.2/apache2/php.ini

Отредактируйте параметры под ваш сервер, например:

memory_limit = 512M
upload_max_filesize = 60M
max_execution_time = 300
date.timezone = Europe/Amsterdam

Совет: установите date.timezone в вашу локальную временную зону, например Europe/Moscow.

Перезапустите Apache:

sudo systemctl restart apache2

Создайте тестовую страницу phpinfo:

cat <
EOF

Откройте http://SERVER_IP/info.php и убедитесь, что конфигурация применена.

phpinfo

Загрузка исходников Drupal

Скачайте последний релиз Drupal и распакуйте его в /var/www/drupal.

cd /var/www/
wget https://www.drupal.org/download-latest/tar.gz -O drupal.tar.gz

tar -xvf drupal.tar.gz
mv drupal-* /var/www/drupal

Установите владельца и права:

sudo chown -R www-data:www-data /var/www/drupal/
sudo chmod -R 755 /var/www/drupal/

Конфигурация виртуального хоста Apache2

Включите обязательные модули:

sudo a2enmod rewrite ssl headers deflate

Включение модулей Apache2

Создайте файл виртуального хоста /etc/apache2/sites-available/drupal.conf:

sudo nano /etc/apache2/sites-available/drupal.conf

Вставьте конфигурацию (замените ServerName на ваш домен):



    ServerName howtoforge.local
    ServerAdmin admin@domain.tld
    DocumentRoot /var/www/drupal

    # Add security
    php_flag register_globals off

    ErrorLog ${APACHE_LOG_DIR}/howtoforge.local.error.log
    CustomLog ${APACHE_LOG_DIR}/howtoforge.local.access.log combined

    
      SSLOptions +StdEnvVars
    

    
        Options FollowSymlinks
        AllowOverride All
        Require all granted
        
            SecRuleEngine Off
        
    

    
        RewriteEngine on
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
    

Активируйте сайт и проверьте синтаксис конфигурации Apache:

sudo a2ensite drupal.conf
sudo apachectl configtest

При успешной проверке увидите “Syntax OK”.

Активация виртуального хоста

Перезапустите Apache:

sudo systemctl restart apache2

SSL/TLS через Let’s Encrypt

Установите Certbot и плагин для Apache:

sudo apt install certbot python3-certbot-apache

Установка Certbot

Сгенерируйте сертификат (замените email и домен):

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email admin@domain.tld -d howtoforge.local

После завершения сертификаты будут в /etc/letsencrypt/live/domain.com, а сайт автоматически настроится на HTTPS.

Важно: убедитесь, что порт 80 и 443 открыты в фаерволе и что DNS указывает на сервер.

Установка Drupal через веб-инсталлятор

Откройте ваш домен в браузере, например https://howtoforge.local/. Установка должна запуститься автоматически и предложить выбрать язык.

Выберите профиль установки. Для большинства случаев подходит “Standard”.

Выбор языка

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

Когда инсталлятор проверит окружение, введите данные базы данных (drupaldb, drupal, ваш пароль) и продолжите.

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

Следуйте процессу установки; после завершения настройте параметры сайта: название, email, пользователя admin, страну и часовой пояс.

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

Успешная установка отобразит сообщение «Поздравляем, вы установили Drupal!».

Drupal установлен

Перейдите в раздел “Manage” → “Configuration” чтобы продолжить настройку сайта.

Управление сайтом

Дополнительная конфигурация Drupal

Установив Drupal, выполните несколько финальных настроек.

Измените права и отредактируйте settings.php:

sudo chmod 644 /var/www/drupal/sites/default/settings.php
sudo nano /var/www/drupal/sites/default/settings.php

Найдите секцию trusted_host_patterns и укажите ваш домен:

$settings['trusted_host_patterns'] = [
  '^hwdomain\.io$',
];

Сохраните и сделайте файл только для чтения:

sudo chmod 444 /var/www/drupal/sites/default/settings.php

Проверьте отчёты состояния в админке: Reports → Status reports.

Отчёт о состоянии

Вы увидите версии компонентов — пример: Drupal 10, Apache2 2.4, MariaDB 10.11, PHP 8.2.

Детали состояния

Детали окружения

Безопасность и жёсткая конфигурация (Security hardening)

Ключевые меры для повышения безопасности сайта:

  • Регулярно обновляйте ядро Drupal и модули через Composer.
  • Отключите перечисление директорий (Options -Indexes) в виртуальном хосте.
  • Ограничьте доступ к /sites/default/files через правила .htaccess при необходимости.
  • Используйте сильные пароли и двухфакторную аутентификацию для админов.
  • Настройте WAF (Web Application Firewall) и модуль мод_security для Apache.
  • Настройте регулярные бэкапы базы и файлов.
  • Защитите доступ к SSH: ключи, отключение пароля, ограничение логинов.
  • Ограничьте привилегии MariaDB в продакшне.

Пример правила в Apache для отключения индексации:


    Options -Indexes +FollowSymlinks

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

Рекомендуемый минимум:

  • Ежедневные дампы базы данных (mysqldump или mariadb-dump).
  • Инкрементальные резервные копии папки sites/default/files.
  • Хранилище бэкапов вне сервера (S3, удалённый NAS или другой дата-центр).

Пример простого бэкап-скрипта (cron):

#!/bin/bash
DATE=$(date +%F)
# дамп БД
mysqldump -u root -p'ROOT_PASS' drupaldb > /var/backups/drupaldb_$DATE.sql
# архив файлов
tar -czf /var/backups/drupal_files_$DATE.tar.gz -C /var/www/drupal/sites/default/files .
# удаление старых бэкапов старше 30 дней
find /var/backups -type f -mtime +30 -delete

Критерии приёмки: успешный бэкап может быть восстановлен на тестовом сервере и сайт работает корректно.

Обслуживание сертификатов и автоматическое продление

Certbot автоматически настраивает системный cron или systemd таймер для обновления сертификатов. Проверьте симуляцию продления:

sudo certbot renew --dry-run

Если возникли ошибки, проверьте логи /var/log/letsencrypt/.

Производительность и кэширование

Улучшения производительности:

  • Включите кэширование на уровне Drupal (Internal Page Cache, Dynamic Page Cache).
  • Используйте Redis или Memcached для кэширования сессий и кеш-слоёв.
  • Включите OPCache для PHP (обычно уже установлено с PHP-FPM/CLI).
  • Настройте сжатие и сжатие Brotli/Gzip на Apache.
  • Используйте CDN для статических файлов.

Пример включения модулей кэша в Drupal: через интерфейс или Drush (если установлен).

Composer: лучшие практики

  • Управляйте зависимостями Drupal через Composer. Не копируйте код модулей вручную.
  • Репозиторий проекта должен включать composer.json и composer.lock.
  • В рабочем процессе CI собирайте артефакт и деплойте на продакшн без выполнения composer install на проде (рекомендация для предсказуемого релиза).

План обновлений и миграции

  • Перед обновлением ядра или модуля создавайте бэкап БД и файлов.
  • Тестируйте обновления на копии продакшна.
  • Используйте режим обслуживания при обновлениях.

Отладка: распространённые ошибки и решения

  1. Белый экран или 500 Internal Server Error
  • Проверьте логи Apache (/var/log/apache2/error.log).
  • Убедитесь, что права доступа к файлам верны.
  • Проверьте PHP-расширения и память (memory_limit).
  1. Ошибка подключения к БД
  • Проверьте правильность параметров в settings.php.
  • Убедитесь, что пользователь базы имеет нужные права.
  1. Ошибки сертификата или редиректа
  • Проверьте, что домен правильно настроен в виртуальном хосте и в Certbot.
  • Запустите certbot renew –dry-run, чтобы смоделировать продление.

Роли и контрольный список (Role-based checklists)

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

  • Установил и настроил Apache/MariaDB/PHP.
  • Настроил SSL и firewall.
  • Организовал бэкапы и мониторинг.

Веб-разработчик:

  • Развернул проект и управляет зависимостями через Composer.
  • Провёл тестирование миграций и обновлений.

Контент-менеджер:

  • Создал структуру контента.
  • Настроил права ролей в Drupal.

Мини-процедура развёртывания (SOP)

  1. Подготовка: бэкап базы и файлов.
  2. Перевод сайта в режим обслуживания.
  3. Применение Composer обновлений на тесте.
  4. Обновление на продакшне, миграция БД (если требуется).
  5. Проверка логов и тестовой страницы.
  6. Вывод сайта из режима обслуживания.

Тесты приёмки

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

Дополнительные замечания по локализации и GDPR

  • Если сайт обрабатывает персональные данные, обеспечьте документацию GDPR: политика конфиденциальности, соглашение на хранение cookies.
  • Локальные альтернативы и риски: для России популярны решения хранения бэкапов на локальных ресурсах с учётом законодательства.

Частые ошибки при миграции с другой CMS

  • Неполные экспорт-импорты данных — проверьте соответствие полей.
  • Проблемы с кодировкой — убедитесь в UTF-8 и корректных заголовках.

Заключение

Вы установили Drupal на сервер Debian 12 с LAMP и настроили HTTPS через Let’s Encrypt. Дальше рекомендуем:

  • Настроить регулярные обновления и мониторинг.
  • Настроить автоматические бэкапы и тестирование восстановления.
  • Внедрить меры безопасности, описанные выше.

Краткие рекомендации: держите систему и модули в актуальном состоянии, используйте проверенные модули и управляйте зависимостями через Composer.

Важно: эта инструкция даёт практическое руководство для развёртывания типичного сайта на Drupal. В сложных корпоративных сценариях потребуется дополнительная архитектура (балансировщики, кластерные базы, CI/CD).

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

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

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство