2016-11-27 3 views
1

Каков правильный способ развертывания проекта Django в Интернете? В настоящее время метод, который я использую, включает ssh-ing на сервер, git pull, выполнение операций Django (миграции, collectstatic и т. Д.), А затем перезапуск веб-сервера. Там должен быть автоматизированный способ сделать это. Например. Если бы я хотел развернуть на 10 серверов, я не хочу их вручную обновлять!Метод развертывания Django

Я не могу найти ничего конкретного о лучших практиках. Я слышал о Fabric, но я не думаю, что он совместим с Python3 (который я использую). Кажется, что есть много инструментов, но я не уверен, какие из них заслуживают уважения.

Любые советы будут полезны, спасибо

ответ

1

Ткань может быть не совместим с Python3, но это не мешало бы вам много писать свои скрипты в Deploy ткани, даже если ваш главный проект Python3.

Есть действительно 3 отдельных вопроса, с которыми вы сталкиваетесь здесь: 1. упаковка вашего кода, 2. организация развертывания и 3. управление серверами.

По вопросу 1, git является общим выбором для Python. Ваши другие варианты - создание пакетов уровня ОС (например, apt) или построение изображений Docker.

Для выпуска 2, Fabric на самом деле довольно хороший выбор для фактического развертывания. Процедурные части (запуск миграции, создание виртуального env и т. Д.) Очень легко кодируются в Python. Здесь можно использовать другие инструменты управления конфигурацией, такие как Ansible или Chef.

Проблема 3 действительно вступает в игру с инструментами, такими как Ansible или Chef (если вы используете один из них, часто бывает целесообразно сделать шаг 2 с использованием того же инструмента).

Мой текущий любимый метод - строительство докеров. Для небольшого (одного сервера) развертывания я просто пишу Makefile в сочетании с Docker-машиной. Для мультисервисов ECS очень легко перейти (если вы находитесь на AWS) для управления вашей конфигурацией и развертываниями. Если вы не на AWS, кубернете дает вам много возможностей, но имеет массу операционных издержек.

+0

Спасибо. Я пошел с Fabric, так как мой проект небольшой и имеет крайний срок. Просто написал файл fabfile.py, и он отлично работает для развертывания. Я хотел бы попытаться использовать Докер, когда у меня будет больше времени, я все время слышу об этом! – zubhav

2

Просто для решения вопроса об использовании Fabric для развертывания приложения Python 3: Обычно ткань не устанавливается как часть проекта (например, в virtualenv), поэтому, если ваша система имеет Python 2, тогда вы должны быть способны для установки и запуска Fabric. С другой стороны, если ваша система только имеет Python 3, и это не вариант установки Python 2, то вы не сможете использовать Fabric.

Важно отметить, что Fabric не привязан к вашему проекту - он стоит сам по себе как системный инструмент. Вы определенно можете установить его в virtualenv и привязать его к вашему приложению (т. Е. Если у вас было приложение Python 2), но вам не нужно этого делать.

Что касается правильного развертывания приложений Django, это ситуативно и требует некоторого мнения, поэтому мы не можем действительно ответить на это для вас. Но я определенно рекомендую Fabric кому-то в вашей ситуации, в качестве отправной точки для автоматизации существующего набора задач оболочки, которые вы обычно выполняете для своих развертываний.

+0

Спасибо за это. Я просто потратил несколько часов на использование Fabric, и теперь у меня есть полностью автоматизированная процедура развертывания! – zubhav

+0

Замечательно! Я использую его в течение многих лет, легко написать некоторые довольно сложные процедуры, особенно в модульной форме.Ознакомьтесь со следующими документами для получения дополнительной информации: - http://docs.fabfile.org/en/1.12.0/usage/tasks.html#new-style-tasks - http://docs.fabfile.org /en/1.12.0/api/core/tasks.html - http://docs.fabfile.org/en/1.12.0/usage/execution.html#execute – YellowShark

Смежные вопросы