ruby-on-rails 如何在一台服务器上运行多个小型Ruby(Rack)应用程序?

eufgjt7s  于 2022-11-19  发布在  Ruby
关注(0)|答案(1)|浏览(116)

我想在我的VPS上运行几个(超过2个)基于机架的小应用程序,VPS已经有一个大型Rails应用程序在运行。
Rails应用程序使用传统的一对Unicorn & nginx,它需要我的VPS上的大部分RAM。
我试着为每个应用程序添加类似的Unicorn配置,这让我得出结论,RAM不足。
所以我的问题是:有没有可能设置一个小的节省内存的服务器,让我运行几个Sinatra应用程序一次?
最新消息:我不太关心性能,这些应用程序并不是用来做任何严肃的工作的。
更新2:基于与Nginx共享的套接字的方法优于使用端口的方法。
谢谢你!

1mrurvl1

1mrurvl11#

我做了我自己的探索这个问题,我想我找到了一个解决方案,这将允许我有一个网络服务器运行我所有的小应用程序一次。
它是基于RackStack由Remi Taylor(@remi在Github上)https://github.com/remi/rack-stack创建的,还不是一个宝石。
RackStack的灵感来自Rack::Builder,它似乎也很适合完成这样的任务-- RackStack只是朝着同一个方向进一步发展,以一种我觉得非常好和方便的方式抽象“堆栈”功能。
以下是RackStack的演示,其中包含两个示例应用程序(Sinatra和Rack):https://github.com/stanislaw/skeletons/tree/master/rack_stack。为了模拟真实的服务器上的堆栈应用程序行为,我修改了/etc/hosts文件,使localhost 2主机指向127.0.0.1。
我启动精简服务器,然后在localhost或localhost 2上运行请求:对“localhost”的请求由FirstApp提供服务,对“localhost 2”的请求由SecondApp提供服务。
我现在无法预见在真实的服务器上测试应用时可能出现的任何问题,但现在这种方法似乎正是我所寻找的:我想,在一个真实的服务器上Nginx会将请求传递到所有与我的机架应用程序相关联的主机到一个由瘦服务器监听的套接字。所以,RackStack只会满足那些寻址到我的堆栈中的应用程序的请求。
如有任何建议、改进方案或其他方案,我们将不胜感激!

相关问题