274 lines
7.8 KiB
Markdown
274 lines
7.8 KiB
Markdown
# Инструкция по переносу проекта на новый компьютер
|
||
|
||
## Быстрый старт
|
||
|
||
### Что работает сразу (без настройки)
|
||
|
||
1. **Dev профиль** (H2 база данных) — работает сразу без установки PostgreSQL
|
||
- Данные хранятся в файле `data.mv.db` (уже есть в проекте)
|
||
- Не требует установки отдельного сервера БД
|
||
|
||
2. **Java 21** — должна быть установлена
|
||
|
||
### Что нужно настроить (опционально)
|
||
|
||
- **PostgreSQL** — только если нужно запускать с профилем `prod`
|
||
- **Node.js** — только если нужно собирать фронтенд
|
||
|
||
---
|
||
|
||
## Пошаговая инструкция
|
||
|
||
### Шаг 1: Проверка Java
|
||
|
||
Убедитесь, что установлена Java 21:
|
||
|
||
```bash
|
||
java -version
|
||
```
|
||
|
||
Должно быть что-то вроде:
|
||
```
|
||
openjdk version "21.x.x"
|
||
```
|
||
|
||
**Если Java нет:**
|
||
- Скачайте с [Oracle JDK](https://www.oracle.com/java/technologies/downloads/#java21) или [OpenJDK](https://adoptium.net/)
|
||
- Установите и добавьте в PATH
|
||
|
||
---
|
||
|
||
### Шаг 2: Запуск проекта (Dev профиль - H2)
|
||
|
||
Проект использует Gradle Wrapper, поэтому Gradle не нужно устанавливать отдельно.
|
||
|
||
**Windows:**
|
||
```bash
|
||
cd demo
|
||
.\gradlew.bat bootRun
|
||
```
|
||
|
||
**Linux/Mac:**
|
||
```bash
|
||
cd demo
|
||
./gradlew bootRun
|
||
```
|
||
|
||
Профиль `dev` используется по умолчанию. Приложение запустится на порту 8080.
|
||
|
||
**Проверка:**
|
||
- Откройте: http://localhost:8080/swagger-ui.html
|
||
- Или: http://localhost:8080/api-docs
|
||
|
||
---
|
||
|
||
### Шаг 3: Настройка PostgreSQL (только для prod профиля)
|
||
|
||
Если нужно запускать с профилем `prod`, установите PostgreSQL:
|
||
|
||
#### Установка PostgreSQL (Windows)
|
||
|
||
1. Скачайте PostgreSQL: https://www.postgresql.org/download/windows/
|
||
2. Установите PostgreSQL (запомните пароль для пользователя `postgres`)
|
||
3. Запустите pgAdmin или используйте командную строку
|
||
|
||
#### Создание базы данных
|
||
|
||
Откройте psql или pgAdmin и выполните:
|
||
|
||
```sql
|
||
CREATE DATABASE demo;
|
||
```
|
||
|
||
Или через командную строку:
|
||
```bash
|
||
psql -U postgres
|
||
CREATE DATABASE demo;
|
||
\q
|
||
```
|
||
|
||
#### Проверка настроек
|
||
|
||
В файле `src/main/resources/application-prod.yml` должны быть настройки:
|
||
```yaml
|
||
spring:
|
||
datasource:
|
||
url: jdbc:postgresql://127.0.0.1/demo
|
||
username: postgres
|
||
password: postgres # ← Укажите ваш пароль PostgreSQL
|
||
```
|
||
|
||
**⚠️ Важно:** Если пароль PostgreSQL отличается от `postgres`, измените его в файле!
|
||
|
||
#### Запуск с prod профилем
|
||
|
||
**Windows:**
|
||
```bash
|
||
.\gradlew.bat bootRun -Pprod
|
||
```
|
||
|
||
**Linux/Mac:**
|
||
```bash
|
||
./gradlew bootRun -Pprod
|
||
```
|
||
|
||
---
|
||
|
||
### Шаг 4: Миграции базы данных
|
||
|
||
Проект использует Liquibase для миграций. Миграции запускаются автоматически при старте приложения.
|
||
|
||
**Файлы миграций находятся в:**
|
||
- `src/main/resources/db/changes/`
|
||
|
||
При первом запуске Liquibase:
|
||
- Создаст все таблицы
|
||
- Заполнит начальные данные (эпохи, страны)
|
||
|
||
**Если нужно сбросить БД и начать заново:**
|
||
- Для H2: удалите файл `data.mv.db` и перезапустите приложение
|
||
- Для PostgreSQL: удалите и создайте базу заново
|
||
|
||
---
|
||
|
||
## Полезные команды
|
||
|
||
### Запуск приложения
|
||
|
||
```bash
|
||
# Dev профиль (H2) - по умолчанию
|
||
.\gradlew.bat bootRun
|
||
|
||
# Prod профиль (PostgreSQL)
|
||
.\gradlew.bat bootRun -Pprod
|
||
|
||
# С фронтендом
|
||
.\gradlew.bat bootRun -Pfront
|
||
```
|
||
|
||
### Сборка проекта
|
||
|
||
```bash
|
||
# Собрать JAR файл
|
||
.\gradlew.bat bootJar
|
||
|
||
# Очистить и собрать
|
||
.\gradlew.bat clean build
|
||
```
|
||
|
||
### Запуск тестов
|
||
|
||
```bash
|
||
# Все тесты (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"
|
||
|
||
**Решение:** Выполните:
|
||
```bash
|
||
.\gradlew.bat clean build
|
||
```
|
||
|
||
### Ошибка подключения к PostgreSQL
|
||
|
||
**Проверьте:**
|
||
1. PostgreSQL запущен
|
||
2. База данных `demo` создана
|
||
3. Пароль в `application-prod.yml` правильный
|
||
4. Порт 5432 не заблокирован
|
||
|
||
**Проверка подключения:**
|
||
```bash
|
||
psql -U postgres -d demo
|
||
```
|
||
|
||
### Порт 8080 уже занят
|
||
|
||
Измените порт в `src/main/resources/application.yml`:
|
||
```yaml
|
||
server:
|
||
port: 8081 # или другой свободный порт
|
||
```
|
||
|
||
### Ошибка миграций Liquibase
|
||
|
||
**Для dev профиля (H2):**
|
||
- Удалите файл `data.mv.db` и перезапустите
|
||
|
||
**Для prod профиля (PostgreSQL):**
|
||
- Удалите базу данных и создайте заново
|
||
- Или проверьте логи для конкретной ошибки
|
||
|
||
---
|
||
|
||
## Что перенеслось автоматически
|
||
|
||
✅ Код приложения
|
||
✅ Конфигурация Gradle
|
||
✅ Миграции Liquibase
|
||
✅ Данные H2 (файл `data.mv.db`)
|
||
✅ Статические файлы фронтенда
|
||
|
||
❌ PostgreSQL база данных (нужно установить и настроить отдельно)
|
||
|
||
---
|
||
|
||
## Контакты и документация
|
||
|
||
- Swagger UI: http://localhost:8080/swagger-ui.html
|
||
- API Docs: http://localhost:8080/api-docs
|
||
- H2 Console (dev): http://localhost:8080/h2-console
|
||
|
||
---
|
||
|
||
## Следующие шаги
|
||
|
||
1. ✅ Убедитесь, что Java 21 установлена
|
||
2. ✅ Запустите проект с dev профилем
|
||
3. ✅ Проверьте Swagger UI
|
||
4. ⏭️ (Опционально) Установите PostgreSQL для prod профиля
|
||
5. ⏭️ (Опционально) Настройте фронтенд, если нужно
|
||
|
||
Если что-то не работает, проверьте логи в консоли или файле логов.
|
||
|