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

Установка Drupal 9 на Ubuntu 22.04: подробный LAMP‑гайд

6 min read Drupal Обновлено 25 Nov 2025
Drupal 9 на Ubuntu 22.04: установка и настройка
Drupal 9 на Ubuntu 22.04: установка и настройка

Коротко: пошаговый практический гид по установке Drupal 9 на Ubuntu 22.04 с использованием стека LAMP (Apache, MariaDB, PHP 8.1) и Composer. Описаны настройка виртуального хоста Apache, создание базы данных, конфигурация PHP (включая расширение uploadprogress), базовая безопасность (SSL, trusted_host) и контрольные списки для запуска в production.

В этом руководстве вы найдёте полную процедуру установки, рекомендации по безопасности и эксплуатационные заметки: альтернативы (Nginx), сценарии отката, тесты приёмки и шаблоны чек‑листов для ролей. Если вам нужен быстрый результат — следуйте основному сценарию. Если готовите продакшн — применяйте разделы «Безопасность», «Резервное копирование» и «Мониторинг».

О чём этот материал

Этот материал назначен для системных администраторов, DevOps‑инженеров и разработчиков, которым нужно развернуть Drupal 9 на Ubuntu 22.04. Он включает:

  • подготовку сервера и требуемые пакеты;
  • установку Apache, MariaDB, PHP 8.1 и Composer;
  • установку и настройку Drupal (через Composer или архив);
  • конфигурацию виртуального хоста и SSL;
  • рекомендации по безопасности, резервному копированию и производительности;
  • операционные чек‑листы, runbook для инцидентов и тест‑кейсы приёмки.

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

Кому подходит этот гид

  • Новичкам, которые знакомы с Linux и хотят понять весь процесс установки Drupal на Ubuntu 22.04.
  • Инженерам, которые настраивают небольшие и средние инфраструктуры и нуждаются в проверяемом SOP.
  • Тем, кто переносит сайт на новую систему и нуждается в чек‑листах запусках и откате.

Important

Перед началом убедитесь, что у вас есть резервная копия любых важных данных и возможность доступа к консоли сервера (SSH), а также права sudo.


Основные понятия (в одну строку)

  • Drupal: CMS на PHP с модульной архитектурой для построения сайтов разной сложности.
  • LAMP: Linux + Apache + MariaDB/MySQL + PHP — классический стек для PHP‑приложений.
  • Composer: менеджер зависимостей для PHP.

Ключевые требования и предпосылки

Перед началом подготовьте:

  • Сервер с Ubuntu 22.04 (локальный или облачный). В примерах используется хостнейм server-ubuntu.
  • Ненулевой пользователь с sudo (не работайте под root для рутинных операций).
  • Домены, указывающие на IP сервера (A/AAAA записи) для HTTPS.
  • Доступ в интернет для загрузки пакетов и Composer‑зависимостей.

Совет: для тестов локально можно использовать /etc/hosts, но для production обязательно настройте корректные DNS‑записи.

Архитектурная схема установки (коротко)

  • Веб‑сервер: Apache (mod_php) или альтернативно Nginx + php‑fpm.
  • БД: MariaDB (совместима с MySQL) — база для Drupal.
  • PHP: 8.1 (рекомендуется) с набором расширений.
  • Composer: установка внешних PHP‑пакетов и модулей.
  • SSL: LetsEncrypt или коммерческий сертификат.

Ментальная модель: представьте сайт как трёхслойную систему — «веб» (Apache), «логика» (PHP + модули) и «данные» (MariaDB). Обеспечьте безопасность и надёжность для каждого слоя.


Установка Apache2 (шаг за шагом)

Apache — популярный выбор для Drupal; альтернативой является Nginx. Выполните обновление индекса пакетов:

sudo apt update

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

sudo apt install apache2

![Установка Apache2](/files/d8b5ef5f-0bb1-4db0-8341-8a827d35c1d2.png)

Проверка статуса и включения службы:

sudo systemctl is-enabled apache2
sudo systemctl status apache2


![Проверка статуса Apache2](/files/69dd559f-ea06-4b2c-a7ef-600c3f430f56.png)

Настройка UFW для доступа по HTTP/HTTPS:

sudo ufw allow “Apache Full”
sudo ufw status


![Настройка UFW для Apache](/files/37a769b2-6427-4681-8293-1ec80eb6ebb4.png)

Notes

