通过systemd套接字激活启动Ruby on Rails应用程序(即启动Rails服务器监听预先存在的套接字)

时间:2015-10-19 11:04:53

标签: ruby-on-rails ruby systemd

正如标题所述,我试图通过systemd套接字激活启动Ruby on Rails应用程序。我之前没有使用Ruby的经验,缺乏高质量的文档令人沮丧。

从systemd获取listen套接字是微不足道的,尽管我正在努力使用该套接字。是否有应用服务器,它接受预先存在的侦听套接字?或者我是否必须自己编写,可能是通过实现Rack :: Handler(根据我能够从文档中收集的有限信息)?在后一种情况下,最小的示例实现会有所帮助。

我正在寻找一种适合生产,轻量级,省力的解决方案,能够在嵌入式硬件上平均为2个并发用户提供服务。

2 个答案:

答案 0 :(得分:1)

从Puma 3.0.0开始,它的Rack模块支持套接字激活,rails server使用它。这意味着从带有套接字激活的systemd运行bin/rails server puma现在可以开箱即用(使用Puma 3.9.1进行测试)。需要注意的是,您必须在应用程序根目录中启动bin/rails,而不是全局安装的版本。

有关此设置和一些示例的详细信息,请参阅my blogpost

答案 1 :(得分:0)

如果没有任何替代方案,我可能最终会使用Puma Web服务器来实现systemd套接字激活协议

编辑:Puma确实实现了套接字激活,但不在Rack处理程序中。 我通过grep -r LISTEN_FDS得出了我的初步结论,并且在我实际尝试之后才发现了我的错误。