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

Установка 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
Автор
Редакция

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

Обновить Cube WP10 до Anniversary Update
Мобильные устройства

Обновить Cube WP10 до Anniversary Update

Как проверить, запущен ли Docker daemon
DevOps

Как проверить, запущен ли Docker daemon

Как запланировать твит в Twitter
соцсети

Как запланировать твит в Twitter

docker cp — копирование файлов между хостом и контейнером
Docker

docker cp — копирование файлов между хостом и контейнером

Копирование файлов по SSH без пароля
Сеть

Копирование файлов по SSH без пароля

Создайте собственные обои: от съёмки до готового фона
Фото

Создайте собственные обои: от съёмки до готового фона