- Если вы используете облачный провайдер, дополнительно откройте порты в панели провайдера.
- Для высокой нагрузки рассмотрите front‑proxy (NGINX/HAProxy) перед Apache.

---

## Установка MariaDB и базовая безопасность

Drupal поддерживает MySQL/MariaDB, PostgreSQL и SQLite. В этом примере — MariaDB.

Установка MariaDB:

sudo apt install mariadb-server mariadb-client


![Установка MariaDB](/files/4864a8b6-30aa-4d06-9063-e57c5a7c869d.png)

Проверка статуса сервиса:

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb


![Проверка MariaDB](/files/99fef49f-7204-452d-ad75-2ce8b431179e.png)

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

sudo mysql_secure_installation


Следуйте подсказкам: установите root‑пароль, удалите анонимных пользователей, удалите тестовую базу, запретите удалённый вход для root, перезагрузите таблицы привилегий.

Создание базы данных и пользователя для Drupal (в примере: drupaldb / drupal / password — замените реальные значения):

sudo mysql -u root -p

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


![Создание базы данных](/files/ca1a4eda-7552-47a1-9c34-2cdc17f02b6c.png)

Проверка прав и выход:

SHOW GRANTS FOR drupal@localhost;
quit


![Проверка привилегий пользователя](/files/1eb85fff-cc17-4015-a0ba-d8ea13b1595c.png)

Совет безопасности

- Используйте сложные пароли и храните их в менеджере секретов.
- Для production окружений рассмотрите выделение отдельного сервера баз данных или использование управляемых СУБД.

---

## Установка и настройка PHP 8.1 и расширений

Drupal 9 рекомендует PHP 8.x. Установим PHP 8.1 и часто требуемые расширения:

sudo apt install 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


![Установка PHP и расширений](/files/8be184f7-b3f0-4999-999f-fddca117f3a3.png)

Установка расширения uploadprogress из PECL (нужно для отслеживания прогресса загрузки файлов в Drupal):

sudo pecl install uploadprogress


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

cat <; configuration for php uploadprogress module
; priority 15
extension=uploadprogress.so
EOF


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

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


![Настройка расширений PHP](/files/451f597d-ee28-4adb-aafc-8b85dfa0f980.png)

Настройка php.ini

Откройте файл php.ini для Apache:

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


Измените параметры в соответствии с ресурсами сервера и требованиями сайта, например:

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


Перезапустите Apache, чтобы применить изменения:

sudo systemctl restart apache2


Проверка phpinfo (создаётся временный файл info.php):

cat <phpinfo();
?>
EOF


Откройте http://YOUR_SERVER_IP/info.php чтобы убедиться, что PHP работает корректно.

Примечание

- Не оставляйте info.php в production — удалите после отладки.
- Для больших сайтов рассмотрите использование OPcache, Redis/Memcached и настройки PHP‑FPM с Nginx.

---

## Установка Composer

Composer используется для управления зависимостями PHP и часто применяется при установке Drupal.

php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”
php -r “if (hash_file(‘sha384’, ‘composer-setup.php’) === ‘55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae’) { echo ‘Installer verified’; } else { echo ‘Installer corrupt’; unlink(‘composer-setup.php’); } echo PHP_EOL;”
php composer-setup.php
php -r “unlink(‘composer-setup.php’);”


После установки переместите бинарь для глобального использования:

sudo mv composer.phar /usr/local/bin/composer


Проверка:

composer –help


![Установка Composer](/files/56b6090c-c612-4e78-9b79-5fe923fd79dd.png)

Совет

- Обновляйте Composer периодически (composer self-update) и следите за совместимостью пакетов.

---

## Скачивание и установка Drupal

Можно установить Drupal двумя способами: распаковкой архива (как в этом руководстве) или с помощью Composer (рекомендуется для продакшн с кастомными модулями).

Скачивание архива и распаковка:

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/


Установка зависимостей через Composer (если вы использовали архив, всё равно полезно):

cd /var/www/drupal
sudo -u www-data composer install –no-dev


Замечание

- Альтернатива: создать проект через Composer (drupal/recommended-project) — удобнее для управления модулями.

---

## Настройка виртуального хоста Apache для Drupal

Включите необходимые модули Apache:

sudo a2enmod rewrite ssl headers deflate


![Включение модулей Apache](/files/70b28529-bf60-447e-b051-f51d069bfc39.png)

Создайте конфигурацию сайта /etc/apache2/sites-available/drupal.conf и адаптируйте домены и пути к SSL:

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


