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

标签 ruby-on-rails ruby rack

我想在我的 VPS 上运行几个(超过 2 个)基于 Rack 的微型应用程序,而 VPS 已经运行了一个大型 Rails 应用程序。

Rails 应用程序使用传统的 Unicorn 和 nginx 组合,它需要我 VPS 上的大部分 RAM。

我尝试为每个应用程序添加类似的 Unicorn 配置,这让我得出结论,RAM 不足。

所以我的问题是:是否可以设置一个小型内存节省服务器,让我可以同时运行多个 Sinatra 应用程序?

更新:以防万一,我不太关心性能。这些应用并非旨在执行任何严肃的工作。

更新 2:基于与 Nginx 共享的套接字的方法优于使用端口的方法。

谢谢!

最佳答案

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

它基于 Remi Taylor(Github 上的 @remi)创建的 RackStack 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 上运行请求:对“localhost”的请求由 FirstApp 提供,对“localhost2”的请求由 SecondApp 提供。

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

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

关于ruby-on-rails - 如何在一台服务器上运行多个微型 Rub​​y (Rack) 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12125924/

相关文章:

ruby-on-rails - 基于枚举值的自定义顺序

java - 在 Elasticsearch 中加载自定义同义词文件时出错

ruby-on-rails - mongodb 中的高效下采样

ruby-on-rails - Rack 错误 -- LoadError : cannot load such file

ruby - 如何在运行时调试我的 Rack 应用程序?

javascript - 如何使用我的 javascript 函数摆脱周末约会?

ruby-on-rails - Rails hide_field_tag 整数自动转换为字符串?

ruby - 检查数组是否已经排序?

ruby - 在 Ruby 中添加到数组中的每个元素

ruby-on-rails - 如何解决 Rack Lint 错误?