Установка и настройка 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

Установка и настройка CMS 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=ru \
  --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 clean URLs
    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 дня.