Встановлення та налаштування CMS Drupal

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Встановлення та налаштування CMS Drupal
Проста
від 1 робочого дня до 3 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Встановлення та налаштування Drupal

Drupal встановлюється через Composer — без ручного завантаження zip-архівів. Це обов'язкова вимога з Drupal 9+: без Composer неможливо правильно оновлювати ядро та модулі.

Вимоги до сервера

  • PHP 8.2+ з розширеннями: pdo_pgsql або pdo_mysql, gd, intl, mbstring, xml, json, opcache
  • PostgreSQL 14+ або MySQL 8.0+ / MariaDB 10.6+
  • Composer 2.x
  • Nginx або Apache

Рекомендовані налаштування PHP (php.ini):

memory_limit = 256M
max_execution_time = 60
upload_max_filesize = 32M
post_max_size = 32M
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 10000

Створення проекту

composer create-project drupal/recommended-project:^10 my-site
cd my-site

# Необхідні інструменти
composer require drush/drush

Структура папок після встановлення:

my-site/
├── composer.json
├── composer.lock
├── config/
│   └── sync/          # конфігурація в YAML
├── vendor/
└── web/               # document root
    ├── core/
    ├── modules/
    │   ├── contrib/   # завантажені модулі
    │   └── custom/    # ваш код
    ├── profiles/
    ├── themes/
    │   ├── contrib/
    │   └── custom/
    └── sites/
        └── default/
            ├── settings.php
            └── files/  # завантажені файли

Document root сервера повинен вказувати на web/, а не на корінь проекту.

Налаштування бази даних

# PostgreSQL
createuser -P drupal
createdb -O drupal drupal

# MySQL
mysql -u root -e "CREATE DATABASE drupal; CREATE USER drupal@localhost IDENTIFIED BY 'password'; GRANT ALL ON drupal.* TO drupal@localhost;"

Встановлення через Drush (без веб-установника)

./vendor/bin/drush site:install standard \
  --account-name=admin \
  --account-pass='StrongPassword123!' \
  [email protected] \
  --site-name="Мій сайт" \
  [email protected] \
  --locale=uk \
  --db-url="pgsql://drupal:password@localhost/drupal" \
  --no-interaction

Опція standard — базовий профіль з найчастіше використовуваними модулями. Є також minimal (голе ядро) та demo_umami (демонстраційний контент для знайомства).

Налаштування settings.php

// web/sites/default/settings.php

// Директорія конфігурації (поза document root — важливо для безпеки)
$settings['config_sync_directory'] = '../config/sync';

// Trusted hosts — обов'язково для production
$settings['trusted_host_patterns'] = [
  '^example\.com$',
  '^www\.example\.com$',
];

// Відключити відображення помилок на production
$config['system.logging']['error_level'] = 'hide';

// Hash salt — генерується при встановленні, ніколи не змінювати після
$settings['hash_salt'] = 'генероване-значення-з-secrets';

// Приватна директорія для файлів (не доступна через web)
$settings['file_private_path'] = '../private';

Для локальної розробки та production, виносимо різні налаштування в settings.local.php:

// settings.php — в кінці файла
if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
  include $app_root . '/' . $site_path . '/settings.local.php';
}
// settings.local.php — не коммітимо в git
$config['system.performance']['css']['preprocess'] = FALSE;
$config['system.performance']['js']['preprocess'] = FALSE;
$settings['cache']['bins']['render'] = 'cache.backend.null';
$settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';
$settings['extension_discovery_scan_tests'] = FALSE;

Конфігурація Nginx

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/my-site/web;
    index index.php;

    # Drupal чисті URL
    location / {
        try_files $uri /index.php?$query_string;
    }

    # Заборона доступу до системних файлів
    location ~ (^|/)\. {
        return 403;
    }
    location ~ ^/sites/.*/private/ {
        return 403;
    }
    location ~ ^/sites/[^/]+/files/.*\.php$ {
        deny all;
    }

    # PHP
    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        fastcgi_pass php-fpm:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_read_timeout 300;
    }

    # Статичні файли
    location ~* \.(jpg|jpeg|gif|png|webp|svg|css|js|ico|woff2)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
        try_files $uri @drupal;
    }

    location @drupal {
        rewrite ^/(.*)$ /index.php?q=$1 last;
    }
}

Базові модулі після встановлення

# Включаємо потрібні модулі ядра
drush en \
  language locale content_translation \
  path pathauto token \
  views views_ui \
  field_ui block_content \
  menu_link_content \
  -y

# Contrib модулі
composer require drupal/admin_toolbar drupal/metatag drupal/redirect drupal/pathauto
drush en admin_toolbar admin_toolbar_tools metatag redirect -y

Оновлення Drupal

# Перевірити доступні оновлення
composer outdated drupal/*

# Оновити ядро
composer update drupal/core-recommended drupal/core-composer-scaffold --with-all-dependencies

# Застосувати оновлення бази даних
drush updatedb --no-interaction
drush cache:rebuild

Терміни

Чисте встановлення, налаштування сервера, базові модулі, первинна конфігурація: 1 день. З переносом існуючого контенту та налаштуванням багатомовності: 2–3 дні.