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

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

我找不到明确的答案/方法。如其他地方所见,apache 下的 Passenger 和 RoR 占用了我的 VPS 上的内存。

我尝试了大量的堆栈和实现,目前依赖于次优的 apache/cgi/rails 配置,它将我的 RAM 使用率换成了 CPU 时间并且对请求的响应很慢。

有人能推荐一种在 ubuntu 10.04 服务器中设置 rails 应用程序的有效且最好易于管理的方法吗?

答案1

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

  1. 安装线程 Apache 和 apr 并分类 Apache dev libs。
  2. 创建部署用户然后安装右心室在部署用户主目录中
  3. 现在通过 rvm 安装 REE 1.8.7 或 Ruby 1.9.2。两者使用的内存都比标准 1.8.7 少,您必须根据哪个最适合您的应用程序来选择。
  4. 现在删除 Ubuntu mod_passenger 软件包,并通过您的部署用户使用 RVM 和您想要使用的 ruby​​ 安装 Passenger 作为 gem。确保您也使用 RVM 构建 Passenger 二进制文件。确保您也为系统安装了正确的 Passenger,即 2.x 或 3.x
  5. 创建 /etc/apache2/mods-available/passenger2.conf 或 airline3.conf 以及匹配的 airline.load,这样它们就不会与 mod_passenger 包使用的 airline.conf 冲突。确保正确复制了 Passenger 构建的输出,并确保您为 Passenger 版本正确指定了 RVM 路径,这将略微取决于版本 2.x 或 3.x。

就目前而言,您应该尝试运行您的应用程序并确保它正常工作。一旦网站正常加载,您就可以开始调整 Passenger 配置。我使用的配置如下所示。

# 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

我的配置尝试始终保持一个活动实例,并通过不关闭生成器来使用更多内存。您希望使用很少的内存,但您不想等待 15-30 秒来处理请求,因为所有 Rack 进程都已关闭。对于您的情况,我会尝试以下类似操作。

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

如果一切看起来都很好,您可以开始降低设置并看看它如何发挥作用。

相关内容