Установка Drupal · 13 min read · Oct 13, 2025

Как установить Drupal CMS с Nginx на Rocky Linux 8

Drupal — это бесплатная и открытая система управления веб-контентом, написанная на PHP и распространяемая под лицензией GNU General Public License. Drupal предоставляет мощный инструмент управления контентом с продвинутыми API для многоканальной публикации.

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

В этом руководстве вы узнаете, как настроить CMS Drupal (Система управления контентом) с LEMP Stack на сервере Rocky Linux. Вы также узнаете, как запустить Drupal на Rocky Linux с включенным режимом SELinux и активированным Firewalld.

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

Для начала работы с этим руководством вам понадобятся следующие требования:

  • Сервер Rocky Linux — в этом примере используется Rocky Linux 8.x с именем хоста ‘drupal-server‘.
  • Непривилегированный пользователь с правами администратора sudo/root.
  • Доменное имя, указывающее на IP-адрес сервера Rocky Linux — особенно когда вы находитесь в рабочей среде.

Настройка репозиториев

LEMP Stack (Nginx, MariaDB/MySQL и PHP-FPM) — это группа программного обеспечения с открытым исходным кодом для хостинга веб-приложений. На Rocky Linux большинство пакетов LEMP Stack доступны в сторонних репозиториях.

На первом этапе вы добавите и активируете два репозитория в вашей системе. Вы добавите репозиторий EPEL, который предоставляет дополнительные пакеты для операционных систем на базе RHEL, и репозиторий REMI, который предоставляет несколько версий пакетов PHP.

Запустите следующую команду, чтобы добавить репозиторий EPEL в вашу систему Rocky Linux. Когда будет предложено подтвердить, введите y и нажмите ENTER.

sudo dnf install epel-release

установка epel

Теперь выполните команду dnf ниже, чтобы добавить репозиторий REMI для Rocky Linux 8.4.

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

Введите y и нажмите ENTER, чтобы продолжить и добавить репозиторий Remi.

установка remi

Наконец, выполните команду dnf ниже, чтобы проверить список доступных репозиториев в вашей системе. Вы должны увидеть два дополнительных репозитория EPEL и REMI, добавленных в систему Rocky Linux.

sudo dnf repolist

проверка репозиториев

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

Drupal — это гибкая и мощная CMS, которую можно установить с любым веб-сервером, таким как Apache2/httpd, Nginx или IIS Microsoft. Также Drupal поддерживает несколько СУБД, включая MariaDB/MySQL, PostgreSQL и SQLite. Для других баз данных, таких как Microsoft SQL Server и MongoDB, вы можете использовать обе через модули сообщества.

Теперь вы установите зависимости пакетов LEMP Stack для Drupal. Вы установите Nginx через репозиторий EPEL, установите MariaDB из appstream и пакеты PHP 8.1 из репозитория REMI.

Сначала сбросьте и активируйте модуль PHP из репозитория REMI с помощью команды dnf ниже. В этом примере вы активируете модуль для PHP 8.1, который поддерживается последней версией Drupal.

sudo dnf module reset php  
sudo dnf module enable php:remi-8.1

Когда будет предложено, введите y, чтобы подтвердить и активировать репозиторий PHP 8.1 REMI, и нажмите ENTER, чтобы продолжить.

активация php 8.1

Затем используйте команду dnf ниже, чтобы установить основные пакеты LEMP stack.

sudo dnf install nginx mariadb-server php php-fpm php-cli php-devel php-mbstring php-gd php-xml php-curl php-mysqlnd php-pdo php-json php-opcache php-pear php-pecl-apcu php-pecl-crypto

Введите y и нажмите ENTER, когда будет предложено подтвердить.

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

Также введите y, когда будет предложено подтвердить добавление GPG-ключа для некоторых репозиториев.

принять gpg ключи

После установки пакетов LEMP Stack вы можете использовать следующую команду systemctl, чтобы запустить службы Nginx, MariaDB и PHP-FPM. Также вы активируете все эти службы, чтобы они автоматически запускались при загрузке.

