Установка и оптимизация Drupal

Drupal представляет собой высокопроизводительную, гибкую и масштабируемую систему управления контентом (CMS) с открытым исходным кодом. Эта платформа зарекомендовала себя как идеальное решение для создания сложных корпоративных порталов, медиа-ресурсов и высоконагруженных веб-приложений. Она ценится за свою исключительную надежность, высокий уровень безопасности и обширные возможности для кастомизации, формируя прочную основу для реализации самых амбициозных цифровых проектов.

Drupal 11, как самая актуальная стабильная версия, демонстрирует значительный прогресс в развитии платформы. Основное внимание в ней уделено повышению масштабируемости и усилению безопасности, что достигается за счет внедрения ряда мощных функций. Одним из ключевых нововведений являются стабильные Directory Components (SDC), которые централизуют код компонентов. Это способствует созданию самодостаточных и многократно используемых элементов, существенно упрощая процесс фронтенд-разработки.

Пользователи Drupal 11 также оценят улучшенный административный интерфейс, который включает новый модуль навигации и современную тему Claro, пришедшую на смену устаревшей Seven. В долгосрочной перспективе, к 2025 году, планируется интеграция темы Gin, что еще больше повысит удобство использования. Важным аспектом Drupal 11 является его переход на современный технологический стек, включающий Symfony 7, PHP 8.3, PHPUnit 10 и jQuery 4. Этот шаг обеспечивает актуальность платформы, повышает её производительность и совместимость с новейшими веб-стандартами.

Платформа также предлагает улучшенные рабочие области (Workspaces), которые предоставляют мощный набор инструментов для эффективного стейджинга и управления изменениями контента. Разработчики Drupal демонстрируют приверженность непрерывным инновациям, обещая выпуск новых мощных функций каждые шесть месяцев. Этот подход к развитию гарантирует, что Drupal остается на переднем крае технологий, постоянно адаптируясь к меняющимся требованиям веб-среды. Кроме того, проект акцентирует внимание на упрощении процессов обновления, что минимизирует сложности и снижает риски при поддержании актуальности системы. Например, версия Drupal 11.2.0 уже включает такие улучшения, как более быстрая установка, объектно-ориентированные хуки и встроенная поддержка формата изображений AVIF.

Выбор Drupal 11 не только предоставляет доступ к передовым функциям, но и представляет собой стратегическое вложение в долгосрочную перспективу, обеспечивая надежную и масштабируемую основу для цифровых проектов. Переход на PHP 8.3 и другие обновленные зависимости является фундаментальным решением, которое позволяет Drupal использовать последние достижения в экосистеме PHP. Это, в свою очередь, приводит к значительному улучшению производительности, повышению уровня безопасности и обогащению опыта разработчиков, поскольку они могут применять современные возможности языка и инструментарий. Это также означает, что администраторам серверов крайне важно поддерживать свои среды в актуальном состоянии, поскольку совместимость со старыми версиями PHP явно прекращена.



Содержание

Системные требования для Drupal 11: готовим фундамент

Для успешной установки и стабильной работы Drupal 11 ваш сервер должен соответствовать определенным спецификациям. Эти требования обеспечивают совместимость с современным стеком технологий, на котором построена платформа, и формируют фундамент для надежной работы вашего сайта.

Детально о версиях PHP, баз данных, Composer и Drush

  • PHP: Drupal 11 строго требует PHP 8.3 или новее. Более старые версии PHP не поддерживаются. PHP 8.3 значительно превосходит предыдущие версии по скорости и безопасности. Важно отметить, что с версии Drupal 9.4 и выше принята политика автоматического прекращения поддержки версий PHP, которые достигли окончания жизненного цикла (End of Life). Это подчеркивает необходимость постоянной актуализации PHP на сервере. Если текущая серверная среда не соответствует этим требованиям, обязательное обновление стека сервера является первым и критически важным шагом перед попыткой установки Drupal 11. Это предотвращает немедленные сбои и экономит время на устранение неполадок.
  • База данных: Drupal 11 поддерживает несколько систем управления базами данных, каждая из которых имеет свои минимальные требования к версии:
    • MySQL: 8.0 или выше.
    • MariaDB: 10.6 или выше.
    • PostgreSQL: 16 или выше, с обязательным включением расширения pg_trgm.
    • SQLite: 3.45 или выше, с обязательным расширением json1.

