...

воскресенье, 28 июля 2013 г.

CowboyD: демонизируем Cowboy, встраиваемый веб-сервер для Erlang

О чем это я?




С чего начинается практически каждое web-приложение на Erlang? Не знаю, у кого как, а у меня, как правило, со строчек кода, ответственных за запуск Ковбоя и обслуживание запросов. С функции обновления правил роутинга. Причем всегда это одно и то же — только роуты отличаются, порт и количество акцепторов, может быть. И это можно сделать проще. Догадались уже, к чему я клоню? Нет, это не очередной фреймворк. Это превращение встраиваемого ковбоя в отдельно запускаемое приложение. То есть мы пишем наше приложение, хендлеры Ковбоя, но сам Ковбой не трогаем. Вообще. Ни зависимостей не указываем, ни при старте приложения не запускаем. Любопытно? Добро пожаловать под кат.



Вместо этого, когда приложение уже готово, мы в консоли выполняем команду

cowboyd start myapp /path/to/myapp 8080




и чудесным образом наше приложение запущено и можно полюбоваться на него на порту 8080. Остановить так же легко:

cowboyd stop myapp




Одновременно, разумеется, можно запускать сколько угодно приложений — главное не забывать давать им разные порты ;)

Правила роутинга записываются в файле routes.config в корневой директории вашего приложения. Синтаксис Эрланга, только не нужно объявлять модуль, экспортировать функции и, собственно, писать их. Проще посмотреть на пример routes.config. Если вам нужно обновить правила роутинга, достаточно выполнить очередную нехитрую команду:

cowboyd routes-update myapp




Код после обновления перезагружается автоматически благодаря утилите Sync.

Итак, со вводной частью закончили, теперь главная и, одновременно, самая короткая часть.


Установка




Переходим куда-нибудь, куда будем ставить cowboyd

cd ~/github_projects




Клонируем репозиторий проекта

git clone https://github.com/chvanikoff/cowboyd




Даем права на исполнения для cowboyd

chmod +x cowboyd/cowboyd




Линкуем cowboyd куда-нибудь в исполняемую директорию — например, в /usr/bin

sudo ln -s cowboyd/cowboyd /usr/bin/cowboyd




Вот и все, теперь можно запустить тестовое приложение из репозитория

cowboyd start webapp ~/github_projects/cowboyd/examples/webapp 8008




Приложение умеет говорить, что оно запущено по адресу http://localhost:8008, обслуживать статичные css из ~/github_projects/cowboyd/examples/webapp/priv/css и отдавать 404 для всех прочих страниц. Как только оно вам наскучит — самое время написать что-нибудь свое и опробовать cowboyd в деле ;)

Ссылка на репозиторий: github.com/chvanikoff/cowboyd


Спасибо за внимание.


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 fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html


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

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