2013-11-11 4 views
0

Есть примеры того, как развернуть службу на основе EM наряду с обычной службой HTTP, поддерживаемой Пассажиром, например EventMachine and Passenger. HTTP-компонент активируется службой HTTP (nginx, apache), размещается/контролируется Пассажиром, и этот активированный компонент может затем начать обработку EM.Как развернуть службу на основе не-http EventMachine на Passenger

Однако я рассматриваю некоторые идеи о развертывании службы на основе EM (UDP-сервер). Что-то, что делает не, отвечает на HTTP, поэтому он не живет во всей среде Apache/Nginx/Passenger.

Обычно ответ будет «просто воспитывать ваш процесс и запускать цикл EM», но я не хочу упускать пользу apache/nginx/пассажира (init, start up, conf, logging, resource мониторинг). Размещение «ruby udp_server.rb» в init.d кажется немного примитивным и подверженным реальным бедствиям развертывания (процесс убегания и т. Д.).

ответ

1

Если вы ОК с запуском отдельного реактора EM для каждого процесса апача вы можете просто кликай в инициализаторе, что-то в этих строках:

https://gist.github.com/eatenbyagrue/1338545

Если вам нужна услуга EM быть 1-на сервер, то вам нужно обернуть его в качестве процесса демона и, возможно, запустить его через скрипт init.d или Бога, см

https://www.ruby-toolbox.com/categories/daemonizing https://github.com/mojombo/god

В качестве альтернативы можно воспользоваться решением для развертывания «все в одном», например Torquebox (http://torquebox.org/), которое имеет встроенную поддержку для управления и управления долгосрочными службами.