⚠️Для MySQL и MariaDB рекомендуется использовать движок InnoDB как основной, что обеспечивает целостность данных и высокую производительность. База данных должна быть создана с кодировкой UTF-8 (Unicode), например utf8_general_ci или utf8mb4_unicode_ci, для полной поддержки различных символов.

  • Веб-сервер: Drupal 11 совместим с Apache 2.4.7 или выше, Nginx 1.1 или выше, а также с любыми другими веб-серверами, обеспечивающими надлежащую поддержку PHP. Важным изменением в Drupal 11 является полное удаление поддержки IIS (Internet Information Services). Это означает, что пользователям, использующим IIS, необходимо перейти на поддерживаемый веб-сервер (Apache или Nginx). Такое решение со стороны проекта Drupal указывает на четкое стратегическое направление в сторону экосистемы открытых исходных кодов, основанной на Linux, что является значительным архитектурным изменением для пользователей Windows Server и может потребовать перестройки инфраструктуры и развития новых компетенций.
  • Composer: Для эффективного управления зависимостями Drupal 11 требует Composer 2.7.7 или новее. Версия Composer 2.7.0 или более поздняя является обязательной из-за критического исправления безопасности, выпущенного в феврале 2024 года.
  • Drush: Если планируется использовать Drush для управления сайтом через командную строку, необходима версия 13 или новее.

Необходимые расширения PHP

Для корректной работы Drupal 11 требуются следующие PHP расширения: PDO, XML, GD-library, OpenSSL, JSON, cURL, Mbstring, zlib. Расширение PDO является обязательным для установки и функционирования. Расширение Zlib часто включено по умолчанию в большинстве систем.

Требования к памяти и дисковому пространству

  • Дисковое пространство: Минимальное требование составляет 100 МБ для ядра Drupal. Однако настоятельно рекомендуется удвоить или утроить это значение (200-300 МБ и более), чтобы обеспечить достаточно места для установки дополнительных модулей, тем, медиафайлов, а также для хранения резервных копий и других файлов, генерируемых сайтом.  
  • Оперативная память (RAM): Для корректной работы Composer требуется минимум 1 ГБ RAM. Для самого PHP минимальный объем памяти составляет 64 МБ, но в производственных средах для оптимальной производительности обычно выделяется  128 МБ или 256 МБ. Для сайтов с большим количеством модулей, интенсивным использованием медиа или сложными функциями может потребоваться значительно больше оперативной памяти.  
КомпонентМинимальная ВерсияРекомендуемая ВерсияПримечания
PHP8.3+8.3+Более старые версии PHP не поддерживаются.  
MySQL8.0+8.0+InnoDB как основной движок.  
MariaDB10.6+10.6+
PostgreSQL16+16+Требуется расширение pg_trgm.  
SQLite3.45+3.45+С расширением json1.  
Composer2.7.7+2.7.7+Для управления зависимостями.  
Drush13+13+Для управления сайтом через командную строку.  
Веб-серверApache 2.4.7+ или Nginx 1.1+Apache 2.4.7+ или Nginx 1.1+Поддержка IIS удалена.  
Дисковое пространство100 МБ200-300 МБ+Для модулей, тем, медиа, резервных копий.  
Оперативная память (RAM)1 ГБ (для Composer)256 МБ+ (для PHP)128-256 МБ для PHP в production.  
Системные Требования Drupal 11
РасширениеНазначениеПакет (Debian/Ubuntu)Пакет (Red Hat/Fedora/SUSE)
php8.3-pdoPHP Data Objects (обязательно для БД)php8.3-pdophp83-php-pdo (включено в php83)  
php8.3-xmlОбработка XML, включая PHP DOM (обязательно)php8.3-xmlphp83-php-xml (включено в php83)  
php8.3-gdМанипуляции с изображениями (изменение размера, кэширование)php8.3-gdphp83-php-gd  
php8.3-opensslHTTPS-запросы, Update Managerphp8.3-opensslphp83-php-openssl  
php8.3-jsonПоддержка JSON (обязательно)php8.3-jsonphp83-php-json (включено в php83)  
php8.3-curlАвтоматизированное тестирование, Aggregatorphp8.3-curlphp83-php-curl  
php8.3-mbstringПоддержка многобайтовых строк (для неанглийских языков)php8.3-mbstringphp83-php-mbstring  
php8.3-zlibСжатие данных (требуется Drupal 11)php8.3-zip (для zip) / php8.3-zlib (для zlib)php83-php-zlib  
php8.3-opcacheОптимизация производительности PHP (рекомендуется)php8.3-opcachephp83-php-opcache (включено в php83)  
php8.3-apcuКэширование opcode (рекомендуется)php8.3-apcuphp83-php-pecl-apcu  
php8.3-cliИнтерфейс командной строки PHPphp8.3-cliphp83-php-cli (включено в php83)
php8.3-commonОбщие расширения PHP (мета-пакет)php8.3-commonphp83 (мета-пакет)  
Рекомендуемые Расширения PHP для Drupal 11

Подготовка сервера linux: Пошаговая настройка

Выбор веб-сервера является одним из первых и наиболее важных решений при подготовке сервера для Drupal. Оба популярных варианта — Apache и Nginx — широко используются с Drupal, но имеют свои особенности. Apache традиционно популярен благодаря своей гибкости, обеспечиваемой файлами .htaccess и модульной архитектурой. Nginx, в свою очередь, известен высокой производительностью и эффективностью при обработке статического контента; его часто используют в качестве обратного прокси в связке с PHP-FPM для обработки динамического контента. Выбор зависит от специфических требований к производительности, сложности конфигурации и предпочтений администратора.

