Поиск по сайту:

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


На этой странице

  1. Предпосылки
  2. Настройка репозиториев
  3. Установка зависимостей пакетов
  4. Настройка брандмауэра
  5. Настройка сервера MariaDB
  6. Установка расширения PECL: процесс загрузки
  7. Настройка PHP-FPM
  8. Загрузка исходного кода Drupal
  9. Настройка SELinux
  10. Настройка веб-сервера Nginx
  11. Начало установки Drupal
  12. Завершение установки Drupal
  13. Заключение

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

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

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

Предпосылки

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

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

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

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

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

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

sudo dnf install epel-release

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

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

Введите y и нажмите ENTER, чтобы продолжить и добавить репозиторий 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 из потока приложений и пакеты 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, чтобы продолжить.

Затем используйте приведенную ниже команду dnf для установки основных пакетов стека LEMP.

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 для некоторых репозиториев.

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

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

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

Настройка брандмауэра

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

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

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

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

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

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

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

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

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

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

sudo systemctl status mariadb

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

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

sudo mysql_secure_installation

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

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

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

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

sudo mysql -u root -p

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

CREATE DATABASE drupaldb;
CREATE USER WITH GRANT OPTION;
FLUSH PRIVILEGES;

Затем выполните следующие запросы, чтобы проверить права пользователя MariaDB [email на доступ и права доступа к базе данных drupaldb.

SHOW GRANTS FOR ;

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

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

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

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

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

which pecl

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

sudo pecl install uploadprogress

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

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

cat <<EOF | sudo tee /etc/php.d/uploadprogress.ini
; configuration for php uploadprogress module
; priority 15
extension=uploadprogress.so
EOF

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

sudo systemctl restart php-fpm

Настройка 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. Кроме того, не забудьте изменить файл sock для пула drupal PHP-FPM на /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 запущена.

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

cat <<EOF | sudo tee /usr/share/nginx/html/info.php
<?php
phpinfo();
?>
EOF

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

Загрузка исходного кода 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, чтобы продолжить.

Затем выполните следующую команду, чтобы настроить маркировку исходного кода 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.hwdomain.io в качестве основного домена для установки Drupal.

server {
    listen 80;
    server_name drupal.hwdomain.io;
    return 301 https://$host$request_uri;
}

server {
    listen 443 http2 ssl;
    server_name drupal.hwdomain.io;

    root /var/www/drupal;

    ssl_certificate      /etc/letsencrypt/live/drupal.hwdomain.io/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/drupal.hwdomain.io/privkey.pem;

    access_log /var/log/nginx/drupal.hwdomain.io.access.log;
    error_log /var/log/nginx/drupal.hwdomain.io.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;
    }

    # Block access to scripts in the site files directory
    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;
        # Block httpoxy attacks. See 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/ { # For Drupal >= 7
        try_files $uri @rewrite;
    }

    # Handle private files through Drupal. Private file's path can come
    # with a language prefix.
    location ~ ^(/[a-z\-]+)?/system/files/ { # For 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 должна работать с новой конфигурацией блока сервера /etc/nginx/conf.d/drupal.conf. Выполните следующую команду, чтобы проверить службу Nginx и убедиться, что служба работает.

sudo systemctl status nginx

Вы должны получить следующий вывод: Служба Nginx запущена.

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

Запуск установки Drupal

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

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

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

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

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

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

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

И теперь начнется установка 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.hwdomain.io/admin/reports/status

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

Заключение

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

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