Мы продолжаем расширять наш маркетплейс. Недавно мы рассказывали, как сделали образ Gitlab, а на этой неделе в нашем маркетплейсе появился Drupal.
Рассказываем, почему выбрали именно его и как создавался образ.
Drupal — удобная и мощная платформа для создания любых типов сайтов: от микросайтов и блогов до крупных социальных проектов, используемая также как основа для веб-приложений, написанная на языке PHP и использующая в качестве хранилища данных реляционные базы данных.
Drupal 9 включает в себя все особенности реализованные в версии 8.9. Ключевое отличие версии 9 от версии 8 состоит в том, что для платформы будут выпускаться обновления и исправления безопасности и после ноября 2021 года. Также в версии 9 упростили процесс обновления, делая процесс обновления с версии 8 еще проще.
Требования к серверу
Для использования Drupal рекомендуется использовать 2 Гб RAM и 2 ядра CPU.
Основные файлы Drupal занимают около 100 Мб, дополнительно вам понадобится место для хранения картинок, базы данных, тем, дополнительных модулей и резервных копий, которое будет зависить от размера вашего сайта.
Для Drupal 9 требуется PHP 7.4 или выше с минимальным ограничением (memory_limit) на память 64 Мб, в случае использования дополнительных модулей рекомендуется установить 128 Мб.
В качестве веб-сервера Drupal может использовать Apache или Nginx, а в качестве базы данных MySQL, PostgreSQL или SQLite.
Мы будем устанавливать Drupal с использованием Nginx и MySQL.
Установка
Обновленим установленные пакеты до последней версии:
sudo dnf update -y
Добавим постоянное разрешение для входящего трафика на http/80 и https/443 порты:
Так как на данный момент в основном репозитории Centos используется версия PHP 7.2, добавим репозиторий REMI с PHP 7.4 (минимальная версия для Drupal 9).
Для этого добавим репозиторий EPEL (требуется репозиторием REMI):
Так как мы делаем шаблон для VDS, а они могут быть медленными, добавим задержку старта mysqld 30 секунд, иначе могут быть проблемы со стартом сервера при первоначальной загрузке системы:
sudo sed -i '/Group=mysql/a
ExecStartPre=/bin/sleep 30
' /usr/lib/systemd/system/mysqld.service
Изменим группу и пользователя из под которого будет работать nginx внеся изменения в /etc/php-fpm.d/www.conf:
sudo sed -i --follow-symlinks 's/user = apache/user = nginx/g' /etc/php-fpm.d/www.conf
sudo sed -i --follow-symlinks 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.conf
Изменим владельца каталога сессий PHP так же соответственно на nginx:
sudo chown -R nginx. /var/lib/php/session
Удалим строки с коментариями из файла конфигурации /etc/nginx/nginx.conf (что бы не было двойных срабатываний для sed):
sudo sed -i -e '/^[ t]*#/d' /etc/nginx/nginx.conf
Добавим в /etc/nginx/nginx.conf настройки компрессии gzip
Добавим в /etc/nginx/nginx.conf настройки индексного файла index.php:
sudo sed -i '/ root /usr/share/nginx/html;/a
index index.php index.html index.htm;
' /etc/nginx/nginx.conf
Добавим настройки для дефолтного сервера обработку php через сокет php-fpm, отключим лог для статических файлов, увеличим время expire, отключим лог доступа и ошибок для favicon.ico и robots.txt и запретим доступ к файлам .ht для всех:
На данном этапе мы выключим сервер и сделаем снапшот:
shutdown -h now
После запуска VDS из снапшота выполним первоначальную настройку MySQL сервера запустив скрипт:
mysql_secure_installation
Включим валидатор паролей:
Would you like to setup VALIDATE PASSWORD component? : y
Зададим пароль пользователя root MySQL:
New password:
Re-enter new password:
Удалим анонимных пользователей:
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Запретим подключаться root удаленно:
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Удалим тестовую базу данных:
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Перезагрузим таблицы привилегий:
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
После этого, для завершения установки, мы можем перейти по адресу vps_ip_address
По этому адресу мы увидим страницу с установкой Drupal.
Выберем используемый язык. Например: русский. Нажмем «Сохранить и продолжить»
Выберем установочный профиль (демо используется исключительно для ознакомления с системой). В нашем случае пусть это будет «стандарт».
На следующей странице зададим имя базе данных, например «drupal». Укажем имя пользователя БД root и пароль заданный ему, при запуске mysql_secure_installation. Нажмем «Сохранить и продолжить».
Дождемся завершения установки и обновления переводов (процесс может занять несколько минут).
Укажем название сайта, зададим email сайта (от имени которого будут приходить уведомления сайта), логин, пароль и email учетной записи администратора Drupal. Также зададим страну и часовой пояс в региональных настройках. И завершим установку нажав «Сохранить и продолжить».
После этого можно перейти в панель управления с созданным логином и паролем администратора Drupal.
Настройка HTTPS (опционально)
Для настройки HTTPS у VDS должно быть действующее DNS имя, укажите в
/etc/nginx/nginx.conf
в разделе server имя сервера (например):
server_name domainname.ru;
Перезапустим nginx:
service nginx restart
Запустим certbot:
sudo /usr/local/bin/certbot-auto --nginx
Введем свой e-mail, cогласимся с условиями сервиса (A), Подписка на рассылку (опционально) (N), выберем доменные имена для которых нужно издать сертификат (Enter для всех).
В случае, если все прошло без ошибок, мы увидим сообщение об успешной выдаче сертификатов и настройке сервера:
Congratulations! You have successfully enabled ...
После этого подключения на 80 порт будут перенаправляться на 443 (https).
Добавим в /etc/crontab для автоматического обновления сертификатов:
Данная настройка предназначена как решение проблемы связанной с динамическим определением base_url, и призвана предотвратить атаки HTTP HOST Header (когда ваш сайт думает, что он кто-то другой).
Для этого нужно указать доверенные доменные имена сайта в файле настроек.
В файле
/usr/share/nginx/html/sites/default/settings.php расскоментируем или добавим настройку с паттернами актуальных имен сайта, например:
Drupal поддерживает APCu — Alternative PHP User Cache, версии 8 и 9 интенсивнее используют APCu как краткосрочный локальный кеш, чем предыдущие версии. Размер кеша по умолчанию (32 Мб) подойдет большинству сайтов, и не может превышать 512 Мб.
Для активации установим модуль PHP APCu:
dnf -y install php-pecl-apcu
Перезапустим nginx и php-fpm:
service nginx restart
service php-fpm restart
В случае использования русского языка и APCu с рекомендованным размером памяти для кеша, в панели управления вы можете увидеть предупреждение, что размер выделенной памяти для кеша отличается от рекомендованного, но фактически все работает правильно, а некорректное предупреждение скорее всего исправят в ближайших обновлениях.
Хотим напомнить, что вы тоже можете сделать для нас образ
Есть три варианта, как поучаствовать.
Подготовьте образ сами и получите 3000 рублей на баланс
Если вы готовы сразу ринуться в бой и самому создать образ, которого вам не хватает, мы зачислим вам 3000 рублей на внутренний баланс — вы сможете потратить на серверы.
Сообщите в поддержку, что вы собираетесь создавать и тестировать образы
Мы зачислим вам 3000 рублей и включим возможность создавать снапшоты
Закажите виртуальный сервер с чистой операционной системой
Установите на эту VPS программное обеспечение и настройте его
Составьте инструкцию или скрипт для развертывания ПО
Создайте снапшот для настроенного сервера
Закажите новый виртуальный сервер, выбрав в выпадающем списке «Шаблон сервера» созданный ранее снапшот
В случае успешного создания сервера, передайте материалы полученные на этапе 6 технической поддержке
В случае ошибки вы можете уточнить у поддержки причину и повторить настройку
Для владельцев бизнеса: предложите свой софт
Если вы — разработчик софта, который разворачивают и используют на VPS, то мы можем включить вас в маркетплейс. Так мы можем помочь вам привести новых клиентов, трафик и узнаваемость. Пишите нам
Расскажите в комментариях, какого образа вам не хватает?