SHiNE-server/Dev_Docs/deploy/README.md

6.3 KiB
Raw Permalink Blame History

Деплой 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
    • Домен: test2.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 на test2.shineup.me.

Main test deploy (test2.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 для test2.shineup.me.
  • deployUI / deployUITest2 публикуют UI в /home/player/SHiNE/shine-ui на 193.8.215.70.

Reserve test deploy (test.shineup.me)

  • test.shineup.me пока не использовать для обычного deploy.
  • Задачи 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/ обновлять в том же коммите.