Установка и базовая конфигурация Apache

Для установки Apache на различных дистрибутивах Linux используются следующие команды:

  • Debian/Ubuntu:
Bash
sudo apt install apache2
  • CentOS/RHEL/AlmaLinux:
Bash
sudo dnf install httpd
  • openSUSE/SLES:
Bash
sudo zypper install apache2

После установки необходимо запустить сервис Apache и настроить его на автоматический запуск при загрузке системы.

  • Debian/Ubuntu/openSUSE/SLES
Bash
sudo systemctl enable apache2
sudo systemctl start apache2
  • CentOS/RHEL/AlmaLinux
Bash
sudo systemctl enable httpd
sudo systemctl start httpd

Далее следует настроить VirtualHost для вашего сайта Drupal. Создайте новый файл VirtualHost.

  • Для Debian/Ubuntu это обычно: /etc/apache2/sites-available/drupal.conf
  • Для Fedora/CentOS/RHEL/AlmaLinux: /etc/httpd/conf.d/drupal.conf.  

Пример базовой конфигурации VirtualHost для Drupal:

Apache
<VirtualHost *:80>
    ServerName ваш_домен.ru
    DocumentRoot /var/www/html/ваш_сайт_drupal/web
    <Directory /var/www/html/ваш_сайт_drupal/web>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

⚠️Обратите внимание: На RHEL-подобных переменные ${APACHE_LOG_DIR}, используемые в Debian/Ubuntu, не определены. В RHEL-подобных системах следует указывать полный путь к файлам логов, например, /var/log/httpd/.

Убедитесь, что DocumentRoot указывает на каталог web внутри вашего проекта Drupal, поскольку Composer по умолчанию размещает публично доступные файлы именно там. Директива  AllowOverride All в блоке <Directory> критически важна, так как она позволяет Drupal использовать свой файл .htaccess для настройки «чистых» URL и других параметров. Если в вашей конфигурации Apache по умолчанию включена опция  Options +MultiViews, добавьте Options -MultiViews в блок <Directory> для предотвращения потенциальных конфликтов.  

Для обеспечения «чистых» URL в Drupal необходимо включить модуль mod_rewrite. В Debian/Ubuntu это делается следующей командой

Bash
sudo a2enmod rewrite

В других дистрибутивах убедитесь, что этот модуль включен или настроен в основной конфигурации Apache.

После создания и настройки файла VirtualHost необходимо его активировать. В Debian/Ubuntu это выполняется командой:

Bash
sudo a2ensite drupal.conf

Затем обязательно проверьте конфигурацию Apache на синтаксические ошибки:

  • Debian/Ubuntu:
Bash
sudo apachectl configtest
  • CentOS/RHEL/AlmaLinux
Bash
sudo httpd -t

Синтаксис основного конфига в норме.

Наконец, перезапустите Apache для применения всех изменений:

  • Debian/Ubuntu:
Bash
sudo systemctl restart apache2
  • CentOS/RHEL/AlmaLinux
Bash
sudo systemctl restart httpd 

Установка и базовая конфигурация Nginx

Для установки Nginx на различных дистрибутивах Linux используются следующие команды:

  • Debian/Ubuntu:
Bash
sudo apt install nginx
  • CentOS/RHEL/AlmaLinux
Bash
sudo dnf install nginx
  • openSUSE/SLES:
Bash
sudo zypper install nginx

После установки необходимо запустить сервис Nginx и настроить его на автоматический запуск при загрузке системы:

Bash
sudo systemctl enable nginx
sudo systemctl start nginx

Для настройки Nginx создайте новый файл Server Block, например, /etc/nginx/sites-available/drupal.conf. Этот файл будет содержать конфигурацию для вашего Drupal-сайта.

Пример базовой конфигурации Server Block для Drupal с PHP-FPM:

Nginx
server {
    listen 80;
    server_name ваш_домен.ru;
    root /var/www/html/ваш_сайт_drupal/web; # Указываем на каталог web/

    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$query_string; # Важно для чистых URL Drupal
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf; # Включает стандартные настройки FastCGI
        fastcgi_pass unix:/run/php/php8.3-fpm.sock; # Убедитесь, что путь к сокету соответствует вашей версии PHP-FPM
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # Запрет доступа к скрытым файлам и директориям Drupal для безопасности
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }
}

Директива root должна указывать на каталог web внутри вашего проекта Drupal. Блок location / с try_files обеспечивает корректную работу «чистых» URL Drupal. Блок location ~ \.php$ настраивает Nginx для передачи PHP-запросов к PHP-FPM через FastCGI. Убедитесь, что путь к сокету  fastcgi_pass (unix:/run/php/php8.3-fpm.sock) соответствует версии PHP-FPM, установленной на вашем сервере. Для повышения безопасности рекомендуется добавить блок location ~ /\., который запрещает прямой доступ к скрытым файлам и директориям Drupal.

