我有一个Ruby on Rails应用程序,我从sysadmin的角度来管理它。此应用程序安装在负载均衡的应用程序服务器池上。这些应用程序服务器运行Apache 2和Passenger 3.0。应用程序文件存储在ramdisk中,因为应用程序服务器上的IO速度非常慢。
后端数据库存储在一对MySQL集群(主动/被动)上。有几个客户使用我们的应用程序,每个客户都有一个单独的MySQL数据库。
目前,我们有应用程序的X个副本(X是客户端数量)。每个副本之间的区别只是database.yml。由于我们使用ramdisks,“磁盘”空间很昂贵,我认为必须有更好的方法来解决这个问题。
理想情况下,我希望能够在Apache虚拟主机中指定database.yml,但在我当前的设置中看起来不可行。 database.yml将附加到访问的域名。如果有办法做到这一点,那真的很棒。
另一种方法是制作大量符号链接,而不是存储应用程序的副本。我想这听起来不太糟糕,但我真的不喜欢这个解决方案。
你会如何处理这个问题并解决它?
如果您需要更多信息,请询问,我很乐意回答。我不太确定这是属于SF还是SO,但对我来说闻起来更多。
答案 0 :(得分:2)
正如Mladen所说,你可以使用RailsEnv。它几乎是您问题的理想解决方案,它的目的是以这种方式使用。只是不要忘记为每个env设置不同的PassengerAppGroupName值,因为Phusion Passenger通常仅基于其路径唯一地标识应用程序。另外不要忘记制作config / initializers / [env name] .rb文件。
答案 1 :(得分:0)
也许您可以使用相同的database.yml
,但使用不同的环境?您应该能够使用virtualhost设置中的不同RailsEnv
参数设置不同的Rails环境。