
Drupal — одна из ведущих в мире CMS-платформ с открытым исходным кодом. Она гибкая, масштабируемая и может использоваться для создания различных типов веб-сайтов: от небольших личных блогов до крупных корпоративных, политических и правительственных сайтов.
В этом руководстве мы объясним, как установить Drupal 8.6 на CentOS 7.
Существует несколько способов установки Drupal. В этом руководстве описываются шаги, необходимые для установки Drupal с использованием шаблона Composer для проектов Drupal под названием drupal-project.
Мы будем использовать Nginx в качестве веб-сервера, последнюю версию PHP 7.2 и MySQL/MariaDB в качестве сервера базы данных.
Предпосылки
Перед началом установки убедитесь, что выполнены следующие предварительные условия:
- Укажите доменное имя, указывающее на IP-адрес вашего публичного сервера. Мы будем использовать
example.com. - Установите Nginx .
- Установите SSL-сертификат для своего домена. Вы можете установить бесплатный SSL-сертификат Let's Encrypt, следуя этим инструкциям .
- Выполнен вход как пользователь с привилегиями sudo .
Создать базу данных MySQL
Первым шагом является создание новой базы данных и учетной записи пользователя, а также предоставление пользователю соответствующих разрешений.
Если на вашем сервере уже установлены MySQL или MariaDB , вы можете пропустить этот шаг. В противном случае вы можете установить пакет сервера MariaDB 5.5 из репозиториев CentOS по умолчанию, введя:
sudo yum install mariadb-server
Для новых установок MariaDB/MySQL рекомендуется выполнить команду mysql_secure_installation , чтобы повысить безопасность сервера базы данных.
Войдите в оболочку MySQL, введя следующую команду, и введите пароль при появлении соответствующего запроса:
mysql -u root -p
Чтобы создать базу данных с именем drupal , пользователя с именем drupaluser и предоставить пользователю необходимые разрешения, выполните следующие команды:
CREATE DATABASE drupal CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON drupal.* TO 'drupaluser'@'localhost' IDENTIFIED BY 'change-with-strong-password';
Установить PHP
CentOS 7 поставляется с PHP версии 5.4, которая устарела и больше не поддерживается. Рекомендуемая версия PHP для Drupal — PHP 7.2.
Чтобы установить PHP 7.2 на CentOS 7, сначала нам нужно включить репозитории EPEL и Remi:
sudo yum install epel-release yum-utilssudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpmsudo yum-config-manager --enable remi-php72
После включения репозиториев для установки PHP 7.2 и всех необходимых расширений PHP выполните следующие команды:
sudo yum install php-cli php-fpm php-mysql php-json php-opcache php-mbstring php-xml php-gd php-curl git
Мы установили PHP FPM, поскольку будем использовать Nginx в качестве веб-сервера.
По умолчанию PHP FPM будет работать от имени пользователя apache на порту 9000. Изменим пользователя на nginx и переключимся с TCP-сокета на Unix-сокет. Для этого откройте файл /etc/php-fpm.d/www.conf и отредактируйте строки, выделенные жёлтым:
/etc/php-fpm.d/www.conf
... user = nginx ... group = nginx ... listen = /run/php-fpm/www.sock ... listen.owner = nginx listen.group = nginx
Убедитесь, что каталог /var/lib/php имеет правильного владельца, с помощью следующей команды chown :
sudo chown -R root:nginx /var/lib/php
Наконец, включите и запустите службу PHP FPM:
sudo systemctl enable php-fpmsudo systemctl start php-fpm
Установить Composer
Composer — это менеджер зависимостей для PHP. Мы загрузим шаблон Drupal и установим все необходимые компоненты Drupal с помощью Composer.
Следующая команда установит Composer глобально, загрузив установщик Composer с помощью curl и переместив файл в каталог /usr/local/bin :
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
Проверьте установку, выполнив следующую команду, которая выведет версию Composer:
composer --version
Вывод должен выглядеть примерно так:
Composer version 1.8.4 2019-02-11 10:52:10
Установить Drupal
Теперь, когда Composer установлен, создайте новый проект Drupal, используя шаблон Drupal внутри каталога /var/www/my_drupal :
sudo /usr/local/bin/composer create-project drupal-composer/drupal-project:8.x-dev /var/www/my_drupal --stability dev --no-interaction
Приведённая выше команда загрузит шаблон, получит все необходимые PHP-пакеты и запустит скрипты, необходимые для подготовки проекта к установке. Процесс может занять несколько минут, и в случае успеха вывод будет выглядеть следующим образом:
Create a sites/default/settings.php file with chmod 0666 Create a sites/default/files directory with chmod 0777
Следующий шаг — установка Drupal с помощью Drush. В команде ниже мы передаем базу данных MySQL и информацию о пользователе, созданную в первом разделе:
cd /var/www/my_drupalsudo vendor/bin/drush site-install --db-url=mysql://drupaluser:change-with-strong-password@localhost/drupal
Установщик выведет следующее сообщение. Для продолжения просто нажмите Enter.
You are about to DROP all tables in your 'drupal' database. Do you want to continue? (yes/no) [yes]:
После завершения установки скрипт выведет имя пользователя и пароль администратора. Вывод должен выглядеть примерно так:
[notice] Starting Drupal installation. This takes a while. [success] Installation complete. User name: admin User password: frxka2Db5v
Наконец, установите правильные разрешения, чтобы веб-сервер имел полный доступ к файлам и каталогам сайта:
sudo chown -R nginx: /var/www/my_drupal
Настройка Nginx
К настоящему моменту в вашей системе уже должен быть установлен Nginx с SSL-сертификатом. Если нет, проверьте предварительные требования для этого руководства.
Чтобы создать новый серверный блок для нашего нового проекта Drupal, мы воспользуемся рецептом Nginx с официального сайта Nginx.
Откройте текстовый редактор и создайте следующий файл:
sudo nano /etc/nginx/conf.d/example.com
/etc/nginx/conf.d/example.com
# Redirect HTTP -> HTTPS server { listen 80 ; server_name www.example.com example.com ; include snippets/letsencrypt.conf ; return 301 https://example.com $request_uri ; } # Redirect WWW -> NON WWW server { listen 443 ssl http2 ; server_name www.example.com ; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem ; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem ; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem ; include snippets/ssl.conf ; return 301 https://example.com $request_uri ; } server { listen 443 ssl http2 ; server_name example.com ; root /var/www/my_drupal/web ; # SSL parameters ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem ; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem ; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem ; include snippets/ssl.conf ; # log files access_log /var/log/nginx/example.com.access.log ; error_log /var/log/nginx/example.com.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 site files directory location ~ ^/sites/[^/]+/files/.*.php$ { deny all ; } # Block access to "hidden" files and directories whose names begin with a # period. This includes directories used by version control systems such # as Subversion or Git to store control files. location ~ (^|/). { return 403 ; } location / { try_files $uri /index.php? $query_string ; } location @rewrite { rewrite ^/(.*) $ /index.php?q= $1 ; } # Don't allow direct access to PHP files in the vendor directory. 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/www.sock ; } # Fighting with Styles? This little gem is amazing. # location ~ ^/sites/.*/files/imagecache/ { # For Drupal <= 6 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 ~ ^(/[az-]+)?/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 ; } }
Не забудьте заменить example.com на свой домен Drupal и указать правильный путь к файлам SSL-сертификатов. Все HTTP-запросы будут перенаправляться на HTTPS . Фрагменты, используемые в этой конфигурации, созданы в этом руководстве .
Перед перезапуском службы Nginx выполните проверку, чтобы убедиться в отсутствии синтаксических ошибок:
sudo nginx -t
Чтобы изменения вступили в силу, перезапустите службу Nginx , введя:
sudo systemctl restart nginx
Тест установки
Откройте браузер, введите свой домен и, если установка прошла успешно, появится экран, подобный следующему:

