Каков наилучший способ запустить проект Django на AWS? - PullRequest
5 голосов
/ 24 февраля 2012

Как проект должен быть развернут и запущен.В этом пространстве множество инструментов.Что следует использовать и почему?

  • Супервизор
  • Gunocorn
  • Ngnix
  • Ткань
  • Бото
  • Pip
  • Virtualenv
  • Балансировщики нагрузки

Ответы [ 3 ]

11 голосов
/ 24 февраля 2012

Это зависит от вашей конфигурации.Мы используем следующий стек для нашей среды в Rackspace, но вы можете настроить то же самое на AWS с экземплярами EC2.

  • Ubuntu 11.04
  • Varnish (в кэш-памяти), чтобы избежатьдиск ищет
  • NginX для статического содержимого сервера
  • Apache для динамического содержимого сервера (MOD-WSGI)
  • Python 2.7.2 с Django
  • Jenkins для нашегонепрерывные сборки
  • GIT для контроля версий
  • Матрица для развертывания.

Таким образом, все работает так, что GIT-push-запрос в исходный репозиторий опрашиваетсяДженкинс.Дженкинс затем тянет изменения вниз от происхождения.Создает яйцо Python, запускает модульные тесты, использует Fabric для развертывания этого яйца в необходимых средах и перезагружает конфигурацию Apache, чтобы убедиться, что разветвленные процессы Apache собирают новое яйцо Python.

Надеюсь, это поможет.

3 голосов
/ 28 февраля 2012

Как уже сказал Майкл Клокель, зависит от вашей конфигурации, у меня есть:

  • Ubuntu 10.04 LTS
  • Nginx
  • Uwsgi
  • git versioncontrol
  • python virtualenv и pip

Вы можете проверить параметры развертывания здесь: Модуль импорта Django, Virtualenv, nginx + uwsgi wsgi ошибка

и почему я использую nginx и uwsgi здесь: http://nichol.as/benchmark-of-python-web-servers

Также я использую fabric для развертывания приложения и chef solo http://ericholscher.com/blog/2010/nov/8/building-django-app-server-chef/

johny cache для sql запросов и raven иЧасовой, чтобы вести журнал того, что происходит в приложении.

2 голосов
/ 28 февраля 2012

Я бы использовал uWSGI + Nginx с точки зрения производительности (я думаю, что сравнение уже было связано в другом ответе), pip и virtualenv для развертывания, поскольку это сохраняет самообладание-содержит и облегчает чистое развертывание с использованием ткани или аналога.Используйте git для контроля версий. Jenkins может поддерживать непрерывную интеграцию.Я бы использовал балансировщик нагрузки AWS (ELB) перед вашими экземплярами EC2 для балансировки - выполняет свою работу, не беспокоясь об этом. django-хранилища для загрузки ваших статических файлов в s3, что избавляет вас от необходимости иметь другой сервер для раздачи статических файлов.

Однако это немного зависит от накладных расходов вашего администратора.Если вы ищете что-то чистое и простое для развертывания и масштабирования, я бы отбросил весь стек AWS EC2, использовал Heroku в качестве внешнего интерфейса и s3 для статических файлов.Это экономит все административное время на поддержку ящиков и позволяет сосредоточиться на разработчике.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...