Установка Drupal 8 на сервере CentOS 7

Опубликовано: 11.12.2019
Автор: Виталий Бочкарев

В этой статье я расскажу, как установить систему управления содержимым сайта Drupal 8 на виртуальном облачном сервере CentOS 7, о котором я рассказывал в статье "Установка облачного AWS сервера CentOS Linux".

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

1. Подключиться к серверу по SSH под тем пользователем, под которым планируется запускать веб-сервис. Этот пользователь должен входить в группу пользователей sudo, чтобы иметь права устанавливать пакеты от имени администратора сервера.

2. Настроить репозитории, установить обновления операционной системы, установить пакеты wget, unzip, php и mariadb.

# Настроить репозитории
sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm 

# Установить обновления операционной системы
sudo yum update

# Установить пакеты wget и unzip
sudo yum install wget unzip

# По умолчанию устанавливается php версии 5, поэтому необходимо явно указать, что необходим пакет версии 7.0
# Установить PHP 7.0
sudo yum install php70w php70w-fpm php70w-gd php70w-mysql php70w-mbstring php70w-opcache php70w-dom

# Установка базы данных MariaDB
sudo yum install mariadb-server mariadb

 

3. Далее надо сделать первоначальную настройку базы сервиса данных и создать базу данных для сайта.

# Активация сервиса базы данных и его запуск
sudo systemctl enable mariadb
sudo systemctl start mariadb

# Настройка сервиса базы данных:
# здесь вместо Pa$$word надо придумать новый пароль для сервиса баз данных, остальные параметры принять по умолчанию
sudo mysql_secure_installation
# >>>> ---- Параметры для настройки сервиса баз данных ---- 
#	Enter current password for root (enter for none):
#	Set root password? [Y/n]
#	New password: Pa$$word
#	Re-enter new password: Pa$$word
#	Remove anonymous users? [Y/n]
#	Disallow root login remotely? [Y/n]
#	Remove test database and access to it? [Y/n]
#	Reload privilege tables now? [Y/n]
# <<<< ---- Конец блока ----

# Создание базы данных для сайта:
# здесь необходмо ввести пароль от сервиса баз данных, заданный на предыдущем шаге,
# имя базы данных - drupal,
# пользователя базы данных - dbuser@localhost и придумать ему пароль вместо Pa$$word
mysql -u root -p
# >>>> ---- Параметры и команды для создания базы данных Drupal ---- 
#	Enter password: Pa$$word
#	create database drupal;
#	create user dbuser@localhost identified by 'Pa$$word';
#	grant all on drupal.* to dbuser@localhost;
#	flush privileges;
#	exit
# <<<< ---- Конец блока ----

 

4. Следующий шаг - установка модуля Composer, который будет обслуживать поект Drupal.

# Установка Git
sudo yum install git

# Скачивание Composer
wget https://getcomposer.org/installer
mv installer composer-setup.php

# Проверка целостности пакета
HASH="$(wget -q -O - https://composer.github.io/installer.sig)"
php -r "echo PHP_EOL; \
  if (hash_file('SHA384', 'composer-setup.php') === '$HASH') \
    { echo 'Installer verified'; } \
  else \
   { echo 'Installer corrupt'; unlink('composer-setup.php'); } \
  echo PHP_EOL;echo PHP_EOL;"

# Установка Composer
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

# Получение версии Composer
composer --version

# Изменение лимитов загрузки файлов модулем php
sudo vi /etc/php.ini
# >>>> ---- Найти параметры post_max_size и upload_max_filesize и установить в них 20М ---- 
#	post_max_size = 20M
#	upload_max_filesize = 20M
# <<<< ---- Конец блока ----

 

5. Когда Composer готов, то можно непосредственно приступить к установке Drupal.

# Установка Drupal через Composer:
# здесь проект Drupal 8 утанавливается в папку /var/www/drupal
sudo /usr/local/bin/composer create-project drupal-composer/drupal-project:8.x-dev /var/www/drupal --no-interaction

# Активация веб-сервиса
sudo systemctl enable httpd 

