Как лучше всего развертывать (управлять зависимостями) повторно используемые приложения django в реальном производственном проекте? - PullRequest
7 голосов
/ 29 сентября 2011

В нашем проекте мы используем несколько повторно используемых приложений django, мы рассматриваем, как сделать непрерывное и автоматическое развертывание простым и безболезненным.

У нас есть 2 варианта:

опция # 1: используйте «pip install xxx» для установки всех зависимостей многократно используемых приложений. Напишите скрипт для установки и проверьте зависимости.

вариант # 2: сделать копию всех используемых повторно используемых приложений в нашем собственном каталоге, поэтому мы в основном развернем все в нашем каталоге проекта.

оба варианта имеют свои плюсы и минусы, интересно, вы можете поделиться своей лучшей практикой в ​​этом?

Ответы [ 2 ]

14 голосов
/ 29 сентября 2011

Вы можете очень легко создать файл зависимостей с помощью pip, что будет означать, что между серверами будут поддерживаться правильные версии каждого приложения

# Save dependancies to a file
pip freeze > requirement_file.txt

создает файл, например:

django==1.3
django-tagging
markdown
...

, который позже можно использовать для переустановки перечисленных приложений на другом сервере

# Install all dependancies in the file
pip install -r requirement_file.txt

Это приятный и простой подход.Вы можете усложнить работу с zc.buildout

http://pypi.python.org/pypi/zc.buildout

, который помогает управлять пакетами (python и non-python) с помощью сценариев (вы создаете «получатели», содержащие подробную информацию онеобходимые вам пакеты)

Если вам нужен более широкий контроль над установками сервера, вы можете использовать 'puppet' или 'chef'

http://projects.puppetlabs.com/projects/1/wiki/Big_Picture http://wiki.opscode.com/display/chef/Chef+Server

которые предназначены для автоматизации и развертывания не только зависимостей, но и целых серверов

Мне не нужно было использовать более простых файлов требований к пипсам, но другие варианты хороши, если вам нужно больше.

РЕДАКТИРОВАТЬ

Сохранение собственной версии приложений в пути к корню / питону вашего проекта может стать громоздким и трудным для отслеживания, я бы предложил использовать файл требований к пунктам.

0 голосов
/ 29 сентября 2011

Я нашел один на веб-сайте django:

https://code.djangoproject.com/wiki/best-practices-to-work-with-3rd-party-apps-and-making-yours-portable

Похоже, он предлагает то, что я перечислил в вопросе как вариант № 2.

...