<small>Предыдущие статьи:

- ➡️ [Раздел 01. SOLT-H](/docs/01-introduction)
</small>
# SLOT-H: что нужно, чтобы это запустить

---

## Вступление: без паники, там ничего сложного

SLOT-H - это не монстр, который требует выделенного кластера и команды DevOps. Это прагматичный инструмент, который работает на том, что у тебя уже есть.

Если твой хостинг тянет WordPress - он потянет и SLOT-H. Если ты разворачиваешь проекты на VPS - вообще без проблем. Если у тебя локальный сервер для разработки - запустится за пять минут.

**Спойлер:** требования минимальны. Всё, что нужно - это веб-сервер, PHP и MySQL. Всё остальное - опционально.

---

## Минимальные требования

- **Веб-сервер:** Apache 2.x или Nginx. Любой из них. Настройка тривиальная.

- **PHP:** 7.4.x или 8.x.x. Поддерживается обе ветки. Актуальная версия ядра работает на PHP 8.x.

- **База данных:** MySQL 8.0+ (для демо). Можно использовать 5.7, но 8-я версия быстрее и удобнее. Для полной версии - PostgreSQL, MongoDB.

- **Ресурсы:** 2 vCPU, 4 GB RAM. Сервер, на котором сейчас работает ядро. Без провисаний.

---

## Сколько места занимает ядро?

**Базовый комплект - 4 МБ.**

Да, ты не ослышался. Четыре мегабайта.

Это без вендор-папок, без node_modules, без композера, без сотен мелких файлов. Всё, что нужно для работы - уже внутри. Вся статика, все иконки, все библиотеки.

4 МБ.

**Важно:** в демо-версии отсутствует папка `Storage/`. Она не нужна, потому что в демо нет:

- Сохранения изображений
- Сохранения файлов
- Генерации отчётов

Всё, что требуется для демонстрации - уже внутри ядра.

---

## Какие модули PHP нужны

Вот полный список модулей, которые стоят на сервере, где SLOT-H работает уже много лет. На практике тебе понадобится подмножество, но лучше иметь всё - лишним не будет.

**Установлены и работают:**

`calendar, Core, ctype, curl, date, exif, FFI, fileinfo, filter, ftp, gd, gettext, gmagick, hash, iconv, intl, json, libxml, mbstring, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_mysql, Phar, posix, psr, random, readline, Reflection, session, shmop, sockets, sodium, SPL, standard, sysvmsg, sysvsem, sysvshm, tokenizer, uploadprogress, xdebug, Zend OPcache, zlib`

**Что из этого реально нужно для работы:**

**Для демо-версии:**

- `mysqli` - для работы с MySQL
- `pdo_mysql` - альтернативный драйвер для MySQL
- `curl` - для HTTP-запросов и API
- `gd` - для работы с изображениями
- `mbstring` - для многобайтовых строк
- `json` - без JSON сейчас никуда
- `session` - для сессий пользователей
- `openssl` - для шифрования и безопасности
- `intl` - для интернационализации
- `zlib` - для сжатия

**Опционально:**

- `gmagick` - для продвинутой работы с графикой (если есть - хорошо, если нет - GD справится)

**Для полной версии дополнительно:**

- `pdo_pgsql` - для работы с PostgreSQL
- `mongodb` - для работы с MongoDB
- `redis` - для кэширования через Redis
- `memcached` - для кэширования через Memcached

---

## Какая версия MySQL

**MySQL 8.0+.** Если у тебя стоит 5.7 - тоже заработает, но мы рекомендуем 8-ю версию. Она быстрее, удобнее и поддерживает современные возможности.

Если у тебя **MariaDB** - тоже подойдёт, если версия 10.3+.

---

## Настройка веб-сервера

Минимальная конфигурация Apache для одного проекта выглядит так:

```apache
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/your_project_path
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<Directory /var/www/your_project_path>
    RewriteEngine on
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
```

Для Nginx - аналогично. Главное: **все запросы должны идти через index.php**, если файл не существует физически.

В корне проекта лежит `.htaccess`, который уже делает всё необходимое:

```apache
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*? index.php
```

---

## Git и развёртывание

Ядро разворачивается через Git из репозитория:

```bash
git clone https://github.com/Stalker23051974/slot-h.git
```

Никаких Composer. Никаких `npm install`. Никаких vendor-папок.

Склонировал - и работает.

---

## Что если я использую общий хостинг?

Если у тебя не VPS, а обычный shared-хостинг с панелью - тоже работает.

**Единственное обязательное условие:**

> **Доступ к выполнению консольных скриптов.**

Без этого SLOT-H не поднимется.

Почему? Потому что после развёртывания нужно запустить `createAutoloader.php`. Это консольный скрипт, который строит граф зависимостей классов. Без него автолоадер не сгенерируется, и система не запустится.

Если у тебя есть SSH-доступ - всё просто:

```bash
php Application/Tools/createAutoloader.php
```

Если SSH нет - в админ-панели хостинга должен быть **эмулятор терминала**. Многие панели (cPanel, ISPmanager, и т.п.) предоставляют такую возможность.

Если нет ни SSH, ни эмулятора терминала - SLOT-H на таком хостинге не запустится. Это единственное жёсткое ограничение.

**Остальное - не важно:**

- Можно загружать файлы по FTP
- Можно через файловый менеджер
- Можно через Git из панели

Главное - **один раз запустить createAutoloader**.

---

## Резюме

Минимальный набор для старта:

- **PHP 7.4 / 8.x** + модули: mysqli, curl, gd, mbstring, json, session, openssl
- **MySQL 8.0**
- **Apache / Nginx**
- **Git** (для развёртывания)
- **Доступ к консоли** (SSH или эмулятор терминала)
- **2 vCPU, 4 GB RAM** - за глаза
- **4 MB** дискового пространства - базовая комплектация

Всё остальное - опционально и добавляется по мере необходимости.

**Спойлер:** если у тебя есть на чём крутить WordPress - SLOT-H запустится без проблем, но при одном условии: есть доступ к консоли.

---

## Что дальше?

- ➡️ [Раздел 03. Быстрый старт](/docs/03-quick-start)
- ➡️ [Раздел 04. Философия](/docs/04-philosophy)
- ➡️ [Раздел 05. Принципы работы](/docs/05-principles)
