Ми продовжуємо розширювати наш маркетплейс. Нещодавно ми розповідали, як зробили образ 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, погодимося з умовами сервісу (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, то ми можемо включити вас в маркетплейс. Так ми можемо допомогти вам привести нових клієнтів, трафік та впізнаваність. Пишіть нам