Конфигурация
## Обзор
**SomnyToo** использует многоуровневую систему конфигурации, построенную на принципах безопасности, производительности и масштабируемости. Все настройки можно изменять через переменные окружения или .env файл.
## Структура конфигурации
«`rust
AppConfig {
server: ServerConfig, // Настройки сервера
database: DatabaseConfig, // Настройки базы данных
security: SecurityConfig, // Настройки безопасности
scaling: ScalingConfig, // Настройки масштабирования
cache: CacheConfig, // Настройки кэширования
phantom: PhantomConfig, // Настройки фантомной системы
log_level: String, // Уровень логирования
}
«`
## Основные настройки
**Настройки сервера (ServerConfig)**
«`bash
# .env
SERVER_HOST=0.0.0.0
SERVER_PORT=8000
«`
Параметры:
— **SERVER_HOST:** Хост для прослушивания (по умолчанию: 0.0.0.0)
— **SERVER_PORT:** Порт сервера (по умолчанию: 8000)
**Настройки базы данных (DatabaseConfig)**
«`bash
# .env
DATABASE_URL=postgres://
DB_MAX_CONNECTIONS=50
DB_MIN_CONNECTIONS=10
DB_CONNECTION_TIMEOUT=30
DB_ACQUIRE_TIMEOUT=5
DB_IDLE_TIMEOUT=300
DB_MAX_LIFETIME=1800
DB_STATEMENT_CACHE_SIZE=1000
DB_CONNECT_RETRIES=3
«`
Параметры:
— **DATABASE_URL:** URL подключения к PostgreSQL (Обязательный)
— **DB_MAX_CONNECTIONS:** максимальное количество соединений
— **DB_MIN_CONNECTIONS:** минимальное количество соединений
— **DB_CONNECTION_TIMEOUT:** таймаут подключения
— **DB_ACQUIRE_TIMEOUT:** таймаут получения соединения
— **DB_IDLE_TIMEOUT:**
— **DB_MAX_LIFETIME:**
— **DB_STATEMENT_CACHE_SIZE:**
— **DB_CONNECT_RETRIES:**
**Настройки безопасности (SecurityConfig)**
«`bash
# .env
MAX_REQUESTS_PER_MINUTE=1000
QUERY_TIMEOUT_MS=5000
MAX_QUERY_LENGTH=1048576
ENABLE_SQL_INJECTION_PROTECTION=true
ENABLE_RATE_LIMITING=true
«`
Параметры
— **MAX_REQUESTS_PER_MINUTE:**
— **QUERY_TIMEOUT_MS:**
— **MAX_QUERY_LENGTH:**
— **ENABLE_SQL_INJECTION_PROTECTION:**
— **ENABLE_RATE_LIMITING:**
**Настройки масштабирования (ScalingConfig)**
«`bash
# .env
ENABLE_AUTO_SCALING=true
MAX_REPLICAS=10
MIN_REPLICAS=1
SCALE_UP_CPU_THRESHOLD=80.0
SCALE_DOWN_CPU_THRESHOLD=30.0
SCALE_UP_CONNECTIONS_THRESHOLD=1000
SCALE_CHECK_INTERVAL_SECONDS=60
«`
Параметры:
— **ENABLE_AUTO_SCALING:**
— **MAX_REPLICAS:**
— **MIN_REPLICAS:**
— **SCALE_UP_CPU_THRESHOLD:**
— **SCALE_DOWN_CPU_THRESHOLD:**
— **SCALE_UP_CONNECTIONS_THRESHOLD:**
— **SCALE_CHECK_INTERVAL_SECONDS:**
**Настройки кэширования (CacheConfig)**
«`bash
# .env
ENABLE_QUERY_CACHE=true
QUERY_CACHE_SIZE=10000
QUERY_CACHE_TTL_SECONDS=300
ENABLE_PREPARED_STATEMENTS=true
PREPARED_STATEMENTS_CACHE_SIZE=1000
«`
Параметры:
— **ENABLE_QUERY_CACHE:**
— **QUERY_CACHE_SIZE:**
— **QUERY_CACHE_TTL_SECONDS:**
— **ENABLE_PREPARED_STATEMENTS:**
— **PREPARED_STATEMENTS_CACHE_SIZE:**
## Полный пример .env файла
«`bash
DATABASE_URL=postgres://user:password@host/db_name?options=-c%20search_path=db_name
SERVER_HOST=0.0.0.0
SERVER_PORT=8000
DB_MAX_CONNECTIONS=50
DB_MIN_CONNECTIONS=10
DB_CONNECTION_TIMEOUT=30
DB_ACQUIRE_TIMEOUT=5
DB_IDLE_TIMEOUT=300
DB_MAX_LIFETIME=1800
DB_STATEMENT_CACHE_SIZE=1000
DB_CONNECT_RETRIES=3
MAX_REQUESTS_PER_MINUTE=1000
QUERY_TIMEOUT_MS=5000
MAX_QUERY_LENGTH=1048576
ENABLE_SQL_INJECTION_PROTECTION=true
ENABLE_RATE_LIMITING=true
ENABLE_AUTO_SCALING=true
MAX_REPLICAS=10
MIN_REPLICAS=1
SCALE_UP_CPU_THRESHOLD=80.0
SCALE_DOWN_CPU_THRESHOLD=30.0
SCALE_UP_CONNECTIONS_THRESHOLD=1000
SCALE_CHECK_INTERVAL_SECONDS=60
ENABLE_QUERY_CACHE=true
QUERY_CACHE_SIZE=10000
QUERY_CACHE_TTL_SECONDS=300
ENABLE_PREPARED_STATEMENTS=true
PREPARED_STATEMENTS_CACHE_SIZE=1000
LOG_LEVEL=debug
«`