我想知道托管多个 Rails 应用程序的最佳方法是什么,其中每个应用程序都有不同的 gemset,并且可能使用不同版本的 Ruby。我正在考虑运行 RVM 来管理每个应用程序的不同 gemset,并让每个应用程序在其自己的乘客独立实例上运行。
我对这种方法唯一担心的是运行多个乘客独立服务器的内存占用量,而不是只用一个服务器为所有乘客提供服务。无论如何,我对这些东西还很陌生,所以我愿意听取关于这种设置的最佳做法的建议。
我也读过这个博客文章我想知道大家对此有何看法。这听起来是个合理的设置,并且符合我的强迫症,让我保持整洁,并在应用程序之间保持独立。
答案1
这很简单,因为 Passenger 3.2 将支持不同的 ruby 版本。唯一的问题是,3.2 尚未发布。只需确保设置正确passenger_ruby
,RVM/Capistrano 就可以完成剩下的工作。
阅读更多内容:http://ariejan.net/2012/05/11/running-a-different-ruby-with-passenger-3-2-and-rvm
请注意我做运行 3.2http://ariejan.net:-)
答案2
我是上述文章的作者。
使用独立的乘客实例或独角兽实例是个好主意,它们具有较低的内存开销并能实现良好的分离。
在最好的情况下,您将以单独的用户身份运行每个应用程序,这将阻止访问其他应用程序的数据。
如果我没记错的话,nginx 的一个实例(它用于独立的乘客)使用了大约 3MB 的 RAM - 在我看来,这非常低。
有新的选项 - Passenger 3.2,它处于测试阶段但它应该允许从一台服务器运行不同的 ruby。