Вставьте конфигурацию (в примере — howtoforge.local):
ServerName howtoforge.local ServerAdmin [email protected] # Redirect Requests to SSL Redirect permanent "/" "https://howtoforge.local/" ErrorLog ${APACHE_LOG_DIR}/howtoforge.local.error.log CustomLog ${APACHE_LOG_DIR}/howtoforge.local.access.log combined ServerName howtoforge.local ServerAdmin [email protected] 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 SSLEngine on SSLCertificateFile /etc/letsencrypt/live/howtoforge.local/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/howtoforge.local/privkey.pem SSLOptions +StdEnvVars Options FollowSymlinks #Allow .htaccess AllowOverride All Require all granted SecRuleEngine Off # or disable only problematic rules RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

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

sudo a2ensite drupal.conf
sudo apachectl configtest


![Активация виртуального хоста Apache](/files/687c08e6-5258-42bb-a4de-28081cdb6e76.png)

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

sudo systemctl restart apache2


Совет

- Если используете Let's Encrypt, предварительно получите сертификат (certbot) и обновите пути SSLCertificateFile.
- Для мультисайтовой установки Drupal виртуальные хосты настроите для каждого домена с отдельными settings.php или симлинками sites/.

---

## Запуск веб‑установщика Drupal

Откройте в браузере https://YOUR_DOMAIN/ (пример: https://howtoforge.local/). Следуйте мастеру:

1. Выберите язык и профиль установки (Standard рекомендуется для начинающих).
2. Введите параметры базы данных (drupaldb, drupal, пароль).
3. Дождитесь завершения установки модулей и импорта конфигурации.
4. Создайте администратора сайта и базовые параметры сайта.

![Выбор языка](/files/c672679f-7ba2-412d-9ce0-420b625bb038.png)

![Выбор профиля установки](/files/4330497b-edd5-41e1-80cf-bd659e008090.png)

![Настройка базы данных](/files/9bb270f5-19e9-47b5-9efc-24a27f8ff85b.png)

![Установка Drupal](/files/2b6bd55b-a92d-41b9-8c6f-5b71d8eb7af0.png)

![Настройка сайта](/files/2de14283-1897-4534-85f4-cb089258cbdd.png)

После успешной установки вы увидите подтверждение:

![Завершение установки Drupal](/files/7fa8bf93-3928-4219-a94f-83b589896db9.png)

---

## Настройка trusted_host_patterns

Для защиты от атак с подменой заголовка Host настройте trusted_host_patterns в 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


Проверьте отчёт состояния сайта: https://YOUR_DOMAIN/admin/reports/status

![Статус Drupal](/files/9c3b291b-039d-4348-965e-c27931a2f4d0.png)

![Статус и включённые параметры Upload Progress](/files/604c4f96-1f7e-4c91-887f-df7a3be1dc9f.png)

Совет

- Для нескольких доменов включите соответствующие шаблоны в trusted_host_patterns.

---

## Безопасность и hardening (необходимые шаги)

1. SSL: используйте Let's Encrypt (certbot) или коммерческие сертификаты. Автоматизируйте продление (cron или systemd timer).
2. Права на файлы: каталоги с пользовательскими файлами (sites/default/files) должны быть записываемы веб‑сервером; остальные файлы — только для чтения.
3. Отключите показ ошибок PHP в production (display_errors = Off).
4. Ограничьте доступ к /core, /vendor если возможно (правильные правила в .htaccess или конфиге сервера).
5. Регулярно обновляйте ядро и модули Drupal.
6. Включите брандмауэр UFW и мониторинг логов.
7. Настройте регулярную проверку целостности (drush pm‑security, Composer audit, внешние сканеры).

Рекомендации по файлам и правам

- settings.php — 444 (только чтение).
- sites/default/files — 755 или 775, владелец www-data.

---

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

Резервные копии должны включать:

- Полную копию базы данных (mysqldump или инструмент СУБД).
- Дерево сайта (sites/default/files, конфиги, custom modules/themes).
- composer.json и composer.lock.

Пример резервного дампа базы:

mysqldump -u root -p drupaldb > drupaldb.sql


Шаблон простой политики бэкапа:

- Full backup — еженедельно, хранить 4–8 копий.
- Incremental (данные/файлы) — ежедневно.
- Тест восстановления — ежемесячно на копии окружения.

Runbook восстановления (коротко)

