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

Как установить Drupal CMS с Apache2 на Ubuntu 22.04


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

  1. Предпосылки
  2. Установка веб-сервера Apache2
  3. Установка сервера MariaDB
  4. Установка и настройка PHP 8.x
  5. Установка Composer
  6. Загрузить последнюю версию Drupal
  7. Настройка виртуального хоста Apache2 для Drupal
  8. Запуск веб-установщика Drupal
  9. Заключение

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

В этом руководстве я покажу вам, как установить последнюю версию Drupal в системе Ubuntu 22.04. Это руководство включает установку некоторых зависимостей пакетов, таких как веб-сервер Apache2, база данных MariaDB, PHP 8.1 и Composer в качестве инструмента управления пакетами PHP. Цель состоит в том, чтобы вы завершили установку Drupal со стеком LAMP и защитили сертификаты SSL.

Предпосылки

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

  • Сервер Ubuntu 22.04. В этой демонстрации используется сервер Ubuntu с именем хоста server-ubuntu и включенным брандмауэром UFW.
  • Пользователь без полномочий root с правами администратора.
  • Доменное имя указывало на IP-адрес сервера Ubuntu.

Установка веб-сервера Apache2

На первом этапе вы установите веб-сервер Apache через APT из репозиториев Ubuntu. На момент написания этой статьи для последней версии Drupal 9 требовался как минимум Apache v2.x.

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

Перед установкой пакетов выполните следующую команду apt от имени пользователя sudo без полномочий root, чтобы обновить и обновить репозиторий индексов пакетов. Вы также можете использовать прямого пользователя root на своем сервере.

sudo apt update

Теперь установите веб-сервер Apache, выполнив приведенную ниже команду apt. Вам будет предложено подтвердить установку Apache, введите Y, чтобы согласиться, и нажмите ENTER.

sudo apt install apache2

Затем используйте следующие команды systemctl ниже, чтобы проверить и проверить службу apache2.

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

sudo systemctl is-enabled apache2
sudo systemctl status apache2

Наконец, вам нужно будет добавить правило «Apache Full» в брандмауэр UFW. Правило «Apache Full» автоматически разрешает доступ к портам HTTP и HTTPS, и это включено по умолчанию в пакеты Apache.

Выполните следующую команду, чтобы добавить правило «Apache Full». Затем проверьте и проверьте состояние брандмауэра UFW. Вы должны получить вывод, что правило «Apache Full» добавлено в брандмауэр UFW.

sudo ufw allow "Apache Full"
sudo ufw status

Установка сервера MariaDB

Drupal поддерживает несколько СУБД (система управления реляционными базами данных), таких как MySQL/MariaDB, PostgreSQL и SQLite. В этом примере вы установите Drupal с сервером базы данных MariaDB.

Текущая последняя версия Drupal 9 требует как минимум сервера MariaDB версии 10.3.x. И последний репозиторий Ubuntu предоставляет сервер MariaDB v10.6.

Используйте следующую команду apt для установки пакетов сервера MariaDB. При появлении запроса на подтверждение установки введите Y для подтверждения, затем нажмите ENTER.

sudo apt install mariadb-server mariadb-client

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

Вы получите сообщение о том, что сервер mariadb включен и будет запускаться автоматически при загрузке/запуске системы. И текущий статус службы mariadb работает.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

Теперь, когда служба mariadb запущена, вам необходимо настроить и защитить установку сервера MariaDB. Для этого вы можете использовать инструмент командной строки mysql_secure_installation, который предоставляется серверным пакетом MariaDB.

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

sudo mysql_secure_installation

Теперь вам будут заданы следующие вопросы:

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

На этом этапе вы настроили корневой пароль MariaDB и защитили установку сервера MariaDB. Теперь вы создадите новую базу данных и пользователя для Drupal. Для этого вы должны сначала войти в оболочку MariaDB с помощью команды mysql (клиент MySQL/MariaDB).

Используйте следующую команду mysql, чтобы войти в оболочку MariaDB как пользователь root. Когда будет предложено ввести пароль, введите свой корневой пароль MariaDB. Кроме того, вы можете просто нажать ENTER, если вы запускаете эту команду от имени пользователя root системы Linux.

sudo mysql -u root -p

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

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

