среда, 25 июля 2012 г.

Установка uWSGI с помощью zc.buildout

uWSGI - это мощный, быстрый и гибкий сервер позволяющий запускать веб-приложения на Python и ещё на нескольких популярных языках. Он имеет встроенную поддержку в nginx, за счёт чего отпадает всякая необходимость в Apache + mod_wsgi.
Установить uWSGI практически на любой *nix подобной системе можно средствами системного менеджера пакетов. Но это не тот вариант, который устраивает меня при разработке и развёртывании веб-приложений.

У меня есть следующие требования к разрабатываемым мной проектам:
  • Минимальное число внешних зависимостей, которые необходимо установить средствами ОС. Как правило к ним относятся либо достаточно сложные в установке из исходников приложения, либо очень распространённые и популярные приложения, которые есть в любой ОС и их  сможет установить и настроить даже начинающий администратор.
  • Повторяемость конфигурации проекта на различных платформах и версиях ОС даже спустя длительное время. Для этого требуется точное соответствие версий внешних зависимостей тем, которые использовались при разработке.
  • Минимальное число телодвижений для того, что бы развернуть проект на "чистом" сервере.
Моим давним помощником в удовлетворении всех этих требований является zc.buildout, а потому я покажу как можно с помощью него установить в проекте свою версию uWSGI. Само собой в "сырной лавке" имеются специальные рецепты для установки uWSGI, но некоторые особенности их работы меня не устраивают (например нельзя указать версию uWSGI, всегда устанавливается самая последняя).
Вот простейшая конфигурация билдаута для установки нужной версии uWSGI:

[buildout]
parts = uwsgi

[uwsgi_download]
recipe = hexagonit.recipe.download
url = http://projects.unbit.it/downloads/uwsgi-1.2.4.tar.gz
md5sum = 5216f3742fee40999ca4519519b890ad
strip-top-level-dir = true
ignore-existing = true


[uwsgi]
recipe = collective.recipe.cmd
on_install = true
on_update = true
cmds =
    cd ${uwsgi_download:location}
    ${buildout:executable} uwsgiconfig.py --build
    cd ${buildout:bin-directory}
    ln -fs ${uwsgi_download:location}/uwsgi uwsgi

Комментариев нет:

Отправить комментарий