Хороший инструмент для автоматической настройки и развертывания проектов Django - PullRequest
13 голосов
/ 30 марта 2011

Я начинаю как независимый веб-разработчик, и недавно я напугал клиента, дав цитату за довольно простой сайт, который был немного выше, чем они ожидали. Это было в основном Брошюра, что они могли бы сделать сами в размещенном решении как Wordpress.com или сайты Google. За исключением одной критической функции, которая заставил меня думать, что Django будет хорошо, и что какая-то надлежащая сеть развитие может быть мотивировано.

Если посмотреть на задачи, которые я перечислил в моей грубой оценке, это довольно для меня очевидно, что большинство часов там вещи, которые не специфичные для этого сайта клиентов. Это заставило меня подумать, что я должен есть скрипт для автоматизации процесса настройки и развертывания нового Проекты Джанго.

Несколько вещей еще нужно сделать вручную, например:

  • Установите новый VPS (или в большинстве случаев просто используйте виртуальные хосты на существующем VPS).

  • Изменить настройки DNS, чтобы они указывали на clientsdomain.com и test.clientsdomain.com на новый VPS.

  • Настройка SSH-ключей

  • Редактировать файл конфигурации.

Затем сценарий будет выполнять такие вещи, как:

  • Установите необходимые пакеты на новый VPS

  • Установить брандмауэр iptables по умолчанию на новом VPS

  • Добавить конфигурацию nginx / apache для clientsdomain.com и test.clientsdomain.com

  • Настройка новых баз данных для производства и тестирования на VPS и для разработки на моей локальной машине.

  • Создайте новый проект Django и поместите его в Bitbucket.

  • Настройка settings.py и local_settings.py для производства, тестирования и разработки

  • Настройка подпрограмм резервного копирования для рабочей базы данных и каталога загружаемых файлов.

  • Включить некоторые приложения по умолчанию: плоские страницы, администратор

  • Добавьте несколько шаблонов шаблонов, пару шаблонных шаблонов и панель навигации.

  • Добавить CSS-фреймворк 960.gs

  • Добавить JQuery

  • Настройка djapian или Haystack (включая задание cron для автоматического обновления) для поиска.

  • Настройка нового профиля Google Analytics.

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

  • Настройка мониторинга Pingdom

Я использовал Рейк и Ткань для чего-то похожего (но менее амбициозного) в прошлом, и я думаю, что Ткань может быть очень подходящей для этой задачи но я все равно хотел бы получить ваш вклад. Есть ли другие инструменты, которые я должен изучить? Я слышал хорошо что-то о Puppet , но просто глядя на их сайт (он содержит слово Enterprise), я чувствую, что это может быть излишним для операции с одним человеком.

Ответы [ 4 ]

8 голосов
/ 04 мая 2011

Puppet может показаться пугающим и излишним для небольших проектов, поскольку он так часто используется для крупных развертываний, но я использую его для управления только одной машиной в автономном режиме без настройки клиентского сервера, поэтому я не могуприходится иметь дело с SSL-сертификатами и несколькими компьютерами, что значительно упрощает работу, но при этом дает мне преимущество, заключающееся в том, что я могу действительно быстро выполнить аварийное восстановление или перенести свой хостинг без особых усилий.Есть несколько веских причин (идемпотентность, кроссплатформенная поддержка, полное управление жизненным циклом, абстракция, краткие DSL) для использования современных систем управления конфигурацией над системами, которые по сути являются сценариями, которые выполняют ssh в цикле, или полагаются на платформы, которые блокируютВы в.

Проверьте обучающую куклу для быстрого ускорения, включая примеры и игровую площадку для виртуальных машин.Вы можете получить действительно полезные вещи с помощью простых сценариев Puppet (манифестов), которые работают автономно, а затем начать изучать все расширенные функции, как только они вам понадобятся.

Еще одна приятная вещь заключается в том, что многие манифесты и модули Puppet имеютуже были написаны другими, и они доступны в Puppet Forge и многим другим опытным пользователям Puppet .

4 голосов
/ 30 марта 2011

В последнее время я много размышлял об этом как о ком-то в подобной должности.

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

Посмотрите на это, чтобы получить хорошую отправную точку для универсального скелетного кода проекта django

http://blog.zacharyvoase.com/2010/02/03/django-project-conventions/

Я собрал нечто подобное, что позволяет мне встать иработает быстро, но и отделить серверные вещи от проекта.Это очень важно, поскольку позволяет управлять версиями каждого проекта, не включая файлы системы / сервера. Это здесь (все еще в стадии разработки).Это заботится о макете папки, дополнительных css, шаблонных HTML-материалах, grid / 960, jquery, разработке и производственных настройках, настройках базы данных (в основном), установленных по умолчанию приложениях и т. Д. Вот объяснение макета

Использование Virtualenv , Virtualenvwrapper & pip позволяет вам устанавливать автономные инкапсулированные среды Python, которые отлично подходят для запуска нескольких проектов на одном VPS.Pip позволяет вам устанавливать пакеты в определенный virualenv, а также выводить все ваши пакеты в текстовый файл, который впоследствии можно будет импортировать.Это делает перераспределение кода из разработки в производство очень быстрым.Это также позволяет вам записать в ваш скелетный код универсальный файл требований, который автоматически устанавливает все ваши обычные приложения django, то есть django-тегирование и т. Д.баз данных на разных машинах, слишком сложно импортировать / экспортировать данные.Теперь у меня есть только отдельные производственные и dev-базы данных на VPS и удаленно (через ssh) подключаюсь к dev при разработке.Вы можете легко скопировать одно в другое, что тоже неплохо.

Когда все будет готово, вы сможете развернуться от разработки к производству с использованием Fabric (я пока не застрял в этом, так что я не уверен впростота использования)

Мне было бы очень интересно услышать мысли других людей по этому поводу, когда я собирался опубликовать что-то похожее!

4 голосов
/ 30 марта 2011

Мы сейчас делаем это с тканью + buildout Другие говорят, что Chef или Puppet лучше подходят (и, вероятно, если вы хотите делать вещи на уровне сервера, а не только на уровне приложения).

Также для Django есть несколько выделенных хостеров, которые снимают с вас большую нагрузку, мне особенно нравится http://ep.io, который мы используем для запуска наших полностью автоматизированных развертываний для демонстраций django-cms , так что, возможно, вам следует обратить внимание и на тех хостинг-провайдеров, а не ограничиваться VPS, которые для вас более затратны.

2 голосов
/ 14 апреля 2011

Ознакомьтесь с Silk Deployment, основанным на Fabric и используемым для развертывания Django (или любого WSGI) + Nginx + Gunicorn:

http://pypi.python.org/pypi/silk-deployment/

...