1. Остановить веб‑сервер (при необходимости): sudo systemctl stop apache2
2. Восстановить файлы (tar/rsync).
3. Восстановить базу: mysql -u root -p drupaldb < drupaldb.sql
4. Проверить права и владельца файлов.
5. Запустить сервисы и проверить сайт.

---

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

1. Включите OPcache (обычно в PHP‑пакете) и настройте параметры opcache.memory_consumption, opcache.max_accelerated_files.
2. Включите внутренний кэш Drupal — драйвер кеша (APCu/Redis/Memcached) в зависимости от нагрузки.
3. Используйте агрегирование CSS/JS в настройках Drupal.
4. Разместите статические ресурсы за Nginx/Cloud CDN для ускорения доставки.

Короткая шпаргалка по кешам

- APCu — быстрый локальный кэш для одного веб‑узла.
- Redis/Memcached — распределённый кэш, подходит для кластеров.

---

## Мониторинг и оповещения

Рекомендуемые метрики:

- Доступность HTTP(S) — uptime мониторинг.
- Время ответа приложения (95/99‑й процентиль).
- Нагрузка CPU, использование памяти, диск I/O.
- Размер и рост таблиц БД.
- Ошибки в логах Apache и PHP.

Инструменты: Prometheus + Grafana, Zabbix, Datadog, NewRelic.

---

## Отладка и частые проблемы

1. 500 Internal Server Error — проверьте логи Apache (/var/log/apache2/error.log) и права файлов.
2. Проблемы с подключением к БД — проверьте host, порт, пользователя и права; убедитесь, что MariaDB слушает локально/на нужном интерфейсе.
3. Ошибки Composer — проверьте версии PHP и расширений; запустите composer install как пользователь www-data.
4. Ошибки HTTPS — проверьте корректность цепочки сертификатов и пути в конфиге виртуального хоста.

Точечный пример поиска проблемы с файлами

- Проверьте права на sites/default/files — если Drupal не может записать файл, загрузки будут падать.
- Просмотрите watchdog (в админке) и логи в /var/log/apache2/.

---

## Альтернативные подходы (когда не подходит этот сценарий)

- Nginx + PHP‑FPM: более высокая экономичность по памяти при высокой нагрузке и лучшая интеграция с HTTP/2 и TLS.
- Managed hosting (Acquia, Platform.sh, Pantheon): избавляет от управления инфраструктурой, но требует адаптации процессов разработки.
- Docker/Kubernetes: полезно для CI/CD и масштабирования, но добавляет сложность в сетевые и файловые права.

Когда выбирать альтернативу

- Используйте Nginx для высокой нагрузки и если вы готовы настраивать php‑fpm.
- Выбирайте managed решения при ограниченных ресурсах DevOps или при требовании SLA.
- Docker подходит для единообразных окружений и многоконтейнерных развёртываний.

---

## Совместимость, миграция и обновления

- Проверяйте совместимость модулей при обновлении ядра Drupal.
- Перед обновлением ядра или больших модулей сделайте тестовый деплой и бэкап БД и файлов.
- Composer‑подход облегчает обновления зависимостей и управление версиями.

Краткий чек‑лист миграции

1. Сделать полный бэкап текущей системы.
2. Развернуть тестовую копию и прогнать миграцию/обновление.
3. Прогнать тест‑кейсы (см. ниже).
4. Планировать окно обслуживания для продакшн‑обновления.

---

## Критерии приёмки (Test cases / Acceptance criteria)

1. Сайт доступен по HTTPS, сертификат валиден.
2. Пользователь‑администратор может войти и создать материал (node).
3. Файловые загрузки работают, прогресс отображается.
4. База данных отвечает на запросы, нет критических ошибок в логах.
5. Все критические модули загружены и активны.

---

## Роль‑ориентированные чек‑листы

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

- [ ] Обновление пакетов (apt update/upgrade).
- [ ] Настройка брандмауэра и правил доступа.
- [ ] Настройка автоматических резервных копий.

Разработчик

- [ ] Проверка composer.json и composer.lock.
- [ ] Локальное тестирование функциональности.
- [ ] Проверка кода модулей на совместимость с PHP 8.1.

DevOps / Release engineer

- [ ] Прогон миграции на staging.
- [ ] План отката и тест восстановления.
- [ ] Мониторинг после релиза.

---

## Playbook установки (сводный SOP)

