在Ubuntu 10.04上,推荐的RoR堆栈是什么?

我找不到明确的答案/方法。 正如其他地方所见,apache下的乘客和RoR吞噬了我的VPS。

我已经尝试了大量的堆栈和实现,目前搁置在最佳的apache / cgi / railsconfiguration上,这已经改变了我的内存使用CPU时间和缓慢的请求响应。

任何人都可以推荐一个有效的,最好是简单的pipe理方法在Ubuntu 10.04服务器设置rails应用程序?

这是我一直在使用的方法。

  1. 安装线程化的Apache和apr并分配Apache开发库。
  2. 创build一个部署用户,然后在部署用户homedir中安装RVM
  3. 现在通过rvm安装REE 1.8.7或者Ruby 1.9.2。 两者都使用比标准1.8.7更less的内存,您将不得不select哪一个最适合您的应用程序。
  4. 现在删除Ubuntu mod_passenger包,并通过您的部署用户使用RVM和您要使用的ruby来安装Passenger。 确保你使用RVM来构buildPassenger二进制文件。 确保你正在为系统安装正确的乘客,这是2.x或3.x
  5. 创build/etc/apache2/mods-available/passenger2.conf或者passenger3.conf以及匹配的passenger.load,这样它们就不会和mod_passenger包使用的passenger.conf冲突。 确保你复制build筑物乘客正确的输出,并确保你正确地为您的Passenger版本指定RVMpath,这将非常轻微地取决于2.x或3.x版本。

至于事情,你应该尝试运行你的应用程序,并确保它的工作。 一旦你的网站正常加载,你现在可以开始调整你的Passengerconfiguration。 我使用的configuration如下所示。

# rvm and passenger paths PassengerRoot /home/deploy/.rvm/gems/ruby-1.9.2-p136/gems/passenger-3.0.2 PassengerRuby /home/deploy/.rvm/wrappers/ruby-1.9.2-p136/ruby # set max instances PassengerMaxPoolSize 6 # Always have one instance running PassengerMinInstances 1 # recyle an instance after 10k requests PassengerMaxRequests 10000 # check tmp for restarts one request per 10 secs rather than every request PassengerStatThrottleRate 10 # don't shutdown any of the spawners RailsFrameworkSpawnerIdleTime 0 RailsAppSpawnerIdleTime 0 

我的configuration试图始终保持一个活动的实例,并通过不closuresspawners来使用更多的内存。 您希望使用非常小的内存,但是您不希望等待15-30秒来处理请求,因为所有Rack进程都已closures。 我会在你的情况下尝试下面的内容。

 PassengerMaxPoolSize 2 PassengerMinInstances 1 PassengerPoolIdleTime 3600 RailsFrameworkSpawnerIdleTime 1800 RailsAppSpawnerIdleTime 600 PassengerStatThrottleRate 10 

如果事情看起来不错,你可以开始降低设置,看看它是如何工作的。