4.2 KiB
4.2 KiB
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
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. Он рассчитан на сервер, где уже установлены:
dockerdocker compose
Перед первым запуском проверь .env:
APP_URLAPP_PORTFORWARD_DB_PORTAZEROTHCORE_AUTH_DB_HOSTAZEROTHCORE_AUTH_DB_PORTAZEROTHCORE_AUTH_DB_DATABASEAZEROTHCORE_AUTH_DB_USERNAMEAZEROTHCORE_AUTH_DB_PASSWORD
Запуск:
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кэш.
Полезные флаги:
./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=8080FORWARD_DB_PORT=3307DB_HOST=mysqlAZEROTHCORE_AUTH_DB_HOST=host.docker.internalAZEROTHCORE_AUTH_DB_PORT=3306AZEROTHCORE_AUTH_DB_DATABASE=acore_authAZEROTHCORE_AUTH_DB_USERNAME=rootAZEROTHCORE_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 внутри контейнера используйте:
./vendor/bin/sail artisan test