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

274 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Инструкция по переносу проекта на новый компьютер
## Быстрый старт
### Что работает сразу (без настройки)
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. ⏭️ (Опционально) Настройте фронтенд, если нужно
Если что-то не работает, проверьте логи в консоли или файле логов.