После создания файла Server Block создайте символическую ссылку для его активации:

Bash
sudo ln -s /etc/nginx/sites-available/drupal.conf /etc/nginx/sites-enabled/

Проверьте конфигурацию Nginx на синтаксические ошибки с помощью

Bash
 sudo nginx -t

Синтаксис в порядке

Наконец, перезапустите Nginx для применения всех изменений:

Bash
sudo systemctl restart nginx

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

Установка PHP 8.3 и необходимых расширений является критически важным шагом, поскольку Drupal 11 строго зависит от этой версии PHP. Процесс может немного отличаться в зависимости от используемого дистрибутива Linux.

Для Debian/Ubuntu:

  • Добавление репозиториев: Установите необходимые зависимости для добавления сторонних репозиториев:
Bash
sudo apt install apt-transport-https
sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
  • Обновите список пакетов:
Bash
sudo apt update -y
  • Установка PHP 8.3 и расширений: Установите PHP 8.3 и все необходимые расширения, используя пакеты, указанные в Таблице выше:
Bash
sudo apt install php8.3 php8.3-cli php8.3-common php8.3-curl php8.3-gd php8.3-mbstring php8.3-mysql php8.3-opcache php8.3-readline php8.3-sqlite3 php8.3-xml php8.3-zip php8.3-apcu php8.3-fpm

Установка php 8.3

Если вы используете Apache, убедитесь, что модуль PHP 8.3 включен:

Bash
sudo a2enmod php8.3

Если вы обновляетесь с более старой версии PHP, отключите старый модуль (например,  sudo a2dismod php8.2).

  • Перезапустите веб-сервер после установки PHP:
Bash
sudo systemctl restart apache2
sudo systemctl restart nginx

Для Red Hat/CentOS/Almalinux:

  • Добавление репозиториев: Добавьте репозиторий Remi, который содержит последние версии PHP для этих дистрибутивов:
Bash
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-<версия_дистрибутива>.rpm

⚠️ Замените версия_дистрибутива на версию вашего дистрибутива, чтобы подключить актуальные репозитории. Например, для Almalinux 9 ссылка будет выглядеть следующим образом:

Bash
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
  • Включите репозиторий Remi:
Bash
sudo dnf config-manager --set-enabled remi
  • Установка PHP 8.3 и расширений: Установите PHP 8.3 и необходимые расширения, используя пакеты из Таблицы выше. Обратите внимание, что некоторые базовые расширения могут быть включены в основной пакет php83:
Bash
sudo dnf install php83 php83-php-fpm php83-php-gd php83-php-mbstring php83-php-xml php83-php-opcache php83-php-pecl-apcu php83-php-intl php83-php-curl

Установка PHP 8.3
  • После установки PHP-FPM необходимо запустить и включить его сервис:
Bash
sudo systemctl enable php83-php-fpm
sudo systemctl start php83-php-fpm
  • Перезапустите веб-сервер.

Для openSUSE/SLES:

  • Добавление репозиториев: Добавьте репозиторий для PHP 8.3, например, для openSUSE Tumbleweed:
Bash
sudo zypper addrepo https://download.opensuse.org/repositories/devel:languages:php:php83/openSUSE_Tumbleweed/devel:languages:php:php83.repo

Замените openSUSE_Tumbleweed на ваш конкретный дистрибутив openSUSE/SLES

  • Обновите список пакетов:
Bash
sudo zypper refresh
  • Установка PHP 8.3 и расширений: Установите PHP 8.3 и необходимые расширения. Названия пакетов могут быть аналогичны Debian/Ubuntu или Red Hat/Fedora, но могут иметь префикс php8- или php83-:
Bash
sudo zypper install php8-fpm php8-gd php8-mbstring php8-xml php8-opcache php8-apcu php8-curl php8-zip

Запустите и включите сервис PHP-FPM:

Bash
sudo systemctl enable php-fpm
sudo systemctl start php-fpm

Перезапустите веб-сервер.


Создание базы данных: хранилище вашего сайта

Drupal 11 требует наличия базы данных для хранения всего содержимого сайта, конфигураций и пользовательских данных. Поддерживаются MySQL/MariaDB, PostgreSQL и SQLite. Для производственных сред обычно выбирают MySQL/MariaDB или PostgreSQL из-за их надежности и масштабируемости.

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

Для создания базы данных и пользователя можно использовать командную строку MySQL/MariaDB или графический интерфейс, такой как phpMyAdmin.

Через командную строку:

  • Войдите в консоль MySQL/MariaDB от имени пользователя root или пользователя с достаточными привилегиями:
Bash
sudo mysql -u root -p
#или 
sudo mariadb -u root -p