sudo systemctl start nginx mariadb php-fpm  
sudo systemctl enable nginx mariadb php-fpm

Теперь вы увидите вывод, похожий на следующий — LEMP Stack теперь должен работать на вашей системе Rocky Linux, и все службы для LEMP Stack активированы.

запуск и активация служб

Настройка Firewalld

Firewalld — это брандмауэр по умолчанию в операционных системах на базе RHEL, включая Rocky Linux. Рекомендуется запускать Drupal или любые веб-приложения с включенным брандмауэром, особенно в рабочей среде.

Теперь вы добавите оба порта HTTP и HTTPS в firewalld, чтобы разрешить клиентам доступ к вашей установке Drupal.

Запустите следующую команду firewall-cmd ниже, чтобы добавить службы HTTP и HTTPS в firewalld.

sudo firewall-cmd --add-service=http --permanent  
sudo firewall-cmd --add-service=https --permanent

Теперь перезагрузите firewalld, чтобы применить новые изменения. Затем проверьте список активированных служб в firewalld.

sudo firewall-cmd --reload  
sudo firewall-cmd --list-services

Вы должны увидеть добавленные службы HTTP и HTTPS в firewalld.

настройка firewalld

Настройка сервера MariaDB

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

Перед началом выполните следующую команду, чтобы проверить службу MariaDB и убедиться, что служба работает.

sudo systemctl status mariadb

Ниже приведен вывод, когда служба MariaDB работает.

проверка mariadb

Далее выполните следующую команду для обеспечения безопасности развертывания сервера MariaDB. Эта команда ‘mysql_secure_installation‘ предоставляется пакетами MariaDB, которые помогают вам обеспечить безопасность установки.

sudo mysql_secure_installation

Теперь вам будут заданы несколько вопросов, связанных с конфигурацией сервера MariaDB:

  • Стандартная установка MariaDB не имеет пароля, нажмите ENTER, когда будет предложено ввести пароль.
  • Теперь введите Y, чтобы установить пароль root для MariaDB. Затем введите новый пароль для MariaDB и повторите пароль.
  • Введите Y, чтобы удалить анонимного пользователя из вашей установки MariaDB.
  • Введите Y снова, когда будет предложено отключить удаленный доступ для пользователя root MariaDB.
  • Введите Y, чтобы удалить стандартную базу данных test из вашей MariaDB.
  • Наконец, введите Y, чтобы перезагрузить привилегии таблиц и применить новые изменения.

После обеспечения безопасности развертывания MariaDB вы далее настроите новую базу данных и пользователя для Drupal.

Войдите в оболочку MySQL/MariaDB через пользователя root с помощью следующей команды mysql.

sudo mysql -u root -p

Запустите следующие запросы, чтобы создать новую базу данных и пользователя для Drupal. В этом примере вы создадите базу данных drupaldb с пользователем drupal@localhost. Также обязательно измените пароль для базы данных по умолчанию.

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

создание базы данных

Далее выполните следующие запросы, чтобы проверить привилегии для пользователя MariaDB drupal@localhost. Вы увидите, что пользователь MariaDB drupal@localhost имеет доступ и привилегии к базе данных drupaldb.

SHOW GRANTS FOR drupal@localhost;

Теперь выполните запрос ‘exit‘ или ‘quit‘, чтобы выйти из оболочки MariaDB.

проверка настроек базы данных

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

uploadprogress — это расширение, которое будет использоваться Drupal для отображения индикатора прогресса. uploadprogress можно установить через репозиторий PECL (PHP Extension Community Library).

Теперь вы установите расширение uploadprogress из репозитория PECL и активируете его в вашей установке PHP.

Для начала выполните следующую команду, чтобы убедиться, что команда ‘pecl‘ доступна в вашей системе. Если ‘pecl‘ доступен, вы должны увидеть полный путь к бинарному файлу ‘pecl‘.

which pecl

Теперь выполните команду ‘pecl‘ ниже, чтобы установить расширение uploadprogress.

sudo pecl install uploadprogress

Когда установка начнется, вы должны увидеть вывод, похожий на следующий:

установка uploadprogress

