Перейти к содержанию

Развёртывание🔗

Раздел описывает запуск проекта в двух режимах:


Разработка (Dev)🔗

  1. Клонирование и обновление кода

    Выполнить клонирование репозитория:

    git clone git@github.com:MarkizaAssistant/DjangoMain.git
    

    Обновить код при необходимости:

    git pull
    
  2. Активация демо-данных

    Открыть файл billing/apps.py и раскомментировать строку:

    import billing.demo_signals
    

    Это активирует сигналы, автоматически создающие тестовые данные (профили, чаты, домены и др.).

  3. Подготовка Docker-файлов

    • Удалить или переместить в другое место файл docker-compose.yml
    • Переименовать docker-compose_local.ymldocker-compose.yml
    • Переименовать Dockerfile_localDockerfile
  4. Создание .env

    Скопировать из .env.example и отредактировать на свой лад.

    Не забудь указать порты в env

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

    Если запуск уже был ранее:

    docker-compose down -v
    

    Затем:

    docker-compose up --build
    

    Будут развёрнуты:

    • PostgreSQL
    • Django-проект

    Применятся миграции и демо-сигналы.

    Будет создан суперюзер с логином admin и паролем admin123


Продакшн (Prod)🔗

  1. Клонирование и обновление кода Выполнить клонирование репозитория:
    git clone git@github.com:MarkizaAssistant/DjangoMain.git
    
    Обновить код при необходимости:
    git pull
    
  2. Создание .env

    Скопировать из .env.example и задать параметры:

    SECRET_KEY=...
    DEBUG=False
    ALLOWED_HOSTS=api.example.com,...
    DB_NAME=...
    DB_USER=...
    DB_PASSWORD=...
    DB_HOST=localhost
    DB_PORT=5432
    ...
    
  3. Docker Compose: запуск зависимостей

    docker-compose.yml должен включать:

    • PostgreSQL
    • Redis
    • RabbitMQ, UI (порт 15672)

    Не забудь настроить порты

  4. Установка зависимостей

    python -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt
    
  5. Применение миграций

    python manage.py migrate
    
  6. Создание суперпользователя

    python manage.py createsuperuser
    
  7. Запуск Gunicorn

    /var/www/proj/venv/bin/gunicorn config.wsgi:application --bind 0.0.0.0:8000
    
  8. (Опционально) systemd-сервис

    Пример /etc/systemd/system/markiza.service:

    [Unit]
    Description=Markiza Django App (Gunicorn)
    After=network.target docker.service
    Requires=docker.service
    
    [Service]
    User=root
    Group=root
    WorkingDirectory=/var/www/proj
    ExecStart=/var/www/proj/venv/bin/gunicorn config.wsgi:application --bind 0.0.0.0:8000
    Restart=always 
    
    [Install]
    WantedBy=multi-user.target
    
    После создания:

    systemctl daemon-reexec
    systemctl daemon-reload
    systemctl enable markiza
    systemctl start markiza
    
  9. Обновление прод-сервиса

    При обновлении:

    git pull
    pip install -r requirements.txt # если есть новые зависимости
    python manage.py migrate   # если есть новые миграции
    systemctl restart markiza  # если используется systemd