我想在我的VPS服务器上运行几个(>2)个基于Rack的小应用程序,它已经运行了一个大型Rails应用程序。
Rails应用程序使用传统的"Unicorn + nginx“对,它需要我在VPS机器上拥有的大部分RAM资源。
我曾尝试为每个应用程序添加类似的Unicorn配置,但这导致RAM资源不足。
所以我的问题是:有没有可能设置一个小的节省内存的服务器,让它一次运行所有Sinatra应用程序?
更新:如果这很重要,我并不太关心性能。这些应用程序并不打算做任何严肃的工作。
UPDATE2:基于套接字与Nginx共享的方法比有端口的方法更好。
谢谢!
发布于 2012-08-27 05:47:57
我对这个问题做了自己的探索,我想我找到了一个解决方案,可以让一台web服务器同时运行我所有的小应用程序。
它基于由Remi Taylor (@remi on Github) https://github.com/remi/rack-stack创建的RackStack not-a-a-gem。
RackStack的灵感来自Rack::Builder,它似乎也很适合完成这样的任务-- RackStack只是朝着同样的方向走了一步,以一种我认为非常好和方便的方式抽象了“栈”功能。
这是一个由两个示例应用程序(Sinatra和Rack)组成的RackStack演示:https://github.com/stanislaw/skeletons/tree/master/rack_stack。为了模拟真实服务器上的堆栈应用程序行为,我修改了/etc/hosts文件,使localhost2主机指向127.0.0.1。
我启动瘦服务器,然后在本地主机或localhost2上运行请求:发往' localhost‘的请求由FirstApp处理,发往'localhost2’的请求由SecondApp处理。
当我在真实的服务器上测试我的应用程序时,我现在不能预见会出现任何问题,但现在这种方法似乎正是我想要的:我想象,在真实的服务器上,Nginx会将请求传递给与我的机架应用程序关联的所有主机到瘦服务器侦听的套接字。因此,RackStack将只满足那些针对我堆栈中的应用程序的请求。
任何建议,本方案的改进或替代方案,仍然感谢!
https://stackoverflow.com/questions/12125924
复制相似问题