В данной статье рассматривается простой сценарий настройки веб-сервера и CI. В качестве примера используем проект, который состоит из четырех процессов:
Необходимы следующие вещи:
Процесс настройки в принципе несложен, поэтому отметим только важные моменты.
Жмем Apply.
Правило сборки в Jenkins будет состоять из трех шагов:
- Веб-приложение 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.
Комментариев нет:
Отправить комментарий