...

понедельник, 7 апреля 2014 г.

Хостинг и CI составного проекта на Django+Node.js с помощью Jenkins и Ajenti-V

В данной статье рассматривается простой сценарий настройки веб-сервера и CI. В качестве примера используем проект, который состоит из четырех процессов:


  • Веб-приложение Django

  • Socket.IO сервер на Node.js

  • Сервер задач Celery

  • Планировщик Celerybeat



Шаг нулевой




Необходимы следующие вещи:

  • Установленные Ajenti V (ajenti-v, ajenti-v-python-gunicorn, ajenti-v-nodejs) и Jenkins

  • Беспарольный sudo для пользователя jenkins (в целях безопасности: jenkins ALL:NOPASSWD /usr/bin/ajenti-ipc*)

  • Какой-либо метод автоматического деплоймента кода самого проекта. В нашем случае используется Fabric и вот этот fabfile


Шаг первый. Настройка Ajenti V




Процесс настройки в принципе несложен, поэтому отметим только важные моменты.

Название и местположение сайта:



URL и серверы Django и Node:





Процессы Celery:



Командные строки к Celery:



/srv/bucket/env/bin/python ./manage.py celery worker --loglevel=info --settings=config.environments.prod
/srv/bucket/env/bin/python ./manage.py celerybeat --settings=config.environments.prod



Жмем Apply.

Шаг второй: экспортируем конфигурацию



ajenti-ipc v export Bucket > website.json

Сохраняем результат в нашем проекте как deployment/website.json.

Пример конфига.


Шаг третий: настраиваем Jenkins




Правило сборки в Jenkins будет состоять из трех шагов:


  • Перевод сайта в режим обслуживания и импорт конфигурации

  • Деплоймент файлов сайта

  • Перевод сайта обратно в рабочий режим


Перевод сайта в режим обслуживания и импорт конфигурации



sudo ajenti-ipc v import `pwd`/deployment/website.json
sudo ajenti-ipc v maintenance <имя сайта> on

Перевод сайта в рабочий режим



sudo ajenti-ipc v maintenance <имя сайта> off


Запускаем нашу сборку в Jenkins и видим как во время обновления пользователи лицезреют приятное глазу сообщение…



… а наш сайт замечательно работает, и вы восхитительны!



Разные ссылочки на документацию: Jenkins, Ajenti, Ajenti V, Fabric


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


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

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