# Moonwell Web Laravel 12-приложение с WoW-лендингом и публичной регистрацией игрового аккаунта напрямую в auth-базу AzerothCore. ## Что уже сделано - Развёрнут Laravel `v12.12.1` со свежим `laravel/framework v12.x`. - Главная страница оформлена в тёмной cinematic-стилистике с компоновкой, вдохновлённой официальным сайтом WoW. - Форма регистрации создаёт аккаунт напрямую в `acore_auth` через отдельное соединение `azerothcore_auth`. - При регистрации заполняются таблицы `account`, `realmcharacters` и `account_access`. - Проект подготовлен под Laravel Sail: приложение работает в контейнере, а AzerothCore auth DB берётся с хоста через `host.docker.internal:3306`. ## Как запускать через Sail ```bash cp .env.example .env ./vendor/bin/sail up -d ./vendor/bin/sail composer install ./vendor/bin/sail artisan key:generate ./vendor/bin/sail artisan migrate ``` Сайт будет доступен на `http://localhost:8080`. ## Деплой на Ubuntu Скрипт деплоя лежит в `scripts/deploy-ubuntu.sh`. Он рассчитан на сервер, где уже установлены: - `docker` - `docker compose` Перед первым запуском проверь `.env`: - `APP_URL` - `APP_PORT` - `FORWARD_DB_PORT` - `AZEROTHCORE_AUTH_DB_HOST` - `AZEROTHCORE_AUTH_DB_PORT` - `AZEROTHCORE_AUTH_DB_DATABASE` - `AZEROTHCORE_AUTH_DB_USERNAME` - `AZEROTHCORE_AUTH_DB_PASSWORD` Запуск: ```bash chmod +x scripts/deploy-ubuntu.sh ./scripts/deploy-ubuntu.sh ``` Что делает скрипт: - создаёт `.env` из `.env.example`, если файла ещё нет; - собирает контейнер приложения; - ставит production-зависимости Composer; - генерирует `APP_KEY`, если он пустой; - поднимает контейнеры; - ждёт готовности MySQL; - выполняет `php artisan migrate --force`; - прогревает `config`, `route` и `view` кэш. Полезные флаги: ```bash ./scripts/deploy-ubuntu.sh --skip-build ./scripts/deploy-ubuntu.sh --skip-cache ``` ## Как это связано с AzerothCore По умолчанию Sail-контейнер подключается к auth-базе core-сервера так: - хост: `host.docker.internal` - порт: `3306` - база: `acore_auth` - пользователь: `root` - пароль: `password` Это рассчитано на вашу docker-сборку из `/home/sindo/moonwell-core`, где MySQL опубликован наружу на порт `3306`. ## Важные переменные Основные настройки лежат в `.env.example`: - `APP_PORT=8080` - `FORWARD_DB_PORT=3307` - `DB_HOST=mysql` - `AZEROTHCORE_AUTH_DB_HOST=host.docker.internal` - `AZEROTHCORE_AUTH_DB_PORT=3306` - `AZEROTHCORE_AUTH_DB_DATABASE=acore_auth` - `AZEROTHCORE_AUTH_DB_USERNAME=root` - `AZEROTHCORE_AUTH_DB_PASSWORD=password` ## Архитектура - `compose.yaml` — Sail-окружение с `laravel.test` и локальным MySQL для самого сайта. - `config/database.php` — отдельное соединение `azerothcore_auth`. - `config/moonwell.php` — настройки realm/landing и регистрации. - `app/Services/AzerothCoreAccountRegistrar.php` — SRP6-совместимое создание учётной записи AzerothCore. - `app/Http/Controllers/LandingController.php` — данные лендинга и обработка формы. ## Проверка Вне Sail я уже проверил: - рендер лендинга по HTTP; - компиляцию Blade; - маршруты; - ручную валидацию `POST /register`; - совпадение SRP6 verifier с формулой AzerothCore. Для полноценного `php artisan test` внутри контейнера используйте: ```bash ./vendor/bin/sail artisan test ```