一台服务器上可以运行多less个rails实例?

我是一个开发人员,试图确定接近Rails应用程序的最佳方式。 我需要提供一些部署选项,并试图最小化开发成本和长期托pipe成本。

考虑一个网站,允许多个作者合作一个单一的“工作”,无论是一个小说,技术手册,甚至源代码。 “用户”可以“签出”章节,进行修改和合并变更。用户评价彼此的修改,以更高的评价允许访问越来越多的内容。我们称之为“社交版本控制”

尽pipe可以编写一个可以区分“作品”的单个rails应用程序,但是从编码的angular度来看,每个要承载的作品都可能更容易,因为它是自己的rails应用程序。 一个“主”应用程序将创build/控制每个作品服务器实例,允许浏览作品search作者,并成为网站所有者的报告中心。 现在,假设每个工作使用特定于端口的url的最简单的scheme:

Master - http://collabowork.it My Novel - http://collabowork.it:3001 Some Manual - http://collabowork.it:3002 Another work - http://collabowork.it:3003 

我的问题是:在不知情的情况下,能够在一个盒子上运行多less个rails实例? 有没有办法确定在商品服务器上可以运行多less个实例? 是否还有另外一个select,可以低成本地扩展额外的作品(也许在EC2或类似的东西上)。 由于这不是作为一个赚钱的风险投资,什么是最便宜的方式来部署(缺less额外的编码工作)。 在提供替代scheme之前,我想先进行一些成本分析,但是我不知道如何开始调整。

任何想法或想法表示赞赏。

我有一些非常相似的东西。

我们有一个应用程序位于一个目录中。 这个应用程序设置为多个不同的客户端。 每个客户端之间的唯一区别是他们使用的数据库。 当我们build立起来的时候,我决定为每个客户提供一个不同的端口并不是很漂亮,所以我们采取了不同的方法。

我知道Apache在Rails场景中不是很stream行,但它仍然是一个伟大的软件。 我们使用Apache的基于名称的虚拟主机与Passenger3一起解决这个问题。 在新版本中,您可以使用相同的应用程序目录为每个虚拟主机定义一个RailsEnv。 该指令被称为“PassengerAppGroupName”。

你得到一个像这样的虚拟主机:

 <VirtualHost _default_:80> ServerName preprod.xxxx.fr DocumentRoot /var/xxxx/current/public/ TimeOut 5000 # Passenger directives PassengerHighPerformance on PassengerAppGroupName "preprod" RailsEnv preprod # Logging ErrorLog /var/log/apache2/preprod-error.log CustomLog /var/log/apache2/preprod-access.log combined </VirtualHost> 

我觉得这个例子应该清理一下。 该解决scheme允许您使用用于连接的HTTP主机来分隔您的应用程序。

总之,如果“作品”有相同的代码库,你可以使用这个恕我直言清洁的解决scheme。

编辑:在性能方面,Apache /乘客需要512MB的RAM。 我发现,低于这个数字会导致糟糕的performance,但是YMMV。 如果添加更多的虚拟主机,我不相信它需要更多的RAM。