正如标题所述,我试图通过systemd套接字激活启动Ruby on Rails应用程序。我之前没有使用Ruby的经验,缺乏高质量的文档令人沮丧。
从systemd获取listen套接字是微不足道的,尽管我正在努力使用该套接字。是否有应用服务器,它接受预先存在的侦听套接字?或者我是否必须自己编写,可能是通过实现Rack :: Handler(根据我能够从文档中收集的有限信息)?在后一种情况下,最小的示例实现会有所帮助。
我正在寻找一种适合生产,轻量级,省力的解决方案,能够在嵌入式硬件上平均为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
得出了我的初步结论,并且在我实际尝试之后才发现了我的错误。