Вам будет предложено ввести пароль.

  • Создайте новую базу данных для Drupal. Важно использовать кодировку UTF-8:
SQL
CREATE DATABASE drupal_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

успешное выполнение команды CREATE DATABASE
  • Создайте нового пользователя базы данных и назначьте ему пароль. Рекомендуется использовать пользователя с ограниченными привилегиями для повышения безопасности:
SQL
CREATE USER 'drupal_user'@'localhost' IDENTIFIED BY 'ваш_надежный_пароль';

Если вы планируете удаленный доступ к базе данных, замените 'localhost' на '%' или конкретный IP-адрес.  

  • Предоставьте новому пользователю все необходимые привилегии для созданной базы данных:
SQL
GRANT ALL PRIVILEGES ON drupal_db.* TO 'drupal_user'@'localhost';
  • Примените изменения привилегий:
SQL
FLUSH PRIVILEGES;
  • Выйдите из консоли MySQL/MariaDB:
SQL
EXIT;

Через phpMyAdmin (если установлен):

  • Войдите в phpMyAdmin.
  • Перейдите на вкладку «Базы данных» и создайте новую базу данных, указав имя (например, drupal_db) и выбрав кодировку utf8mb4_unicode_ci.  
  • Перейдите на вкладку «Пользователи» и нажмите «Добавить пользователя».
  • Укажите имя пользователя (например, drupal_user), хост (localhost), создайте надежный пароль.
  • В разделе «База данных для пользователя» выберите «Создать базу данных с таким же именем и предоставить все привилегии» или вручную предоставьте все привилегии для созданной базы данных drupal_db.  

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

Через командную строку:

  • Переключитесь на пользователя postgres, который является суперпользователем PostgreSQL:
Bash
sudo su - postgres
  • Войдите в консоль PostgreSQL:
Bash
psql

Приглашение psql
  • Создайте нового пользователя Drupal с паролем:
SQL
CREATE USER drupal_user WITH PASSWORD 'ваш_надежный_пароль';
  • Создайте базу данных для Drupal, указав владельцем нового пользователя:
SQL
CREATE DATABASE drupal_db OWNER drupal_user;
  • Предоставьте все привилегии на созданную базу данных новому пользователю:
SQL
GRANT ALL PRIVILEGES ON DATABASE drupal_db TO drupal_user;
  • Включите расширение pg_trgm в вашей базе данных Drupal (обязательно для Drupal 11):
SQL
CREATE EXTENSION pg_trgm;
  • Выйдите из консоли psql:
SQL
\q
  • Выйдите из пользователя postgres:
Bash
exit

Загрузка и установка Drupal с использованием Composer

Composer — это современный и рекомендуемый способ установки Drupal и управления его зависимостями. Он позволяет легко загружать ядро Drupal, модули, темы и библиотеки, а также обеспечивает правильное разрешение версий и зависимостей. Использование Composer значительно упрощает процесс обновления и поддержки сайта.

Установка Composer

Если Composer еще не установлен на вашем сервере, выполните следующие шаги для глобальной установки:

  • Обновите систему:

Debian/Ubuntu:

Bash
sudo apt update && sudo apt upgrade -y

Fedora/CentOS/RHEL/AlmaLinux:

Bash
sudo dnf update -y

openSUSE/SLES:

Bash
sudo zypper refresh && sudo zypper update -y
  • Установите зависимости Composer:

Debian/Ubuntu:

Bash
sudo apt install curl php-cli php-mbstring git unzip -y

Fedora/CentOS/RHEL/AlmaLinux:

Bash
sudo dnf install curl php-cli php-mbstring git unzip -y

openSUSE/SLES:

Bash
sudo zypper install curl php-cli php-mbstring git unzip -y
  • Загрузите установщик Composer:
Bash
curl -sS https://getcomposer.org/installer -o composer-setup.php
  • Проверьте установщик (опционально, но рекомендуется):
Bash
php composer-setup.php --check

Примерный вывод:

  • Установите Composer глобально: Это позволит вызывать composer из любого каталога.
Bash
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
  • Проверьте установку Composer:
Bash
composer --version

Вывод команды composer --version с номером версии Composer

Создание проекта Drupal

После установки Composer используйте его для создания нового проекта Drupal. Рекомендуется использовать drupal/recommended-project, который настраивает правильную структуру каталогов, отделяя публично доступные файлы от файлов конфигурации и зависимостей.

  • Перейдите в каталог, где вы хотите создать проект Drupal (например, /var/www/html/):
Bash
cd /var/www/html/
  • Создайте новый проект Drupal:
Bash
composer create-project drupal/recommended-project ваш_сайт_drupal

⚠️ В некоторых дистрибутивах, необходимо указать путь к php. Например

Bash
/usr/bin/php83 composer create-project drupal/recommended-project ваш_сайт_drupal

