正如标题所述,我试图通过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套接字激活协议。
grep -r LISTEN_FDS
得出了我的初步结论,只有在我实际尝试后才发现我的错误。