К содержанию
Medusa
Документация

Конфигурация

Конфигурация фреймворка Medusa хранится в каталоге www/config/. Здесь задаются параметры приложения, подключения к базе данных, почты, очередей, хранилища, автозагрузчика и фронтенд-сборки.

app.php

Файл www/config/app.php хранит общие параметры приложения и содержит карту пространств имён для автозагрузчика medusa/Start/Loader.php. Например, в нём можно задать базовый адрес сайта через ключ APP_URL, флаг установки часового пояса приложения через APP_SET_UTC_TIME_ZONE и настроить автозагрузку классов:

$_ENV['APP_URL'] = 'http://localhost:8001';
$_ENV['APP_SET_UTC_TIME_ZONE'] = true;

$_ENV['LOADER_ASSOC_NAMESPACE_DIRECTORY'] = [
    'Medusa' => 'medusa',
    'App' => 'app',
];

В этом примере задаётся базовый адрес приложения, включается установка часового пояса PHP в UTC и настраивается карта пространств имён, где поиск классов ядра из пространства имён Medusa будет выполнен в каталоге www/medusa/, а пользовательские классы из пространства имён App — в каталоге www/app/.

  • APP_URL — базовый адрес приложения, например http://localhost:8001;
  • APP_SET_UTC_TIME_ZONE — включать ли установку часового пояса PHP в UTC;
  • LOADER_ASSOC_NAMESPACE_DIRECTORY — карта пространств имён и каталогов для автозагрузчика.

database.php

Файл www/config/database.php содержит параметры подключения к базе данных:

  • BOOTSTRAP_PDO_AUTOCONNECT — включать ли автоподключение к базе данных в bootstrap;
  • PDO_TYPE — драйвер базы данных, например mysql;
  • PDO_HOST — хост базы данных, например localhost;
  • PDO_PORT — порт базы данных, например 3306;
  • PDO_NAME — имя базы данных, например app;
  • PDO_CHARSET — кодировка соединения, например utf8;
  • PDO_USER — имя пользователя, например medusa;
  • PDO_PASSWORD — пароль пользователя;
  • PDO_OPTIONS — дополнительные настройки PDO:
    • PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION — выбрасывать исключения при ошибках;
    • PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC — возвращать записи как ассоциативные массивы;
    • PDO::ATTR_EMULATE_PREPARES => true — включить эмуляцию prepared statements.
  • DB_WAIT_TIMEOUT — таймаут ожидания неактивного соединения в секундах.
  • DB_SET_UTC_TIME_ZONE — включать ли установку часового пояса сессии базы данных в UTC.

Для отдельного CLI-скрипта или воркера итоговый флаг автоподключения к базе данных можно переопределить служебной PHP-константой BOOTSTRAP_OVERRIDE_PDO_AUTOCONNECT до подключения файла www/medusa/index.php. Если такая константа определена, она имеет приоритет над параметром конфигурации BOOTSTRAP_PDO_AUTOCONNECT.

mail.php

Файл www/config/mail.php задаёт параметры исходящей почты:

  • FROM_MAIL — адрес отправителя;
  • REPLY_TO_MAIL — адрес для ответных писем;
  • FAKE_EMAIL_DOMAIN_LIST — дополнительные фейковые домены для проверки email-адресов.

storage.php

Файл www/config/storage.php управляет локальным хранилищем файлов и Redis-сервером:

  • STORAGE_ROOT_PATH — базовый путь, например /storage;
  • STORAGE_DIR_PERMISSIONS — права доступа для новых директорий, например 0755;
  • STORAGE_FILE_PERMISSIONS — права доступа для новых файлов, например 0644;
  • BOOTSTRAP_REDIS_AUTOCONNECT — включать ли автоподключение к Redis-серверу в bootstrap;
  • REDIS_SCHEME — схема подключения Redis-сервера, например tcp;
  • REDIS_HOST — хост Redis-сервера, например 127.0.0.1;
  • REDIS_PORT — порт Redis-сервера, например 6379.

Для отдельного CLI-скрипта или воркера итоговый флаг автоподключения к Redis-серверу можно переопределить служебной PHP-константой BOOTSTRAP_OVERRIDE_REDIS_AUTOCONNECT до подключения файла www/medusa/index.php. Если такая константа определена, она имеет приоритет над параметром конфигурации BOOTSTRAP_REDIS_AUTOCONNECT.

queue.php

Файл www/config/queue.php задаёт параметры подключения к RabbitMQ-серверу:

  • BOOTSTRAP_RMQ_AUTOCONNECT — включать ли автоподключение к RabbitMQ-серверу в bootstrap;
  • RMQ_HOST — хост RabbitMQ-сервера, например 127.0.0.1;
  • RMQ_PORT — порт RabbitMQ-сервера, например 5672;
  • RMQ_USER — имя пользователя RabbitMQ-сервера, например guest;
  • RMQ_PASS — пароль пользователя RabbitMQ-сервера, например guest;
  • RMQ_VHOST — виртуальный хост RabbitMQ-сервера, например /.

Для отдельного CLI-скрипта или воркера итоговый флаг автоподключения к RabbitMQ-серверу можно переопределить служебной PHP-константой BOOTSTRAP_OVERRIDE_RMQ_AUTOCONNECT до подключения файла www/medusa/index.php. Если такая константа определена, она имеет приоритет над параметром конфигурации BOOTSTRAP_RMQ_AUTOCONNECT.

Frontend и Vite

Параметры фронтенд-слоя задаются в файле www/config/frontend.json. Этот файл используется www/vite.config.js и bootstrap-инициализацией классов Medusa\Frontend\*.

{
  "src": [
    {
      "path": "/frontend",
      "entry": "entry.js"
    }
  ],
  "out": {
    "path": "/build"
  },
  "vite": {
    "alias": {
      "@shared": "/frontend/_shared"
    }
  }
}
  • src[].path — список каталогов frontend-исходников относительно www/;
  • src[].entry — имя entry-файла для поиска Vite-сборкой внутри указанного source-каталога; если параметр не задан, используется по умолчанию entry.js;
  • out.path — каталог сборки и публикации ассетов относительно www/;
  • vite.alias — карта Vite-алиасов и путей относительно www/.

Файл .env

В Docker-проекте используется шаблон .env.example. Обычно его копируют в корневой файл .env, после чего значения из конфигурационных файлов можно переопределить:

ENV_FILE = ./.env

APP_URL = http://localhost:8001
APP_SET_UTC_TIME_ZONE = true

BOOTSTRAP_PDO_AUTOCONNECT = true
PDO_TYPE = mysql
PDO_PORT = 3306
PDO_NAME = app
PDO_CHARSET = utf8mb4
PDO_USER = medusa
PDO_PASSWORD = medusa

DB_WAIT_TIMEOUT = 300
DB_SET_UTC_TIME_ZONE = true

FROM_MAIL = app@mail.ru
REPLY_TO_MAIL = noreply@mail.ru

STORAGE_ROOT_PATH = /storage
STORAGE_DIR_PERMISSIONS = 0755
STORAGE_FILE_PERMISSIONS = 0644

BOOTSTRAP_REDIS_AUTOCONNECT = true
REDIS_SCHEME = tcp
REDIS_PORT = 6379

BOOTSTRAP_RMQ_AUTOCONNECT = true
RMQ_PORT = 5672
RMQ_USER = guest
RMQ_PASS = guest