Вы можете войти в систему как администратор и начать настраивать новую установку Drupal.
Установка модулей и тем Drupal
Теперь, когда ваш проект Drupal установлен, вам нужно установить некоторые модули и темы. Модули и темы Drupal размещаются в пользовательском репозитории Composer, который drupal-project настраивает автоматически.
Чтобы установить модуль или тему, достаточно перейти в каталог проекта cd и ввести команду composer require drupal/module_or_theme_name . Например, если мы хотим установить модуль Pathauto , нужно выполнить следующую команду:
cd /var/www/my_drupalsudo -u nginx /usr/local/bin/composer require drupal/pathauto
Добавляя sudo -u nginx мы запускаем команду от имени пользователя nginx
Using version ^1.3 for drupal/pathauto ./composer.json has been updated > DrupalProjectcomposerScriptHandler::checkComposerVersion Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 3 installs, 0 updates, 0 removals - Installing drupal/token (1.5.0): Downloading (100%) - Installing drupal/ctools (3.2.0): Downloading (100%) - Installing drupal/pathauto (1.3.0): Downloading (100%) Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested. Writing lock file Generating autoload files > DrupalProjectcomposerScriptHandler::createRequiredFiles
Как видно из приведенного выше вывода, Composer также устанавливает для нас все зависимости пакетов.
Обновление ядра Drupal
Перед обновлением всегда рекомендуется создать резервную копию файлов и базы данных. Вы можете воспользоваться модулем резервного копирования и миграции или создать резервную копию базы данных и файлов вручную.
Для резервного копирования установочных файлов вы можете использовать следующую команду rsync , конечно, вам нужно будет указать правильный путь к установочному каталогу:
sudo rsync -a /var/www/my_drupal/ /var/www/my_drupal_$(date +%F)
Для резервного копирования базы данных можно использовать стандартную команду mysqldump :
mysqldump -u root -p > /var/www/my_drupal_database_$(date +%F).sql
или drush sql-dump :
cd /var/www/my_drupalvendor/bin/drush sql-dump > /var/www/my_drupal_database_$(date +%F).sql
Теперь, когда мы создали резервную копию, мы можем продолжить и обновить все файлы ядра Drupal, выполнив следующую команду:
sudo -u nginx /usr/local/bin/composer update drupal/core webflo/drupal-core-require-dev symfony/* --with-dependencies
Заключение
Поздравляем! Вы успешно установили Drupal 8 с помощью Composer и научились устанавливать модули и темы. Теперь вы можете приступить к настройке своего сайта. Руководство пользователя Drupal 8 — хорошая отправная точка для получения дополнительной информации об управлении вашей установкой Drupal. Также не забудьте посетить проект шаблона Drupal Composer на Github.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.
centos drupal mysql mariadb cms nginx composer Не используете CentOS 7?
Выберите другую ОС: убунту 18.04
Связанные руководства
- Как установить Drupal на Ubuntu 18.04
- Как установить WordPress с Nginx на CentOS 7
- Как установить WordPress с Apache на CentOS 7
- Как установить и настроить Redmine на CentOS 7
- Как установить Magento 2 на Ubuntu 18.04
- Как установить phpMyAdmin с Nginx на CentOS 7
- Как установить WordPress с Nginx в Ubuntu 18.04