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

в 2:10, , рубрики: cowboy, erlang, Erlang/OTP, github, open source, opensource, Веб-разработка

О чем это я?

С чего начинается практически каждое 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

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

Автор: Chvanikoff

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js