Правильный способ обновления живого веб-приложения Django

3

Перед реальной проблемой позвольте мне объяснить нашу архитектуру. Мы используем git через ssh на наших серверах и имеем post-recieve hooks, которые можно настроить для кода. Код поддерживается в отдельной папке. Нам нужно, когда человек посылает код на сервер, он запускает тесты, переносы и обновляет его на реальном сайте. В настоящее время, когда приложение подвергается обновлению в модели, оно сбой.

Нам нужен способ, которым крючки script обнаруживают, что код правильный, по правилу я означает отсутствие синтаксической ошибки и т.д., а затем выполнять миграцию и обновлять текущее приложение новыми кодами без простоя. Мы используем nginx для прокси-сервера для приложения django, virtualenv для пакетов, устанавливаемых из файла требований .txt и gunicorn для развертывания.

Базовая строка заключается в том, что если в любой момент происходит сбой, то push commit следует отклонить. и если все тесты будут успешными, он должен сделать миграции в dbs и начать с нового приложения.

Хотя я и должен был использовать два порта для них. Один запускает основное приложение, а другой - с помощью push-коммитов. Если тестовые коды были успешно протестированы, замените порт на nginx на git приложение и перезагрузите nginx. Пожалуйста, обсудите недостатки этого приложения, если таковые имеются. И пример post-commit script, чтобы показать, как отклонить git commit в случае сбоя.

Теги:
nginx

1 ответ

2
Лучший ответ

Рассмотрим использование fabric. Ткань позволит вам создавать питонические скрипты, и вы можете запускать развертывания на удаленном сервере, создавая новую базу данных, и проверять, безопасны ли миграции. Как только все хорошо, вы можете упомянуть в своей ткани script для развертывания в prod или если не упоминается в ткани для отправки электронной почты.

Это делает вашу жизнь простой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню