# Установка AVE.cms AVE.cms устанавливается через защищённую страницу `/setup/`. Установщик создаёт минимальную рабочую систему, а дополнительные возможности подключаются после первого входа. ## Требования - PHP 7.3 или новее с `mysqli`, `mbstring`, `json` и `openssl`; - MariaDB/MySQL с InnoDB и `utf8mb4`; - пустая база данных либо свободный префикс таблиц; - право записи в `configs/`, `storage/`, `tmp/` и `uploads/`; - GD с WebP рекомендуется для работы с изображениями, но не блокирует установку. ## Порядок установки 1. Распакуйте обычный core-архив в корневой каталог сайта, сохранив скрытые файлы, включая `.htaccess`. Для компактной поставки достаточно распаковать внешний installer-архив: в корне сначала будут только `index.php`, `.htaccess` и `setup/`, а мастер сам проверит и развернёт вложенный runtime. 2. Создайте пустую базу и пользователя БД с правами на создание и изменение таблиц. 3. Откройте корневой адрес сайта. При отсутствии конфигурации AVE.cms перенаправит браузер на `/setup/`. 4. Проверьте результаты диагностики окружения. 5. Укажите сервер, порт, имя базы, пользователя, пароль и префикс таблиц. 6. Для повторной установки на тестовом стенде можно включить **Очистить таблицы префикса перед установкой**. Потребуется вручную ввести точный префикс и подтвердить необратимое удаление соответствующих таблиц и представлений. 7. Задайте название сайта, имя, логин, email и пароль администратора. Пароль должен содержать не менее 8 символов. При необходимости измените имя папки панели управления; по умолчанию используется `adminx`. 8. Нажмите **Установить AVE.cms**, затем откройте панель управления. При компактной установке перед основной формой отображается отдельный прогресс распаковки. Каждый файл сверяется с `PACKAGE-MANIFEST.json`, а вложенный `setup/runtime.zip` и его checksum удаляются только после полной проверки. Если распаковка прервалась, снова откройте `/setup/`: процесс продолжится с сохранённого шага. Подробнее о выборе адреса и переименовании после установки: [Папка панели управления](admin-directory.md). ## Что создаётся - core-таблицы AVE.cms в InnoDB; - один системный администратор; - системные настройки, константы и базовые права; - основной HTML-шаблон с `[tag:maincontent]`; - одна рубрика, поля заголовка и richtext, опубликованная главная страница с сообщением об успешной установке и служебная страница 404. Публичные пользователи не создаются. Регистрация и восстановление пароля выключены. Товары, заказы, способы оплаты, формы, RSS и остальные модули не входят в core-архив: их ZIP-пакеты можно загрузить и установить отдельно в разделе **Система → Модули**. Расширенная bundle-сборка может уже содержать проверенные пакеты «Справка» и «Безопасность файлов». Наличие файлов не включает модуль: после установки AVE.cms он отображается в разделе **Система → Модули** со статусом «Доступен» и устанавливается отдельным осознанным действием администратора. ## Защита повторного запуска После успешной установки создаётся `storage/installed.lock`. Установщик также проверяет наличие системных пользователей в выбранном префиксе. Поэтому простое открытие `/setup/` не может перезаписать рабочую систему. Для осознанной чистой переустановки используйте новую базу или свободный префикс, удалите `configs/db.config.php` и `storage/installed.lock`, затем снова откройте `/setup/`. Если нужен тот же префикс, включите режим его очистки в форме установщика. Он удаляет только таблицы и представления вида `<префикс>_*`; объекты с другими префиксами остаются нетронутыми. Не используйте этот режим на рабочем сайте без проверенной резервной копии. ## Защита каталога загрузок В поставке `uploads/.htaccess` запрещает Apache исполнять и напрямую отдавать PHP-подобные файлы. Nginx не читает `.htaccess`, поэтому эквивалентное правило нужно добавить в конфигурацию сервера перед общим обработчиком PHP: ```nginx location ~* ^/uploads/.*\.(php[0-9]*|phtml|phar)(\..*)?$ { return 404; } ``` После изменения конфигурации проверьте, что обращение к любому `/uploads/example.php` возвращает `403` или `404`, а изображения продолжают отдаваться как статические файлы. Корневой `.htaccess` также закрывает исходники пакетов модулей. Для Nginx нужен эквивалент: разрешить только статику из трёх asset-root, а всё остальное под `/modules/` вернуть как 404: ```nginx location /modules/ { return 404; } location ~* ^/modules/[A-Za-z0-9_-]+/((app|admin)/)?assets/.+\.(css|js|mjs|svg|png|jpe?g|gif|webp|avif|ico|woff2?|ttf|otf|eot|mp4|webm)$ { try_files $uri =404; } ``` Второй regex-location имеет приоритет над обычным prefix-location. Не добавляйте `^~` к `location /modules/`, иначе он закроет и разрешённые ассеты. ## После первого входа 1. Проверьте главную страницу сайта и контрольный документ. 2. Уточните основные настройки и адрес сайта. 3. Установите только нужные проекту модули. 4. Настройте роли и выдайте сотрудникам минимально необходимые права. 5. Удалите или замените контрольный документ после создания реального контента.