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

Sta*_*ich 8 ruby rack ruby-on-rails

我想在我的VPS服务器上运行几个(> 2个)基于机架的小应用程序,它已经运行了一个大型Rails应用程序.

Rails应用程序使用传统的"Unicorn + nginx"对,它需要我在VPS机器上拥有的大部分RAM资源.

我已经尝试为每个应用程序添加类似的Unicorn配置,这导致我的RAM资源不足.

所以我的问题是:是否可以设置一个小巧的内存节省服务器,允许一次运行所有Sinatra应用程序?

更新:如果重要,我不太关心性能.这些应用程序不打算做任何严肃的工作.

UPDATE2:基于与Nginx共享的套接字的方法优于具有端口的方法.

谢谢!

Sta*_*ich 5

我对这个问题进行了自己的探索,我想我找到了一个解决方案,它允许我让一个网络服务器同时运行我所有的小应用程序.

它基于由Remi Taylor(@remi on Github)创建的RackStack not-yet-a-gem https://github.com/remi/rack-stack.

RackStack的灵感来自Rack :: Builder,它似乎也很适合完成这样的任务 - RackStack只是朝着同一个方向发展,以我发现非常好用的方式抽象"堆栈"功能.

以下是RackStack的演示,其中包含两个示例应用程序(Sinatra和Rack):https: //github.com/stanislaw/skeletons/tree/master/rack_stack.为了模仿真实服务器上的堆栈应用程序行为,我修改了/ etc/hosts文件,使localhost2主机指向127.0.0.1.

我启动瘦服务器,然后在localhost或localhost2上运行请求:FirstApp为'localhost'提供请求,由SecondApp提供给'localhost2'.

我现在无法预见任何可能出现的问题,当我在真实服务器上测试我的应用程序时,但现在这种方法似乎正是我所寻找的:我想,在真正的服务器上,Nginx会将请求传递给与我的机架应用程序关联的所有主机都被瘦服务器监听.因此,RackStack只会满足那些发给我堆栈中的应用程序的请求.

对此计划或替代方案的任何建议,改进仍然表示赞赏!