105 lines
6.4 KiB
Markdown
105 lines
6.4 KiB
Markdown
# Деплой SHiNE (шаблон)
|
||
|
||
Этот раздел хранит актуальные инструкции по деплою.
|
||
|
||
## Базовый сервер
|
||
|
||
- SSH: `player@shineup.me`
|
||
- Домен: `shineup.me`
|
||
- Базовый путь: `/home/player`
|
||
|
||
Для всех рабочих инструкций и скриптов использовать доменное имя `shineup.me`, а не фиксированный IP:
|
||
|
||
- актуальный IP должен браться через DNS-резолв на момент подключения;
|
||
- ручное дублирование IP в документации и deploy-скриптах не поддерживать.
|
||
|
||
## Контуры деплоя
|
||
|
||
- Production:
|
||
- SSH: `player@shineup.me`
|
||
- Домен: `shineup.me`
|
||
- IP: `185.229.109.118`
|
||
- Main test:
|
||
- SSH: `player@193.8.215.70`
|
||
- Домен: `t.shineup.me`
|
||
- IP: `193.8.215.70`
|
||
- Reserve test:
|
||
- SSH: `player@93.170.12.154`
|
||
- Домен: `test.shineup.me`
|
||
- IP: `93.170.12.154`
|
||
|
||
## Локальные команды
|
||
|
||
- Default server deploy: `./gradlew deployServer` или `./gradlew deployServerTest2`
|
||
- Default UI deploy: `./gradlew deployUI` или `./gradlew deployUITest2`
|
||
- Production server deploy: `./gradlew deployServerProduction`
|
||
- Production UI deploy: `./gradlew deployUIProduction`
|
||
- Reserve test server deploy: `./gradlew deployServerTest`
|
||
- Reserve test UI deploy: `./gradlew deployUITest`
|
||
- Локальный запуск: `./gradlew startLocal`
|
||
|
||
## Политика подтверждений
|
||
|
||
- `shineup.me` — production.
|
||
- Любые изменения на `shineup.me`, включая deploy сервера, deploy UI, конфиги, перезапуски и миграции, делать только после отдельного явного подтверждения пользователя.
|
||
- Если пользователь пишет просто `задеплой` без уточнения, по умолчанию это означает deploy на `t.shineup.me`.
|
||
|
||
## Main test deploy (`t.shineup.me`)
|
||
|
||
- Это основной сервер для тестов.
|
||
- `deployServer` и `deployUI` по умолчанию направлены именно сюда.
|
||
- Серверный deploy не запускает JUnit/IT-тесты на удалённом сервере.
|
||
- `deployServer` / `deployServerTest2` делают:
|
||
- сборку fat-jar локально;
|
||
- синхронизацию `data/` и `shine.sqlite` с production `shineup.me`;
|
||
- перенос `application.properties` с production с поправкой `server.ui.indexPath` на `/home/player/SHiNE/shine-ui/index.html`;
|
||
- установку `systemd` unit на `193.8.215.70`;
|
||
- перезапуск `shine-server.service`;
|
||
- установку/проверку Caddy для `t.shineup.me`.
|
||
- `deployUI` / `deployUITest2` публикуют UI в `/home/player/SHiNE/shine-ui` на `193.8.215.70`.
|
||
|
||
## Reserve test deploy (`test.shineup.me`)
|
||
|
||
- `test.shineup.me` считается резервным тестовым сервером.
|
||
- Его настройки и адрес не менять без отдельной задачи.
|
||
- Задачи `deployServerTest` и `deployUITest` считаются резервными и требуют отдельной причины.
|
||
|
||
## UI-деплой и Caddy (обязательно)
|
||
|
||
- Целевая директория UI-деплоя: `/home/player/SHiNE/shine-ui`.
|
||
- `Caddyfile` на сервере должен смотреть в ту же директорию через `root * /home/player/SHiNE/shine-ui`.
|
||
- В `deploy_shine-PWA.sh` добавлена проверка: скрипт ищет блок `shineup.me { ... }` (или значение `EXPECTED_CADDY_SITE`) и проверяет `root` внутри этого блока.
|
||
- Если `root` внутри целевого блока не совпадает, деплой прерывается с ошибкой.
|
||
- Для ручного обхода проверки (только осознанно): `ALLOW_CADDY_MISMATCH=1 ./gradlew deployUI`.
|
||
- При необходимости можно явно переопределить путь деплоя:
|
||
- `REMOTE_UI_DIR=/нужный/путь ./gradlew deployUI`
|
||
- `EXPECTED_CADDY_UI_ROOT=/нужный/путь ./gradlew deployUI`
|
||
- `EXPECTED_CADDY_SITE=example.com ./gradlew deployUI`
|
||
|
||
## Временные тестовые сайты Solana tickets
|
||
|
||
- Для HTML UI программы `shine_payments` используется отдельный временный тестовый сайт.
|
||
- Основной каталог публикации:
|
||
- `/home/player/sites/test-solana-tickets.shineup.me`
|
||
- Рабочие домены:
|
||
- `https://test-solana-tickets.shineup.me`
|
||
- `https://test-solana-tickets.shiningpeople.ru`
|
||
- Назначение:
|
||
- ручная проверка сценариев покупки билетов;
|
||
- проверка DAO-инструментов и лимитов менеджеров;
|
||
- проверка ручного добавления билетов и `step_payout`.
|
||
- Эти сайты не считать основным UI SHiNE; это отдельная тестовая публикация под Solana-часть.
|
||
|
||
### Важно для локального UI (history-router / Ctrl+F5)
|
||
|
||
- Локальный UI **обязательно** поднимать только через `./gradlew startLocal`.
|
||
- Эта задача запускает `scripts/local_spa_server.py`, который делает SPA fallback: любой неизвестный путь (`/m/...`, `/channel/...`) возвращает `index.html`.
|
||
- Это обязательно для корректной работы `Ctrl+F5` на внутренних роутов без `404`.
|
||
- Рабочий URL выводится задачей в консоль в формате: `http://localhost:<WEB_PORT>/?localWsPort=<WS_PORT>`.
|
||
|
||
## Обязательные правила
|
||
|
||
1. Перед серверным деплоем проверить локально.
|
||
2. При нестандартном деплое (другой хост, другая структура, ручные шаги) обязательно уточнить у пользователя, нужно ли обновить этот шаблон.
|
||
3. Если деплой-процесс изменился, этот файл и файлы в `servers/` обновлять в том же коммите.
|