Хостинг и 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

ссылка на оригинал статьи http://habrahabr.ru/post/218587/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *