В этой статье я расскажу, как установить систему управления содержимым сайта 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 (пароль администратора выдавался при установке сайта).
- Перейти в раздел конфигурации http://имя-сайта-или-ip-адрес/admin/config.
- В подразделе Regional settings http://имя-сайта-или-ip-адрес/admin/config/regional/settings выставить параметры
Default country: Russia,
First day of week: Monday
Default time zone: Moscow
- В подразделе Basic site settings http://имя-сайта-или-ip-адрес/admin/config/system/site-information установить
Site name: Имя сайта
Email address: контактный e-mail
- В подразделе Account settings http://имя-сайта-или-ip-адрес/admin/config/people/accounts выставить параметры:
Who can register accounts?: Administrators only
- В подразделе Langiage http://имя-сайта-или-ip-адрес/admin/config/regional/language нажать Add language: Russian, установить Russian как default, передвинуть его вверх и применить настройки. Английский язык сайта теперь можно удалить (если этого не сделать, то все ссылки будут отображаться с префиксом ru, например http://имя-сайта-или-ip-адрес/ru/admin/config).
sudo chown -R apache:apache /var/www/drupal/web/sites/default/files
Установка ядра Drupal и его начальная конфигурация завершена.