# Переход в папку проекта Drupal (необходимо всегда переходить в папку проекта, когда необходимо выполнить операции с сайтом)
cd /var/www/drupal

# Установка сайта с названием default с использованием базы данных созданной ранее:
# Здесь необходимо ввести учетные данные пользователя базы данных и имя базы данных (так как пароль содержит спецсимволы - эти символы экранированы)
# По окончании установки команда выведет пароль администратора для управления сайтом - необходимо его запомнить 
#	Installation complete.  User name: admin  User password: Pa$$word
# Сбросить забытый пароль можно командой vendor/bin/drush user-password "admin" "newpassword"
# или сгенерировать одноразовую ссылку для автоматического входа под администратором vendor/bin/drush uli
# Также установщиком будут настроены списки доступа к файлу конфигурации sites/default/settings.php = chmod 0666
# и папке с опубликованными файлами sites/default/files directory = chmod 0777
sudo vendor/bin/drush site-install standard --site-name=default --db-url=mysql://dbuser:Pa\$\$word@localhost/drupal 

# Перезапуск веб-сервиса
sudo systemctl restart httpd 

# Определение имени пользователя, от которого работает веб-сервис - команда выведет имя пользователя
#	apache    1384  0.0  0.8 608432  8948 ?        S    13:50   0:00 /usr/sbin/http
ps auxwwww | grep httpd 

# Выдача прав веб-сервису на запись в папки Drupal
# Cлужебного пользователя apache нужно назначить владельцем папки с файлами веб-контента
sudo chown -R apache:apache /var/www/drupal/web/sites/default/files
# Настройка политики службы SELinux для разрешения доступа веб-сервиса к папке проекта
sudo chcon -R -t httpd_sys_content_rw_t /var/www/drupal
# Здесь для папки с опубликованными файлами выдаются права на чтение для всех пользователей сервера, а для служебных пользователей - полные
sudo chmod -R 774 /var/www/drupal/web/sites/default/files
# Здесь необходимо указать пользователя, от имени кого администрируется веб-сервис, - он станет владельцем проекта Drupal
sudo chown -R myuser:myuser /var/www/drupal 

# Настройка папки сайта - необходимо указать, где в проекте Drupal находится веб-контент
sudo vi /etc/httpd/conf/httpd.conf
# >>>> ---- Найти в файле конфигурации параметр DocumentRoot и исправить его на /var/www/drupal/web ----
#	DocumentRoot "/var/www/drupal/web"
# ---- ---- После этого параметра дописать строки ----
#	<Directory "/var/www/drupal/web">
#	  AllowOverride all
#	  Require all granted
#	</Directory>
# <<<< ---- Конец блока ----

# Перезапустить веб-сервис
sudo systemctl restart httpd

 

6. Ядро Drupal установлено, но необходимо установить и настроить дополнительные модули

# Установка модуля производится командой composer require, например
# sudo /usr/local/bin/composer require drupal/admin_toolbar
# Активация модуля производится командой drush pm-enable, например
# vendor/bin/drush pm-enable admin_toolbar
# Отключение модуля производится командой drush pm-uninstall, например
# vendor/bin/drush pm-uninstall admin_toolbar
# Удаление модуля производится командой composer remove, например
# sudo /usr/local/bin/composer remove drupal/admin_toolbar 

# Переход в папку проекта и установка дополнительных частоиспользуемых модулей Drupal
cd /var/www/drupal

# Улучшение административной панели сайта
sudo /usr/local/bin/composer require drupal/admin_toolbar
vendor/bin/drush pm-enable admin_toolbar
vendor/bin/drush pm-enable admin_toolbar_tools

# Использование метатегов для объектов
sudo /usr/local/bin/composer require drupal/metatag
vendor/bin/drush pm-enable token
vendor/bin/drush pm-enable metatag

# Управление алиасами страниц - автоматическое создание удобочитаемых ссылок
sudo /usr/local/bin/composer require drupal/pathauto
vendor/bin/drush pm-enable ctools
vendor/bin/drush pm-enable pathauto

