Настройка локального окружения в Drupal
При разработке на Drupal важно отделить рабочие настройки от локальных. Это особенно удобно, если вы используете кэш, агрегируете CSS/JS и работаете с шаблонами Twig. В этой статье покажу, как настроить локальное окружение с помощью файлов settings.local.php и services.local.yml.
1. Создание файлов и права доступа
В папке web/sites/default по умолчанию часто установлены строгие права доступа. Чтобы создать файлы, выполните:
cd web/sites/default
chmod u+w .
touch settings.local.php
touch services.local.yml
chmod a-w .
2. Содержимое settings.local.php
Пример базовой конфигурации:
<?php
$databases['default']['default'] = [
'database' => 'имя_базы',
'username' => 'пользователь',
'password' => 'пароль',
'host' => 'localhost',
'port' => '3306',
'driver' => 'mysql',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
'namespace' => 'Drupal\\mysql\\Driver\\Database\\mysql',
'autoload' => 'core/modules/mysql/src/Driver/Database/mysql/',
];
$config['system.logging']['error_level'] = 'verbose';
$settings['twig_debug'] = TRUE;
$settings['cache']['bins']['render'] = 'cache.backend.null';
$settings['cache']['bins']['page'] = 'cache.backend.null';
$settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';
$config['system.performance']['css']['preprocess'] = FALSE;
$config['system.performance']['js']['preprocess'] = FALSE;
$settings['skip_permissions_hardening'] = TRUE;
$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.local.yml';
Примечание: параметр 'unix_socket' указывается только при работе с MAMP на macOS. В других средах он не требуется и может быть опущен.
3. Подключение файла в settings.php
В settings.php в самом низу есть такая строка которую надо расскоментировать:
if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
include $app_root . '/' . $site_path . '/settings.local.php';
}
Важно: этот блок можно оставить как есть на продакшене. Если файла settings.local.php нет — Drupal его просто проигнорирует. Отключать ничего не нужно. Но если вы полностью на рабочий сервер перенесли архив сайта, то либо эту строку надо закоментировать либо удалить эти два файла локальной разработки с рабочего сервера.
4. Содержимое services.local.yml
parameters:
http.response.debug_cacheability_headers: true
twig.config:
debug: true
auto_reload: true
cache: false
services:
cache.backend.null:
class: Drupal\Core\Cache\NullBackendFactory
5. Игнорирование в Git
Добавьте в .gitignore:
/web/sites/*/settings.local.php
/web/sites/*/services.local.yml
6. Результат
- Twig-кэш отключён, отладка включена
- Все кэши отключены
- CSS/JS не агрегируются
- Конфигурация не попадёт на сервер
Теперь вы можете спокойно разрабатывать проект в локальной среде с полной изоляцией от боевых настроек и без лишней головной боли.