Эта команда загрузит последнюю стабильную версию Drupal 11 и все её зависимости в новый каталог ваш_сайт_drupal. Внутри этого каталога будет создан подкаталог web/, который станет корневым каталогом вашего веб-сервера. Файлы, расположенные вне web/, такие как composer.json, vendor/ и drush/, должны быть недоступны через веб-сервер для обеспечения безопасности.  

Настройка прав доступа к файлам и директориям

Правильные права доступа к файлам и директориям критически важны для безопасности и функциональности Drupal. Неверные настройки могут привести к ошибкам или уязвимостям.

Общие рекомендации:

  • Все каталоги (папки) должны иметь права доступа 755 (владелец может читать, писать, выполнять; группа и остальные могут читать и выполнять).  
  • Все файлы должны иметь права доступа 644 (владелец может читать, писать; группа и остальные могут только читать).  

Применение прав доступа:

  • Перейдите в корневой каталог вашего проекта Drupal:
Bash
cd /var/www/html/ваш_сайт_drupal
  • Примените права доступа рекурсивно:
Bash
sudo find . -type d -exec chmod 755 {} \;
sudo find . -type f -exec chmod 644 {} \;

Особые директории:

  • Каталог web/sites/default/files должен быть доступен для записи веб-сервером, так как Drupal будет загружать туда файлы (изображения, документы и т.д.). Временные права 775 или даже 777 могут потребоваться во время установки, но после завершения установки их следует изменить на более строгие 755 или 644 для файлов внутри.  
Bash
sudo chmod 775 web/sites/default/files
# или временно
sudo chmod 777 web/sites/default/files
  • Файл web/sites/default/settings.php содержит конфиденциальные данные и должен быть доступен только для чтения веб-сервевером (и для записи только владельцем):
Bash
sudo chmod 644 web/sites/default/settings.php
# Или для максимальной безопасности после установки
sudo chmod 444
  • Файл web/sites/default/services.yml также должен быть защищен:
Bash
sudo chmod 644 web/sites/default/services.yml

Владелец файлов:

Убедитесь, что владельцем файлов и каталогов является пользователь веб-сервера (например, www-data для Apache на Debian/Ubuntu, apache для Apache на CentOS/RHEL, или nginx для Nginx):

Bash
sudo chown -R www-data:www-data /var/www/html/ваш_сайт_drupal

⚠️Замените www-data на соответствующего пользователя/группу вашего веб-сервера


Запуск установщика Drupal через веб-интерфейс

После того как сервер настроен, база данных создана, а файлы Drupal загружены и имеют правильные права доступа, можно приступать к запуску веб-установщика.

Доступ к установщику:

