Files
InternetDev/demo/README.md
2025-11-29 04:50:52 +04:00

7.8 KiB
Raw Blame History

Инструкция по переносу проекта на новый компьютер

Быстрый старт

Что работает сразу (без настройки)

  1. Dev профиль (H2 база данных) — работает сразу без установки PostgreSQL

    • Данные хранятся в файле data.mv.db (уже есть в проекте)
    • Не требует установки отдельного сервера БД
  2. Java 21 — должна быть установлена

Что нужно настроить (опционально)

  • PostgreSQL — только если нужно запускать с профилем prod
  • Node.js — только если нужно собирать фронтенд

Пошаговая инструкция

Шаг 1: Проверка Java

Убедитесь, что установлена Java 21:

java -version

Должно быть что-то вроде:

openjdk version "21.x.x"

Если Java нет:

  • Скачайте с Oracle JDK или OpenJDK
  • Установите и добавьте в PATH

Шаг 2: Запуск проекта (Dev профиль - H2)

Проект использует Gradle Wrapper, поэтому Gradle не нужно устанавливать отдельно.

Windows:

cd demo
.\gradlew.bat bootRun

Linux/Mac:

cd demo
./gradlew bootRun

Профиль dev используется по умолчанию. Приложение запустится на порту 8080.

Проверка:


Шаг 3: Настройка PostgreSQL (только для prod профиля)

Если нужно запускать с профилем prod, установите PostgreSQL:

Установка PostgreSQL (Windows)

  1. Скачайте PostgreSQL: https://www.postgresql.org/download/windows/
  2. Установите PostgreSQL (запомните пароль для пользователя postgres)
  3. Запустите pgAdmin или используйте командную строку

Создание базы данных

Откройте psql или pgAdmin и выполните:

CREATE DATABASE demo;

Или через командную строку:

psql -U postgres
CREATE DATABASE demo;
\q

Проверка настроек

В файле src/main/resources/application-prod.yml должны быть настройки:

spring:
    datasource:
        url: jdbc:postgresql://127.0.0.1/demo
        username: postgres
        password: postgres  # ← Укажите ваш пароль PostgreSQL

⚠️ Важно: Если пароль PostgreSQL отличается от postgres, измените его в файле!

Запуск с prod профилем

Windows:

.\gradlew.bat bootRun -Pprod

Linux/Mac:

./gradlew bootRun -Pprod

Шаг 4: Миграции базы данных

Проект использует Liquibase для миграций. Миграции запускаются автоматически при старте приложения.

Файлы миграций находятся в:

  • src/main/resources/db/changes/

При первом запуске Liquibase:

  • Создаст все таблицы
  • Заполнит начальные данные (эпохи, страны)

Если нужно сбросить БД и начать заново:

  • Для H2: удалите файл data.mv.db и перезапустите приложение
  • Для PostgreSQL: удалите и создайте базу заново

Полезные команды

Запуск приложения

# Dev профиль (H2) - по умолчанию
.\gradlew.bat bootRun

# Prod профиль (PostgreSQL)
.\gradlew.bat bootRun -Pprod

# С фронтендом
.\gradlew.bat bootRun -Pfront

Сборка проекта

# Собрать JAR файл
.\gradlew.bat bootJar

# Очистить и собрать
.\gradlew.bat clean build

Запуск тестов

# Все тесты (dev профиль)
.\gradlew.bat test

# Тесты с prod профилем
.\gradlew.bat test -Pprod

Просмотр H2 базы данных (dev профиль)

После запуска приложения с dev профилем:

  1. Откройте: http://localhost:8080/h2-console
  2. JDBC URL: jdbc:h2:file:./data
  3. Username: sa
  4. Password: sa
  5. Нажмите "Connect"

Структура проекта

demo/
├── src/
│   ├── main/
│   │   ├── java/              # Java код
│   │   └── resources/
│   │       ├── application.yml           # Основная конфигурация
│   │       ├── application-dev.yml       # Dev профиль (H2)
│   │       ├── application-prod.yml      # Prod профиль (PostgreSQL)
│   │       └── db/
│   │           ├── master.yml            # Liquibase master файл
│   │           └── changes/              # Файлы миграций
│   └── test/                 # Тесты
├── data.mv.db               # H2 база данных (dev)
├── build.gradle             # Конфигурация Gradle
├── gradlew                  # Gradle Wrapper (Linux/Mac)
└── gradlew.bat              # Gradle Wrapper (Windows)

Частые проблемы

Ошибка: "Could not find or load main class"

Решение: Выполните:

.\gradlew.bat clean build

Ошибка подключения к PostgreSQL

Проверьте:

  1. PostgreSQL запущен
  2. База данных demo создана
  3. Пароль в application-prod.yml правильный
  4. Порт 5432 не заблокирован

Проверка подключения:

psql -U postgres -d demo

Порт 8080 уже занят

Измените порт в src/main/resources/application.yml:

server:
    port: 8081  # или другой свободный порт

Ошибка миграций Liquibase

Для dev профиля (H2):

  • Удалите файл data.mv.db и перезапустите

Для prod профиля (PostgreSQL):

  • Удалите базу данных и создайте заново
  • Или проверьте логи для конкретной ошибки

Что перенеслось автоматически

Код приложения
Конфигурация Gradle
Миграции Liquibase
Данные H2 (файл data.mv.db)
Статические файлы фронтенда

PostgreSQL база данных (нужно установить и настроить отдельно)


Контакты и документация


Следующие шаги

  1. Убедитесь, что Java 21 установлена
  2. Запустите проект с dev профилем
  3. Проверьте Swagger UI
  4. ⏭️ (Опционально) Установите PostgreSQL для prod профиля
  5. ⏭️ (Опционально) Настройте фронтенд, если нужно

Если что-то не работает, проверьте логи в консоли или файле логов.