LINUX.ORG.RU

Деплой нескольких проектов

 


0

2

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

Сейчас останавился на контроле через supervisor, а проекты должны содержать:

  • requrements.txt (список используемых пакетов)
  • директорию с конфигом nginx для симлинка
  • такую же директорию для supervisor
  • конфиг uwsgi

Механизм такой: запускаем fab с адресом репозитория и названием проекта, fab создает директорию в www, виртуальное окружение, клонирует репозиторий, доставляет зависимости, делает симлинки для конфигов и, опционально, релоадит супервизор и nginx.

Ход мыслей верный? Или можно сделать проще/лучше/надежнее? Может есть удобные готовые инструменты?


Ответ на: комментарий от val-amart

Почему не устраивает? Устраивает, пользуем. Или ты про какие-то фичи специфичные?

jessey
() автор топика

Все верно, такая схема отлично работает. В дальнейшем удобно использовать fab для обновления проекта по инкрементальной схеме: checkout, tarball, rsync. Также, имеет смысл предусмотреть рендер конфигов на локальной стороне + diff при обновлении после upload. Очень рекомендую - помогает не бояться обновлений конфигов. Кроме того, я бы использовал не симлинки, а include в основном конфиге nginx.

m0use
()
Ответ на: комментарий от m0use

я бы использовал не симлинки, а include в основном конфиге nginx.

Каждый раз дописывать /etc/nginx/nginx.conf?

jessey
() автор топика
Ответ на: комментарий от jessey

Нет, nginx умеет include-ить пути вида:

include /home/www/*/conf/nginx/*.conf;

Соответственно, проекты располагаются в /home/www/, а в подкаталогах ~/conf/nginx/ располагаются файлы конфигураций для каждого из проектов.

Туда можно аплоадить «новые» конфиги (vhost.conf.new) и делать diff со старыми, средствами fabric. Если все устраивает - заменять.

m0use
()

Или можно сделать проще/лучше/надежнее?

sh скриптик, которые переходит, чекает svn, потом чистит JS и CSS от комментариев/пустых строк, потом все это сжимается gzip и рестартится uwsgi/nginx.

jsmin by Douglas Crockford, cssmin не помню откуда выдрал.

xpahos ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.