0

有一些示例如何将基于 EM 的服务正常的 HTTP 服务一起部署,由Passenger 支持,例如EventMachine 和 Passenger。HTTP 组件由 HTTP 服务(nginx、apache)激活,由 Passenger 托管/监控,然后该激活的组件可以启动 EM 处理。

但是,我正在研究如何部署仅基于 EM 的服务(UDP 服务器)。响应 HTTP 的东西,因此它不存在于整个 Apache/Nginx/Passenger 环境中。

通常答案是“启动你的进程并启动 EM 循环”,但我不想错过 apache/nginx/passenger 带来的好处(初始化、启动、配置、日志记录、资源监控)。在 init.d 中放置一个“ruby udp_server.rb”似乎有点原始,并且容易发生实际部署灾难(失控进程等)。

4

1 回答 1

1

如果您可以为每个 apache 进程运行一个单独的 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/ ),它内置支持运行和管理长期运行的服务

于 2013-11-13T09:39:56.667 回答