Теперь выполните еще один следующий запрос, чтобы проверить привилегии пользователя MariaDB [электронная почта защищена]. Затем вы можете выйти из оболочки MariaDB с помощью запроса quit или просто нажать Ctrl+d.

Вы должны получить вывод, что пользователь MariaDB [email имеет доступ к базе данных drupaldb.

SHOW GRANTS FOR ;
quit

Установка и настройка PHP 8.x

На момент написания этой статьи для установки последней версии Drupal 9 рекомендуется использовать PHP 8.x. Также вам потребуется установить некоторые дополнительные расширения PHP, такие как php-apcu для кеша, php-gd для обработки изображений, php-mysql в качестве драйвера для базы данных MariaDB и другие.

В этом примере вы установите PHP 8.1 из репозиториев Ubuntu. Используйте следующую команду apt для установки PHP 8.1 и некоторых необходимых дополнительных расширений и пакетов.

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

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 вам нужно будет установить дополнительное расширение PHP uploadprogress из репозитория PECL (Библиотека сообщества расширений PHP). Для этого вы можете использовать командную строку pecl, предоставляемую пакетом php-pear.

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

Используйте приведенную ниже команду pecl, чтобы установить PHP-расширение uploadprogress. Теперь команда pecl загрузит исходный код расширения uploadprogress, автоматически скомпилирует и установит расширение.

sudo pecl install uploadprogress

После завершения установки выполните следующую команду, чтобы создать новый файл конфигурации для PHP-расширения uploadprogress.

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

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

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

Вы завершили установку всех пакетов PHP для Drupal. Теперь вам нужно настроить установку PHP, отредактировав файл php.ini.

Откройте файл /etc/php/8.1/apache2/php.ini в текстовом редакторе. В этом примере мы будем использовать nano.

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

Измените некоторые параметры, как показано ниже. Параметр memory_limit должен зависеть от памяти сервера, а параметр date.timezone должен зависеть от вашего часового пояса.

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

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

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

sudo systemctl restart apache2

Теперь, когда вы завершили установку и настройку PHP 8.1, вы можете проверить установку, создав файл phpinfo.

Выполните следующую команду, чтобы создать новый файл phpinfo /var/www/html/info.php. Этот файл содержит скрипт phpinfo, который покажет вам подробные настройки вашего PHP в вашем веб-браузере.

cat <<EOF | sudo tee /var/www/html/info.php
<?php
phpinfo();
?>
EOF

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

Установка Композитора

Композитор — это инструмент командной строки для управления зависимостями пакетов PHP. Вам необходимо установить Composer, который будет использоваться для установки зависимостей пакетов PHP от вашей установки Drupal.

Чтобы установить Composer, выполните следующую команду.

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');"

Вот что использовала каждая команда:

  • Первая команда загрузит сценарий установки Composer в файл composer-setup.php. Затем вторая команда проверит хэш сценария установщика. Убедитесь, что вы получили выходное сообщение «Установщик проверен».
  • Последние две команды запустят сценарий установки и установят инструмент управления зависимостями пакетов Composer PHP. После этого скрипт-установщик composer-setup.php будет удален.
  • Наконец, вы получите двоичный файл Composer под именем composer.phar в текущем рабочем каталоге.

Затем выполните следующую команду, чтобы переместить двоичный файл composer.phar в /usr/local/bin/composer. Это действие позволит всем пользователям выполнять команду композитора.

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

Теперь вы можете запустить команду composer, чтобы проверить установку. Следующая команда покажет вам подробную страницу справки команды Composer.

composer --help

Скачать последнюю версию Drupal

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

Используйте следующую команду wget, чтобы загрузить последнюю версию Drupal. Вы увидите файл drupal.tar.gz в вашем текущем рабочем каталоге.

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

Теперь извлеките файл drupal.tar.gz с помощью приведенной ниже команды tar. Затем переместите извлеченный каталог drupal в /var/www/drupal. Этот каталог будет использоваться в качестве каталога Document-root для вашей установки Drupal.

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

Затем измените владельца и права доступа к каталогу установки Drupal /var/www/drupal с помощью следующей команды. Владелец должен быть пользователем и группой www-data с правами обычного пользователя 755.

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

Теперь перейдите в каталог /var/www/drupal и запустите команду composer, как показано ниже, чтобы установить все зависимости PHP для вашей установки Drupal.

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

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

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

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

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

sudo a2enmod rewrite ssl headers deflate

Теперь создайте новый файл виртуального хоста для drupal /etc/apache2/sites-available/drupal.conf, используя следующую команду. В этом примере используется редактор nano.

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

Добавьте следующую полную конфигурацию для виртуального хоста Drupal. Обязательно измените имя домена и путь SSL-сертификатов. В этой демонстрации мы будем использовать домен hwdomain.io для нашей установки Drupal.

<VirtualHost *:80>

    ServerName hwdomain.io
    ServerAdmin
        DocumentRoot /var/www/drupal

        # Add security
        php_flag register_globals off

        ErrorLog ${APACHE_LOG_DIR}/hwdomain.io.error.log
        CustomLog ${APACHE_LOG_DIR}/hwdomain.io.access.log combined

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/hwdomain.io/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/hwdomain.io/privkey.pem

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>

        <Directory /var/www/drupal>
                Options FollowSymlinks
                #Allow .htaccess
                AllowOverride All
                Require all granted
                <IfModule security2_module>
                        SecRuleEngine Off
                        # or disable only problematic rules
                </IfModule>
        </Directory>

        <Directory /var/www/drupal/>
            RewriteEngine on
            RewriteBase /
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
        </Directory>

    </VirtualHost>

</IfModule>

Сохраните конфигурацию и закройте файл, когда закончите.

Затем выполните следующую команду, чтобы активировать файл виртуального хоста drupal.conf. Затем протестируйте и проверьте настройки Apache. Если ваша конфигурация Apache верна, вы получите выходное сообщение, например Syntax OK.

sudo a2ensite drupal.conf
sudo apachectl configtest

Наконец, перезапустите службу apache2, чтобы применить новые изменения и новый файл виртуального хоста. Теперь вы можете получить доступ к установщику Drupal через доменное имя и веб-браузер.

sudo systemctl restart apache2

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

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

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

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

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

Теперь введите данные базы данных MariaDB для вашей установки drupal и нажмите «Сохранить и продолжить». Если вы используете MariaDB на другом хосте, используйте ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ, чтобы ввести IP-адрес хоста сервера MariaDB.

И начнется установка Drupal.

Затем введите сведения о конфигурации вашего сайта Drupal, включая имя сайта и пользователя-администратора вашего Drupal. Когда закончите, нажмите Сохранить и продолжить.

Теперь вы должны получить страницу, информирующую вас о завершении установки Drupal. Вы можете увидеть сообщение, такое как «Поздравляем, вы установили Drupal!».

Вы завершили установку Drupal, но вам все еще нужно настроить дополнительные параметры. В этом примере вы настроите конфигурацию Drupal trust_host, которая защитит вашу установку Drupal от атак с использованием заголовка HTTP HOST.

Чтобы включить конфигурацию trust_host, вам потребуется отредактировать конфигурацию Drupal /var/www/drupal/sites/default/settings.php.

Выполните следующую команду, чтобы сделать файл /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

Нажмите Ctrl+w для поиска шаблона trust_host. Затем добавьте в файл следующую конфигурацию и обязательно измените доменное имя при установке Drupal. Имя домена должно быть отформатировано в Regex.

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

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

sudo chmod 444 /var/www/drupal/sites/default/settings.php

Наконец, вернитесь в свой веб-браузер и просмотрите отчет о состоянии вашей установки Drupal (например, https://hwdomain.io/admin/reports/status).

Вы увидите подробную конфигурацию сервера вашей установки Drupal. Кроме того, вы можете видеть, что все 25 конфигураций Drupal успешно проверены.

Прокрутите страницу вниз, и вы увидите подробные системные конфигурации вашей установки Drupal. Далее вы можете увидеть, что trust_host и настройки Upload Progress включены.

Заключение

В этом руководстве вы установили и настроили последнюю версию Drupal v9 на сервере Ubuntu 22.04. Вы также изучили базовую установку стека LAMP (Linux, Apache, MariaDB и PHP) в системе Ubuntu и базовую установку расширения PHP из репозитория PECL (библиотека сообщества расширений PHP).

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