Далее выполните следующую команду, чтобы создать новый файл конфигурации ‘/etc/php.d/uploadprogress.ini‘ и активировать расширение uploadprogress.

cat <

Наконец, перезапустите службу PHP-FPM, чтобы применить новые изменения. PHP-FPM теперь работает с активированным дополнительным расширением uploadprogress.

sudo systemctl restart php-fpm

настройка uploadprogress

Настройка PHP-FPM

Теперь вы настроите базовую конфигурацию PHP-FPM через файл ‘/etc/php.ini‘ и настроите конкретный пул PHP-FPM для Drupal.

Измените файл ‘/etc/php.ini‘ с помощью следующего редактора nano.

sudo nano /etc/php.ini

Измените стандартную конфигурацию следующим образом. Также обязательно измените параметр date.timezone в соответствии с вашей средой.

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

Сохраните файл и выйдите из редактора, когда закончите.

Далее скопируйте конфигурацию пула PHP-FPM по умолчанию ‘/etc/php-fpm.d/www.conf‘ в ‘‘/etc/php-fpm.d/drupal.conf’. Затем измените новую конфигурацию пула ‘/etc/php-fpm.d/drupal.conf‘ с помощью редактора nano.

sudo cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/drupal.conf  
sudo nano /etc/php-fpm.d/drupal.conf

Измените стандартное имя на ‘[drupal]‘ и стандартного пользователя и группу на ‘nginx‘. Также обязательно измените файл сокета для пула PHP-FPM ‘drupal’ на ‘/run/php-fpm/drupal.sock’.

[drupal]  
user = nginx  
group = nginx  
listen.owner = nginx  
listen.group = nginx  
listen = /run/php-fpm/drupal.sock

Сохраните файл и выйдите из редактора, когда закончите.

Теперь перезапустите службу PHP-FPM с помощью команды systemctl ниже. Затем проверьте статус службы PHP-FPM.

sudo systemctl restart php-fpm  
sudo systemctl status php-fpm

Вы должны получить вывод, похожий на следующий — служба PHP-FPM работает.

проверка php-fpm

Далее выполните следующую команду, чтобы создать новый файл PHPINFO ‘/usr/share/nginx/html/info.php‘.

cat <  
EOF