1. Подготовка окружения: обновление apt, настройка часов, DNS.
2. Установка Apache, MariaDB, PHP и Composer (как описано выше).
3. Создание БД и пользователя.
4. Разворачивание Drupal (архив или Composer) и установка зависимостей.
5. Настройка виртуального хоста и SSL.
6. Запуск веб‑инсталлятора и первичная настройка сайта.
7. Настройка trusted_host_patterns и прав доступа.
8. Тестирование (приёмочные тесты) и перевод в production.

---

## Runbook / Откат при инциденте

Симптом: сайт недоступен после обновления.

1. Откат конфигураций Apache (a2dissite, перезапуск) — если проблема в виртуалхосте.
2. Восстановление базы из последнего бэкапа (mysqldump).
3. Восстановление файлов (tar/rsync).
4. Перезапуск сервисов и проверка логов.
5. Если ошибка в обновлении модулей — восстановить composer.lock и выполнить composer install.

---

## Советы по безопасности GDPR и приватности

- Храните персональные данные в базе согласно политикам хранения и удаления.
- Ограничьте доступ к админке по IP или через VPN для администраторов.
- Используйте HTTPS везде и HSTS для защиты от MITM.
- Логи с персональными данными анонимизируйте/маскируйте при необходимости.

---

## Шаблоны и примеры команд (чек‑лист быстрого запуска)

- Обновление системы:

sudo apt update && sudo apt upgrade -y


- Создание дампа БД:

mysqldump -u root -p drupaldb > /backups/drupaldb-$(date +%F).sql


- Резервирование файлов:

tar -czf /backups/drupal_files-$(date +%F).tar.gz /var/www/drupal/sites/default/files


---

## Когда этот подход не подойдёт (контрпример)

- Если вам нужен горизонтальный autoscale с шарингом файловой системы — лучше использовать object storage (S3/Swift) и Redis/DB‑кластер.
- Если управление инфраструктурой должно быть полностью аутсорснуто — выбирайте managed‑platform.

---

## Краткий набор ключевых чисел (факт‑бокс)

- Целевая ОС: Ubuntu 22.04 LTS
- Рекомендуемая версия PHP: 8.1
- MariaDB в репозиториях Ubuntu 22.04 обычно в версии 10.6
- Обычные права: 755 для директорий, settings.php — 444

---

## Социальные тексты и анонс

OG title: Drupal 9 на Ubuntu 22.04 — установка и настройка

OG description: Пошаговый LAMP‑гайд по установке Drupal 9 с Apache, MariaDB, PHP 8.1 и Composer. Включает безопасность, резервное копирование и чек‑листы.

Короткий анонс (100–200 слов):

Публикация быстрого запуска: этот подробный материал проведёт вас через установку Drupal 9 на Ubuntu 22.04. Вы пройдёте все этапы: Apache, MariaDB, PHP 8.1, настройку виртуального хоста и SSL, а также узнаете о лучших практиках безопасности, резервном копировании и мониторинге. В конце — готовые чек‑листы и runbook для запуска в production.

---

## Итоги

Вы установили Drupal 9 на Ubuntu 22.04, настроили LAMP‑стек, Composer и базовые параметры безопасности. Для вывода в production:

- примените SSL и автоматическое обновление сертификатов;
- настройте резервные копии и мониторинг;
- протестируйте сценарии восстановления и отката.

Summary

- Drupal развёрнут в DocumentRoot /var/www/drupal и доступен по HTTPS.
- Настроены PHP 8.1, расширение uploadprogress, MariaDB и виртуальный хост Apache.
- Приведены чек‑листы, runbook и критерии приёмки для безопасного запуска.

Дополнительные шаги (рекомендуется): интеграция CI/CD, использование Composer‑подхода для управления зависимостями и миграция файлов в объектное хранилище для масштабируемости.

Important

Удалите временные файлы (phpinfo, composer.phar в рабочей папке) и примените все правки к конфигурации под ваши реальные домены и требования безопасности.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Обновление видеодрайвера для Rainbow Six Siege
Windows

Обновление видеодрайвера для Rainbow Six Siege

Ограничение частоты запросов в ASP.NET Core
Backend

Ограничение частоты запросов в ASP.NET Core

Исправление лагов Android: TRIM и LagFix
Mobile

Исправление лагов Android: TRIM и LagFix

Семафоры в Bash: что это и как реализовать
Bash

Семафоры в Bash: что это и как реализовать

Что делать при перегреве PS5
Гайды

Что делать при перегреве PS5

Разбить и собрать большие файлы — лучшие инструменты
Утилиты

Разбить и собрать большие файлы — лучшие инструменты