# Управление перенаправлением для страниц
sudo /usr/local/bin/composer require drupal/redirect
vendor/bin/drush pm-enable redirect

# Группировка полей по вкладкам
sudo /usr/local/bin/composer require drupal/field_group:~3.0
vendor/bin/drush pm-enable field_group

# Управление блоком меню сайта
sudo /usr/local/bin/composer require drupal/menu_force
vendor/bin/drush pm-enable menu_force

# Создание карты сайта
sudo /usr/local/bin/composer require drupal/sitemap
vendor/bin/drush pm-enable sitemap

# Умная обрезка текста
sudo /usr/local/bin/composer require drupal/smart_trim
vendor/bin/drush pm-enable smart_trim

# Интеграция модуля Colorbox в Drupal для продвинутого отображения картинок, а также копирование дополнительных библиотек
sudo /usr/local/bin/composer require drupal/colorbox
vendor/bin/drush pm-enable colorbox
cd ~
wget https://github.com/jackmoore/colorbox/archive/master.zip
unzip master.zip
rm master.zip
sudo mkdir -p /var/www/drupal/web/libraries
sudo mkdir -p /var/www/drupal/web/libraries/colorbox
sudo cp colorbox-master/jquery.colorbox.js /var/www/drupal/web/libraries/colorbox
sudo cp colorbox-master/jquery.colorbox-min.js /var/www/drupal/web/libraries/colorbox
rm -R colorbox-master

# Активация модулей, включенных в ядро
cd /var/www/drupal
vendor/bin/drush pm-enable media
vendor/bin/drush pm-enable media_library
vendor/bin/drush pm-enable language
vendor/bin/drush pm-enable locale

# После установки модулей рекомендуется перестартовать веб-службу
sudo systemctl restart httpd

# После каждого изменения файловой системы сайта рекомендуется очищать кеш сайта
vendor/bin/drush cr 

# Чтобы обновить ядро Drupal и его зависимости, необходимо выполнить команду
# sudo /usr/local/bin/composer update drupal/core --with-dependencies
# Чтобы обновить весь проект Drupal, включая модули, необходимо выполнить команду
# sudo /usr/local/bin/composer update 

 

7. На этом настройка сайта через консоль Linux завершена. Следующие опции настраиваются через веб-интерфейс сайта. Для этого необходимо:

- Войти на сайт под администратором (admin) по ссылке http://имя-сайта-или-ip-адрес/user/login (пароль администратора выдавался при установке сайта).

Drupal 8 installation at CentOS 7 - 01

- Перейти в раздел конфигурации http://имя-сайта-или-ip-адрес/admin/config.

Drupal 8 installation at CentOS 7 - 03

- В подразделе Regional settings http://имя-сайта-или-ip-адрес/admin/config/regional/settings выставить параметры
Default country: Russia,
First day of week: Monday
Default time zone: Moscow

Drupal 8 installation at CentOS 7 - 03

- В подразделе Basic site settings http://имя-сайта-или-ip-адрес/admin/config/system/site-information установить
Site name: Имя сайта
Email address: контактный e-mail

Drupal 8 installation at CentOS 7 - 04

- В подразделе Account settings http://имя-сайта-или-ip-адрес/admin/config/people/accounts выставить параметры:
Who can register accounts?: Administrators only

Drupal 8 installation at CentOS 7 - 05

- В подразделе Langiage http://имя-сайта-или-ip-адрес/admin/config/regional/language нажать Add language: Russian, установить Russian как default, передвинуть его вверх и применить настройки. Английский язык сайта теперь можно удалить (если этого не сделать, то все ссылки будут отображаться с префиксом ru, например http://имя-сайта-или-ip-адрес/ru/admin/config).

Drupal 8 installation at CentOS 7 - 06
Примечание. Возможно, что понадобиться сбросить права к папке опубликованных файлов перед установкой нового языка - в консоли надо повторить команду:
sudo chown -R apache:apache /var/www/drupal/web/sites/default/files

Установка ядра Drupal и его начальная конфигурация завершена.

Drupal 8 installation at CentOS 7 - 07