通过systemd套接字激活启动Ruby on Rails应用程序(即启动Rails服务器侦听已有的套接字)



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

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

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

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

有关此设置的更多细节和一些示例,请参阅我的博客文章

在没有任何替代方案的情况下,我最终可能会使用Puma web服务器,它实现了systemd套接字激活协议

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

相关内容

最新更新