在混合(与PHP和其他Ruby应用)环境中部署多个Rails应用程序


Deploying several Rails apps on a mixed (with PHP and other Ruby apps) environment

我有一个Linode (Ubuntu 9.10,但升级不是问题),在那里我运行了一些PHP应用程序,并运行了一个Sinatra和Rails 2应用程序。我试着部署一些新的Rails(3)应用程序,但这样做,几乎破坏了所有的东西:)。

我的要求很简单:

  • PHP应用程序把"LAMP"作为一个要求,即使它运行在一个不同的端口上,那么:80,在一些代理后面是好的。
  • 我想运行几个Rails3和Rails2应用程序。
  • 我需要在这些应用中使用不同版本的gems。

  • 额外的服务,如SOLR, MongoDB, MySQL和Resque已经安装并运行,所以目前不是问题,但仍然是一个要求。

之前,我只有一个Rails应用程序和一个简单的Sinatra应用程序后面的Phusion Passenger,宝石是全球安装。在引入Rails 3应用程序时,会出现gem-version冲突,所以我安装了RVM,但这严重破坏了现有的应用程序。

我遇到的一个问题的例子:现有的应用程序,是轨道,它所有的宝石都打包在vendor/gems中,其中一些在rubygems.org上不可用。我无法让RVM认出这些宝石。我一直从一个问题(RVM不识别供应商/gems, rake gems:安装不安装,Rails和rubygems版本之间的冲突等)运行到其他问题。我不是在为这个问题的每一个问题寻求解决方案。

新的Rails 3应用程序更喜欢Ruby 1.9,而Passenger是在Ruby 1.8.7的基础上安装的。我已经设法降级了这些Rails3应用程序,所以它们可以在1.8.7上工作,但是一个允许我使用任何最适合应用程序的ruby版本的解决方案对我来说是更合适的。

你如何设置这样的服务器?您会首先设置这样一个服务器吗?是否有可负担得起的商业解决方案?或者我应该为每个应用寻找一个VM之类的解决方案?关于负载和使用:这主要是个人和示范使用:所以每个应用程序必须提供最多800页浏览量/天:非常,非常低的使用率(实际部署的大量使用的应用程序和客户端项目是在专用服务器上完成的)。

对于Rails 2/3:不是一个容易的任务,但可以完成:http://jeremy.wordpress.com/2010/08/19/ruby-rvm-passenger-rails-bundler-in-development/只要确保您使用的是最新的rvm, passenger。

对于PHP和Rails,我使用nginx与乘客,它工作得很好。我有一个默认的nginx php配置和默认的Rails乘客添加设置。