Рефакторинг инфраструктуры и конфигурации проекта
- Перенесена структура Django-конфига в src/core и src/settings - Унифицирована Docker-сборка и docker-compose для dev/prod - Добавлены startup-checks (DB/Redis) и обновлены env-шаблоны - Расширена OpenAPI-документация и ответы API - Удалены устаревшие deploy/requirements/служебные скрипты - Обновлены CI/CD, README и тесты
This commit is contained in:
90
README.md
90
README.md
@@ -33,7 +33,7 @@
|
||||
# Через Celery
|
||||
from apps.parsers.tasks import (
|
||||
parse_industrial_production,
|
||||
parse_manufactures,
|
||||
parse_manufactures,
|
||||
parse_inspections,
|
||||
sync_inspections,
|
||||
)
|
||||
@@ -62,22 +62,20 @@ sync_inspections.delay()
|
||||
```
|
||||
mostovik-backend/
|
||||
├── src/ # Исходный код Django
|
||||
│ ├── config/ # Конфигурация Django
|
||||
│ │ ├── settings/ # Настройки (base, dev, prod, test)
|
||||
│ │ ├── celery.py # Конфигурация Celery
|
||||
│ │ └── urls.py # URL маршруты
|
||||
│ ├── apps/ # Django приложения
|
||||
│ │ └── user/ # Приложение пользователей
|
||||
│ ├── core/ # Runtime-конфигурация проекта (urls/asgi/wsgi/celery)
|
||||
│ ├── settings/ # Django settings (base, dev, production, test)
|
||||
│ └── manage.py # Управление Django
|
||||
├── tests/ # Тесты (в корне проекта)
|
||||
│ ├── apps/user/ # Тесты для user app
|
||||
│ ├── conftest.py # Конфигурация pytest
|
||||
│ └── README.md # Документация по тестам
|
||||
├── docker/ # Docker конфигурации
|
||||
├── deploy/ # Файлы развертывания
|
||||
├── docker/ # Docker конфигурации
|
||||
├── pyproject.toml # Конфигурация проекта и инструментов
|
||||
├── Makefile # Команды для разработки
|
||||
└── docker-compose.yml # Docker Compose для разработки
|
||||
├── docker-compose.dev.yml # Docker Compose для разработки
|
||||
└── docker-compose.prod.yml # Docker Compose для production
|
||||
```
|
||||
|
||||
## Быстрый старт (локальная разработка)
|
||||
@@ -106,24 +104,21 @@ make setup-dev
|
||||
### 2. Настройка окружения
|
||||
|
||||
```bash
|
||||
# Копирование файла окружения
|
||||
cp .env.example .env
|
||||
|
||||
# Редактирование .env файла по необходимости
|
||||
nano .env
|
||||
# Для dev compose уже готов файл .env.dev (можно использовать как есть).
|
||||
# Для prod compose заполните .env.prod на основе .env.prod.example.
|
||||
```
|
||||
|
||||
### 3. Запуск с Docker Compose (рекомендуется)
|
||||
|
||||
```bash
|
||||
# Запуск всех сервисов
|
||||
docker-compose up -d
|
||||
# Запуск всех dev сервисов (db, redis, migrate, web, celery)
|
||||
docker compose -f docker-compose.dev.yml up -d
|
||||
|
||||
# Проверка состояния контейнеров
|
||||
docker-compose ps
|
||||
docker compose -f docker-compose.dev.yml ps
|
||||
|
||||
# Просмотр логов
|
||||
docker-compose logs -f web
|
||||
docker compose -f docker-compose.dev.yml logs -f web
|
||||
```
|
||||
|
||||
### 4. Ручная настройка (без Docker)
|
||||
@@ -152,10 +147,10 @@ python manage.py createsuperuser
|
||||
python manage.py runserver
|
||||
|
||||
# Запуск Celery worker (в отдельном терминале)
|
||||
celery -A config worker --loglevel=info
|
||||
celery -A core worker --loglevel=info
|
||||
|
||||
# Запуск Celery beat (в отдельном терминале)
|
||||
celery -A config beat --loglevel=info
|
||||
celery -A core beat --loglevel=info
|
||||
```
|
||||
|
||||
## API Endpoints
|
||||
@@ -177,57 +172,18 @@ celery -A config beat --loglevel=info
|
||||
### Аутентификация
|
||||
- `POST /api/api-token-auth/` - Получение API токена
|
||||
|
||||
## Развертывание на сервере Astra Linux
|
||||
## Развертывание
|
||||
|
||||
### Автоматическое развертывание
|
||||
Используется `docker-compose.prod.yml` и файл окружения `.env.prod`.
|
||||
|
||||
```bash
|
||||
# Сделать скрипт исполняемым
|
||||
chmod +x deploy/scripts/deploy.sh
|
||||
# 1) Заполнить .env.prod (можно взять шаблон .env.prod.example)
|
||||
|
||||
# Запуск скрипта развертывания
|
||||
sudo ./deploy/scripts/deploy.sh
|
||||
```
|
||||
# 2) Собрать и запустить сервисы
|
||||
docker compose -f docker-compose.prod.yml --env-file .env.prod up -d --build
|
||||
|
||||
### Ручное развертывание
|
||||
|
||||
1. **Установка системных зависимостей:**
|
||||
```bash
|
||||
sudo apt-get update
|
||||
sudo apt-get install python3.11 python3.11-venv postgresql-15 redis-server nginx
|
||||
```
|
||||
|
||||
2. **Настройка проекта:**
|
||||
```bash
|
||||
# Клонирование репозитория
|
||||
git clone ваш_репозиторий.git /var/www/project
|
||||
cd /var/www/project
|
||||
|
||||
# Создание виртуального окружения
|
||||
python3.11 -m venv venv
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
|
||||
# Настройка базы данных
|
||||
sudo -u postgres psql -c "CREATE DATABASE project_prod;"
|
||||
sudo -u postgres psql -c "CREATE USER project_user WITH PASSWORD 'secure_password';"
|
||||
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE project_prod TO project_user;"
|
||||
```
|
||||
|
||||
3. **Конфигурация systemd:**
|
||||
```bash
|
||||
sudo cp deploy/systemd/*.service /etc/systemd/system/
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable gunicorn celery-worker celery-beat
|
||||
```
|
||||
|
||||
4. **Настройка Apache:**
|
||||
```bash
|
||||
sudo cp deploy/apache/project.conf /etc/apache2/sites-available/project.conf
|
||||
sudo a2ensite project.conf
|
||||
sudo a2enmod ssl rewrite headers expires
|
||||
sudo a2dissite 000-default
|
||||
sudo systemctl restart apache2
|
||||
# 3) Проверить состояние
|
||||
docker compose -f docker-compose.prod.yml --env-file .env.prod ps
|
||||
```
|
||||
|
||||
## Мониторинг и логирование
|
||||
@@ -248,7 +204,7 @@ journalctl -u celery-worker -f
|
||||
### Мониторинг Celery
|
||||
```bash
|
||||
# Запуск Flower (в отдельном терминале)
|
||||
celery -A config flower
|
||||
celery -A core flower
|
||||
|
||||
# Доступ через браузер: http://localhost:5555
|
||||
```
|
||||
@@ -390,4 +346,4 @@ MIT License
|
||||
- **Парсеры Минпромторга** (сертификаты, производители)
|
||||
- **Модуль apps.parsers** с клиентами, сервисами и задачами Celery
|
||||
- **Django Admin** для управления записями парсеров
|
||||
- Дедупликация по unique constraints
|
||||
- Дедупликация по unique constraints
|
||||
|
||||
Reference in New Issue
Block a user