# Руководство по установке асинхронной системы Lyngsat ## Вариант 1: Полная установка с Celery (рекомендуется) ### Шаг 1: Установка зависимостей ```bash pip install -r dbapp/requirements.txt ``` Это установит: - `celery>=5.4.0` - `django-celery-results>=2.5.1` - И все остальные зависимости ### Шаг 2: Применение миграций ```bash cd dbapp python manage.py migrate ``` Это создаст: - Таблицу `lyngsatapp_lyngsat` для данных Lyngsat - Таблицы `django_celery_results_*` для результатов Celery ### Шаг 3: Запуск сервисов ```bash # Запуск Redis и FlareSolver docker-compose up -d redis flaresolverr # Проверка redis-cli ping # Должно вернуть PONG curl http://localhost:8191/v1 # Должно вернуть JSON ``` ### Шаг 4: Запуск приложения **Терминал 1 - Django:** ```bash cd dbapp python manage.py runserver ``` **Терминал 2 - Celery Worker:** ```bash cd dbapp celery -A dbapp worker --loglevel=info ``` ### Шаг 5: Тестирование 1. Откройте `http://localhost:8000/actions/` 2. Нажмите "Заполнить данные Lyngsat" 3. Выберите спутники и регионы 4. Наблюдайте за прогрессом! --- ## Вариант 2: Базовая установка без Celery Если вы не хотите использовать асинхронную обработку, система будет работать в синхронном режиме. ### Шаг 1: Установка базовых зависимостей ```bash # Установите все зависимости кроме Celery pip install -r dbapp/requirements.txt --ignore-installed celery django-celery-results ``` Или вручную удалите из `requirements.txt`: - `celery>=5.4.0` - `django-celery-results>=2.5.1` Затем: ```bash pip install -r dbapp/requirements.txt ``` ### Шаг 2: Применение миграций ```bash cd dbapp python manage.py migrate ``` ### Шаг 3: Запуск FlareSolver ```bash docker-compose up -d flaresolverr ``` ### Шаг 4: Запуск Django ```bash cd dbapp python manage.py runserver ``` ### Ограничения базовой установки ⚠️ **Внимание**: В синхронном режиме: - Веб-интерфейс будет заблокирован во время обработки - Нет отслеживания прогресса в реальном времени - Нет детального логирования - Обработка может занять много времени --- ## Проверка установки ### Проверка Django ```bash python dbapp/manage.py check # Должно вывести: System check identified no issues (0 silenced). ``` ### Проверка Celery (если установлен) ```bash celery -A dbapp inspect ping # Должно вывести: pong ``` ### Проверка Redis (если установлен) ```bash redis-cli ping # Должно вывести: PONG ``` ### Проверка FlareSolver ```bash curl http://localhost:8191/v1 # Должно вернуть JSON с информацией о сервисе ``` --- ## Решение проблем при установке ### Проблема: ModuleNotFoundError: No module named 'celery' **Решение 1**: Установите Celery ```bash pip install celery django-celery-results ``` **Решение 2**: Используйте базовую установку (см. Вариант 2) ### Проблема: Redis connection refused **Решение**: Запустите Redis ```bash docker-compose up -d redis # или sudo systemctl start redis ``` ### Проблема: FlareSolver не отвечает **Решение**: Запустите FlareSolver ```bash docker-compose up -d flaresolverr # или docker run -d -p 8191:8191 ghcr.io/flaresolverr/flaresolverr:latest ``` ### Проблема: Миграции не применяются **Решение**: Проверьте подключение к базе данных ```bash # Проверьте .env файл cat dbapp/.env # Проверьте PostgreSQL docker-compose up -d db docker-compose logs db ``` --- ## Переменные окружения Создайте файл `dbapp/.env` (если еще не создан): ```bash # Database DB_ENGINE=django.contrib.gis.db.backends.postgis DB_NAME=geodb DB_USER=geralt DB_PASSWORD=123456 DB_HOST=localhost DB_PORT=5432 # Django SECRET_KEY=your-secret-key-here DEBUG=True ALLOWED_HOSTS=localhost,127.0.0.1 # Celery (опционально) CELERY_BROKER_URL=redis://localhost:6379/0 # FlareSolver FLARESOLVERR_URL=http://localhost:8191/v1 ``` --- ## Следующие шаги После успешной установки: 1. **Прочитайте документацию**: - `QUICKSTART_ASYNC.md` - быстрый старт - `ASYNC_LYNGSAT_GUIDE.md` - полное руководство - `ASYNC_CHANGES_SUMMARY.md` - технические детали 2. **Настройте production окружение** (если необходимо): - Настройте Systemd/Supervisor для Celery - Настройте Nginx/Apache - Настройте SSL - Настройте мониторинг 3. **Добавьте данные**: - Добавьте спутники через админ-панель - Запустите заполнение данных Lyngsat 4. **Настройте мониторинг**: - Установите Flower для мониторинга Celery - Настройте логирование - Настройте алерты --- ## Дополнительные инструменты ### Flower - мониторинг Celery ```bash pip install flower celery -A dbapp flower # Откройте http://localhost:5555 ``` ### Redis Commander - GUI для Redis ```bash docker run -d -p 8081:8081 --name redis-commander \ --env REDIS_HOSTS=local:localhost:6379 \ rediscommander/redis-commander # Откройте http://localhost:8081 ``` ### pgAdmin - GUI для PostgreSQL ```bash docker run -d -p 5050:80 --name pgadmin \ -e PGADMIN_DEFAULT_EMAIL=admin@admin.com \ -e PGADMIN_DEFAULT_PASSWORD=admin \ dpage/pgadmin4 # Откройте http://localhost:5050 ``` --- ## Обновление системы ### Обновление зависимостей ```bash pip install --upgrade -r dbapp/requirements.txt ``` ### Применение новых миграций ```bash cd dbapp python manage.py migrate ``` ### Перезапуск сервисов ```bash # Перезапуск Docker контейнеров docker-compose restart # Перезапуск Celery Worker # Найдите PID процесса ps aux | grep celery # Остановите процесс kill # Запустите снова celery -A dbapp worker --loglevel=info ``` --- ## Удаление системы ### Остановка сервисов ```bash # Остановка Docker контейнеров docker-compose down # Остановка Celery Worker pkill -f "celery worker" ``` ### Удаление данных ```bash # Удаление Docker volumes docker-compose down -v # Удаление виртуального окружения rm -rf dbapp/.venv # Удаление миграций (опционально) find dbapp -path "*/migrations/*.py" -not -name "__init__.py" -delete find dbapp -path "*/migrations/*.pyc" -delete ``` --- ## Поддержка Если у вас возникли проблемы: 1. Проверьте логи: - Django: консоль где запущен runserver - Celery: `dbapp/logs/celery_worker.log` - Docker: `docker-compose logs` 2. Проверьте документацию: - `ASYNC_LYNGSAT_GUIDE.md` - `QUICKSTART_ASYNC.md` - `ASYNC_CHANGES_SUMMARY.md` 3. Проверьте статус сервисов: ```bash docker-compose ps ps aux | grep celery redis-cli ping ``` 4. Создайте issue в репозитории с описанием проблемы и логами