Наконец, откройте веб-браузер и посетите IP-адрес сервера, добавив путь ‘/info.php’ (т.е.: http://192.168.5.100/info.php). Вы должны получить подробную информацию о PHP.

phpinfo

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

На этом этапе вы завершили настройку сервера базы данных MariaDB и PHP-FPM для установки Drupal. Далее вы загрузите последнюю версию Drupal на свой сервер.

Сначала переместите текущий рабочий каталог в ‘/tmp’ и загрузите последнюю версию Drupal с помощью команды wget, как показано ниже. Вы должны увидеть файл ‘drupal.tar.gz‘ после завершения процесса загрузки.

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

Далее извлеките файл ‘drupal.tar.gz‘ с помощью команды tar и переместите извлеченный каталог в ‘/var/www/drupal‘, который будет использоваться в качестве установки для Drupal.

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

Наконец, выполните следующую команду, чтобы изменить владельца и разрешения каталога установки Drupal ‘/var/www/drupal‘. Владельцем должен быть пользователь и группа ‘nginx‘, чтобы веб-сервер Nginx мог читать и получать доступ к исходному коду Drupal. А для разрешений это должно быть ‘755‘.

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

Настройка SELinux

После загрузки исходного кода Drupal вы далее настроите SELinux для Drupal. Вы загрузите инструмент управления SELinux на свой сервер и настроите маркировку для исходного кода Drupal и дополнительные правила для Nginx.

Запустите команду dnf ниже, чтобы установить пакет ‘policycoreutils-python-utils‘ для управления SELinux в вашей системе.

sudo dnf install policycoreutils-python-utils

Когда будет предложено, введите y, чтобы подтвердить установку, и нажмите ENTER, чтобы продолжить.

установка управления selinux

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

sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/drupal(/.*)?"  
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/drupal/sites/default/settings.php'  
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/drupal/sites/default/files'  
  
sudo restorecon -Rv /var/www/drupal

Выполните следующую команду, чтобы разрешить веб-серверу Nginx доступ к определенным службам. Для установки Drupal вы должны разрешить Nginx доступ к сетевым и почтовым службам.

sudo setsebool -P httpd_can_sendmail on  
sudo setsebool -P httpd_can_network_connect on

Теперь, когда вы загрузили исходный код Drupal и настроили правильного владельца для пользователя и группы ‘nginx‘, настроили правильные разрешения на ‘755‘ и настроили SELinux для Drupal.

Настройка веб-сервера Nginx

Теперь, когда вы завершили некоторые настройки сервера базы данных MariaDB и PHP-FPM. Также вы загрузили исходный код Drupal и настроили SELinux. На следующем этапе вы настроите блоки сервера Nginx для вашего домена.

Перед тем как начать, убедитесь, что у вас есть доменное имя, указывающее на IP-адрес вашего сервера. Также убедитесь, что вы сгенерировали SSL Letsencrypt.

Создайте новую конфигурацию блоков сервера Nginx ‘/etc/nginx/conf.d/drupal.conf‘ с помощью следующего редактора nano.

sudo nano /etc/nginx/conf.d/drupal.conf

Добавьте следующую конфигурацию в файл. И обязательно измените доменное имя и путь к SSL-сертификатам. В этом примере используется домен http://drupal.howtoforge.local в качестве основного домена для установки Drupal.

server {  
    listen 80;  
    server_name drupal.howtoforge.local;  
    return 301 https://$host$request_uri;  
}  
  
server {  
    listen 443 http2 ssl;  
    server_name drupal.howtoforge.local;  
  
    root /var/www/drupal;  
  
    ssl_certificate      /etc/letsencrypt/live/drupal.howtoforge.local/fullchain.pem;  
    ssl_certificate_key  /etc/letsencrypt/live/drupal.howtoforge.local/privkey.pem;  
  
    access_log /var/log/nginx/drupal.howtoforge.local.access.log;  
    error_log /var/log/nginx/drupal.howtoforge.local.error.log;  
  
    location = /favicon.ico {  
        log_not_found off;  
        access_log off;  
    }  
  
    location = /robots.txt {  
        allow all;  
        log_not_found off;  
        access_log off;  
    }  
  
    location ~ \\..*/.*\.php$ {  
        return 403;  
    }  
  
    location ~ ^/sites/.*/private/ {  
        return 403;  
    }  
  
    # Блокировать доступ к скриптам в каталоге файлов сайта  
    location ~ ^/sites/[^/]+/files/.*\.php$ {  
        deny all;  
    }  
    location ~ (^|/)\. {  
        return 403;  
    }  
  
    location / {  
        try_files $uri /index.php?$query_string;  
    }  
  
    location @rewrite {  
        rewrite ^/(.*)$ /index.php?q=$1;  
    }  
    location ~ /vendor/.*\.php$ {  
        deny all;  
        return 404;  
    }  
  
  
    location ~ '\.php$|^/update.php' {  
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;  
        include fastcgi_params;  
        # Блокировать атаки httpoxy. См. https://httpoxy.org/.  
        fastcgi_param HTTP_PROXY "";  
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  
        fastcgi_param PATH_INFO $fastcgi_path_info;  
        fastcgi_param QUERY_STRING $query_string;  
        fastcgi_intercept_errors on;  
        fastcgi_pass unix:/run/php-fpm/drupal.sock;  
    }  
    location ~ ^/sites/.*/files/styles/ { # Для Drupal >= 7  
        try_files $uri @rewrite;  
    }  
  
    # Обрабатывать частные файлы через Drupal. Путь частных файлов может приходить  
    # с языковым префиксом.  
    location ~ ^(/[a-z\-]+)?/system/files/ { # Для Drupal >= 7  
        try_files $uri /index.php?$query_string;  
    }  
  
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {  
        try_files $uri @rewrite;  
        expires max;  
        log_not_found off;  
    }  
}

Сохраните файл и выйдите из редактора, когда закончите.

Теперь выполните следующую команду, чтобы проверить конфигурацию Nginx. Вы должны получить сообщение о выводе, такое как ‘тест успешен - синтаксис в порядке‘, что означает, что у вас правильные конфигурации Nginx и нет ошибок.

sudo nginx -t

Далее выполните следующую команду systemctl, чтобы перезапустить службу Nginx и применить новую конфигурацию блока сервера.

sudo systemctl restart nginx

настройка nginx drupal

Служба Nginx теперь должна работать с новой конфигурацией блока сервера ‘/etc/nginx/conf.d/drupal.conf’. Выполните следующую команду, чтобы проверить службу Nginx и убедиться, что служба работает.

sudo systemctl status nginx

Вы должны получить вывод, похожий на следующий — служба Nginx работает.

проверка nginx

Теперь вы должны иметь возможность получить доступ к вашей установке Drupal через ваш домен.

Начало установки Drupal

На этом этапе вы завершили настройку зависимостей пакетов для Drupal. Теперь вы можете получить доступ к вашему Drupal через ваш домен.

На этом этапе вы начнете установку Drupal, а также настроите детали о вашем Drupal и создадите администратора для Drupal.

Откройте веб-браузер и посетите доменное имя вашей установки Drupal (т.е.: https://drupal.howtoforge.local/). Вы должны увидеть страницу установки Drupal.

Выберите язык для вашей установки Drupal или вы можете использовать стандартный ‘English‘ и нажмите кнопку ‘Сохранить и продолжить‘.

выбор языка

Выберите профиль установки для вашей установки и нажмите ‘Сохранить и продолжить‘. В этом примере используется профиль ‘Стандартный‘.

профиль установки

Теперь настройте базу данных для вашей установки Drupal. Введите данные базы данных MariaDB и пользователя, которые вы уже создали ранее.

Нажмите Сохранить и продолжить снова.

данные базы данных

Теперь начнется установка Drupal.

установка drupal

Введите подробную информацию о вашей установке Drupal. Также обязательно используйте ваше имя пользователя для администратора Drupal и используйте надежный пароль.

Нажмите Сохранить и продолжить.

настройки сайта drupal

Когда установка Drupal завершится, вы увидите следующую страницу. Вы можете увидеть сообщения, такие как ‘Поздравляем, вы установили Drupal!‘.

успех установки

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

Выполните следующую команду, чтобы настроить маркировку для файла конфигурации Drupal и каталога.

sudo restorecon -v /var/www/drupal/sites/default/settings.php  
sudo restorecon -Rv /var/www/drupal/sites/default/files

Далее выполните следующую команду, чтобы изменить разрешения файла ‘/var/www/drupal/sites/default/settings.php‘ и сделать его записываемым. Затем отредактируйте файл с помощью редактора nano.

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

Раскомментируйте строку скрипта ‘trusted_host_patterns‘ и добавьте ваше доменное имя. Это включит trusted_host в вашей установке Drupal.

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

Сохраните файл и выйдите из редактора, когда закончите.

Наконец, вернитесь в ваш веб-браузер на вашем сайте Drupal и посетите отчет о статусе по следующему URL. Замените основное доменное имя на ваше доменное имя — или вы можете получить к нему доступ через меню Администрирование > Отчеты.

https://drupal.howtoforge.local/admin/reports/status

В следующем отчете — вы можете увидеть, что 25 системных требований для установки Drupal проверены. Это означает, что ваша установка Drupal корректна и не имеет ошибок.

отчеты о статусе drupal

Заключение

В этом руководстве вы узнали, как установить последнюю версию Drupal v9 на сервер Rocky Linux. Вы также узнали об установке LAMP Stack (Linux, Apache2/httpd, MySQL/MariaDB и PHP) и базовой конфигурации для хостинга Drupal. Кроме того, вы узнали, как устанавливать расширения PHP из репозитория PECL (PHP Extension Community Library).

С Drupal, работающим и защищенным с помощью SSL-сертификатов и включенной конфигурацией ‘trusted_hosts’, вы теперь можете расширить развертывание Drupal, установив новые темы или добавив некоторые плагины для вашей установки Drupal.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.