Откройте веб-браузер и перейдите по доменному имени вашего сайта (например, http://ваш_домен.ru) или по локальному адресу, если вы устанавливаете Drupal локально (например, http://localhost:8888 при использовании встроенного PHP-сервера или http://drupal11.local при использовании VirtualHost).  

Начальный экран установщика Drupal 11 с выбором языка.

Выбор языка:

На первом экране установщик предложит выбрать язык установки. Выберите предпочтительный язык и нажмите «Save and continue» (Сохранить и продолжить).

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

Далее вам будет предложено выбрать профиль установки. Для большинства сайтов рекомендуется выбрать «Standard» (Стандартный), который включает базовый набор функций и модулей, достаточный для начала работы. Нажмите «Save and continue».  

Выбор профиля установки («Standard» или «Minimal»).

Настройка базы данных:

  • Database name (Имя базы данных): drupal_db
  • Database username (Имя пользователя базы данных): drupal_user
  • Database password (Пароль базы данных): ваш_надежный_пароль
  • Advanced options (Дополнительные параметры): Здесь можно указать хост базы данных (обычно localhost или 127.0.0.1), порт (по умолчанию 3306 для MySQL/MariaDB, 5432 для PostgreSQL) и префикс таблиц (если необходимо).  
  • Нажмите «Save and continue».
Форма настройки базы данных с заполненными полями.

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

Drupal начнет установку, создавая таблицы в базе данных, устанавливая модули и темы. Этот процесс может занять несколько минут.

Индикатор прогресса установки Drupal.

Настройка сайта:

После завершения установки базы данных вам будет предложено настроить основные параметры сайта:

  • Site name (Название сайта): Имя вашего веб-сайта.
  • Site email address (Адрес электронной почты сайта): Используется для системных уведомлений.
  • Username (Имя пользователя): Имя пользователя для учетной записи администратора.
  • Password (Пароль): Пароль для учетной записи администратора.
  • Email address (Адрес электронной почты): Email администратора.
  • Default country (Страна по умолчанию)
  • Default time zone (Часовой пояс по умолчанию)
  • Заполните все поля и нажмите «Save and continue».
Форма настройки сайта и учетной записи администратора.

Завершение установки:

После этого Drupal будет успешно установлен, и вы будете перенаправлены на главную страницу вашего нового сайта.


Первоначальная настройка и оптимизация после установки

После успешной установки Drupal 11 необходимо выполнить несколько важных шагов для обеспечения безопасности, производительности и стабильности вашего сайта.

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

Файл web/sites/default/settings.php является центральным файлом конфигурации Drupal. После установки он будет автоматически создан, но некоторые параметры могут потребовать ручной настройки.

Настройка доверенных хостов (Trusted Host Settings):

Для повышения безопасности необходимо указать доверенные доменные имена, с которых разрешен доступ к вашему сайту. Добавьте следующую строку в settings.php, заменив ваш_домен.ru на реальный домен:

PHP
$settings['trusted_host_patterns'] = [
  '^ваш_домен\.ru$',
  '^www\.ваш_домен\.ru$',
  // Добавьте другие поддомены или IP-адреса, если необходимо.
];

Это предотвращает атаки, связанные с подменой HTTP-заголовка Host.

Настройка лимита памяти PHP:

Хотя рекомендуется настраивать memory_limit в php.ini, его также можно установить в settings.php (это будет действовать только для данного сайта):

PHP
ini_set('memory_limit', '256M');

Рекомендуется установить значение от 128M до 512M в зависимости от потребностей вашего сайта.  

Уровень изоляции транзакций для MySQL/MariaDB:

Для MySQL, MariaDB или аналогичных баз данных рекомендуется установить уровень изоляции транзакций READ COMMITTED для оптимальной производительности и предотвращения взаимоблокировок:

PHP
$databases['default']['default']['init_commands'] =;

Оптимизация php.ini для производительности

Для максимальной производительности Drupal рекомендуется настроить несколько ключевых параметров в файле php.ini вашего сервера. Расположение php.ini можно узнать на странице отчета о состоянии Drupal (/admin/reports/status) в разделе PHP.  

memory_limit:

Установите достаточное значение для оперативной памяти, выделяемой PHP-скриптам. Как упоминалось ранее, 128M или 256M являются хорошей отправной точкой для производственных систем, но для больших сайтов может потребоваться 512M или даже больше.  

PHP
memory_limit = 256M

upload_max_filesize и post_max_size:

Эти параметры определяют максимальный размер загружаемых файлов и данных POST-запросов. Установите их в соответствии с вашими потребностями, например:

PHP
upload_max_filesize = 64M
post_max_size = 64M

realpath_cache_size и realpath_cache_ttl:

Эти параметры влияют на кэширование информации о реальных путях файлов. Для систем, таких как Drupal, которые открывают множество файлов, рекомендуется увеличить realpath_cache_size и realpath_cache_ttl для повышения производительности.  

PHP
realpath_cache_size = 256K
realpath_cache_ttl = 300 # или выше, до 3600 секунд для редко меняющихся файлов

opcache.save_comments:

Если используется OPcache, убедитесь, что этот параметр включен, так как он необходим для корректной работы аннотаций в Drupal.

PHP
opcache.save_comments = 1

После внесения изменений в php.ini всегда перезапускайте веб-сервер (Apache или Nginx) и PHP-FPM (если используется) для применения изменений.

Настройка Cron (Планировщик задач)

Drupal использует Cron для выполнения регулярных задач, таких как очистка кэша, индексация контента для поиска, отправка уведомлений и выполнение других фоновых операций. Настройка системного Cron для запуска Drupal-Cron является лучшей практикой.

Добавьте следующую строку в ваш crontab (откройте его с помощью crontab -e):

Bash
0 * * * * wget -O - -q -t 1 http://ваш_домен.ru/cron/ваш_секретный_ключ >/dev/null 2>&1

Замените ваш_домен.ru и ваш_секретный_ключ на соответствующие значения, которые можно найти на странице «Отчет о состоянии» Drupal (/admin/reports/status).

Установка Drush (опционально, но рекомендуется)

Drush — это мощный инструмент командной строки для Drupal, который значительно упрощает управление сайтом, позволяя выполнять такие задачи, как установка модулей, очистка кэша, обновление ядра и многое другое. Если вы не установили его ранее, это можно сделать в корневом каталоге вашего проекта Drupal:

Bash
composer require drush/drush ^13

После установки Drush можно использовать для выполнения различных операций, например, drush cr для очистки кэша или drush en module_name для включения модуля.  


Распространенные проблемы и устранение неполадок

В процессе установки Drupal могут возникнуть различные проблемы. Знание распространенных ошибок и методов их устранения поможет быстро решить возникающие трудности.

Проблемы с системными требованиями

Неверная версия PHP или отсутствующие расширения:

Установщик Drupal выдаст ошибку, если версия PHP ниже 8.3 или отсутствуют необходимые расширения (PDO, XML, GD, Mbstring, cURL, OpenSSL, JSON, zlib). Проверьте вывод  

Bash
php --version
php -m 

а также убедитесь, что все пакеты установлены, как указано в таблице выше

Несоответствие версии базы данных:

Убедитесь, что ваша база данных (MySQL, MariaDB, PostgreSQL, SQLite) соответствует минимальным требованиям Drupal 11.

Недостаточно памяти:

Ошибки «Allowed memory size exhausted» указывают на то, что PHP-скрипту не хватает выделенной памяти. Увеличьте memory_limit в php.ini.

Ошибки прав доступа к файлам

Сообщения типа «File Not Writable» или «Permission Denied» указывают на некорректные права доступа. Убедитесь, что каталоги имеют права 755, файлы — 644, а каталог web/sites/default/files доступен для записи веб-сервером (например, 775). Проверьте владельца файлов, убедившись, что это пользователь веб-сервера.

Пример ошибки «Permission denied» при попытке записи в каталог.

Проблемы с подключением к базе данных

Неверные учетные данные:

Убедитесь, что имя базы данных, имя пользователя, пароль и хост, введенные в установщике Drupal, точно соответствуют данным, которые вы использовали при создании базы данных.

Недоступность сервера БД:

Проверьте, запущен ли сервер базы данных

Bash
sudo systemctl status mysql
# или
sudo systemctl status postgresql

и доступен ли он с веб-сервера. Можно попробовать подключиться к базе данных из командной строки сервера, чтобы убедиться в её работоспособности.

«Белый экран смерти» (WSOD)

  • Если после установки вы видите пустую белую страницу, это часто указывает на фатальную ошибку PHP. Включите отображение ошибок PHP для диагностики. В файле php.ini установите display_errors = On и error_reporting = E_ALL. После устранения проблемы обязательно отключите отображение ошибок в production-среде.
  • Проверьте логи ошибок веб-сервера (Apache error.log или Nginx error.log) и логи PHP для получения более подробной информации об ошибке.

Проблемы с «чистыми» URL

Если страницы сайта отображаются, но ссылки выглядят как index.php?q=node/1 вместо node/1, это указывает на проблему с «чистыми» URL.

  • Для Apache: Убедитесь, что модуль mod_rewrite включен (sudo a2enmod rewrite) и в конфигурации VirtualHost для DocumentRoot установлена директива AllowOverride All.  
  • Для Nginx: Убедитесь, что в Server Block корректно настроен блок location / с try_files $uri $uri/ /index.php?$query_string;.  

Зависание или сбои установки

  • Проверьте логи веб-сервера и PHP на наличие ошибок.
  • Убедитесь, что сервер соответствует всем минимальным требованиям по памяти и дисковому пространству.
  • Попробуйте очистить кэш Drupal (если удалось получить доступ к командной строке) или вручную удалить содержимое каталога web/sites/default/files/php/twig.
  • Убедитесь, что вы используете последнюю стабильную версию Drupal.

Заключение и рекомендации

Установка Drupal — это процесс, требующий внимательности к системным требованиям и последовательности шагов, но он открывает доступ к одной из самых мощных и гибких CMS на рынке. Переход на Drupal означает использование современной, масштабируемой и безопасной платформы, которая активно развивается, интегрируя последние достижения в веб-технологиях. Строгие требования к PHP 8.3 и последним версиям баз данных, а также отказ от поддержки IIS, подчеркивают стремление проекта к оптимизации производительности и безопасности в рамках современной, преимущественно Linux-ориентированной, экосистемы.

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

  • Актуализация серверной среды: Всегда поддерживайте PHP, базу данных и веб-сервер в соответствии с последними рекомендуемыми версиями Drupal. Это не только обеспечивает совместимость, но и повышает безопасность и производительность.
  • Использование Composer для управления проектом: Применяйте Composer для установки ядра Drupal, модулей и тем. Это упрощает управление зависимостями, процесс обновления и поддержание целостности проекта.
  • Тщательная настройка прав доступа: Уделяйте особое внимание корректной настройке прав доступа к файлам и директориям, следуя принципу наименьших привилегий. Это критически важно для защиты вашего сайта от несанкционированного доступа.
  • Оптимизация php.ini: Настройте параметры PHP, такие как memory_limit, realpath_cache_size и opcache.save_comments, для обеспечения оптимальной производительности Drupal.
  • Использование Drush: Интегрируйте Drush в свой рабочий процесс для эффективного управления сайтом через командную строку, что значительно ускоряет выполнение рутинных задач.
  • Мониторинг и логирование: Регулярно проверяйте логи веб-сервера и PHP для оперативного выявления и устранения потенциальных проблем.

Будущее Drupal, подкрепленное инициативами по непрерывным инновациям и развитием таких инструментов, как Drupal CMS Launcher, направлено на повышение доступности и удобства использования платформы для более широкой аудитории, включая маркетологов и контент-менеджеров без глубоких технических навыков. Принятие этих современных практик позволит в полной мере использовать потенциал Drupal для создания мощных, безопасных и высокопроизводительных веб-решений.  


Дополнительный материал

Было ли это полезно?

0 / 0

Добавить комментарий 0