Linux 中是否存在一些对于托管 Ruby on Rails 至关重要的功能?

Linux 中是否存在一些对于托管 Ruby on Rails 至关重要的功能?

我正在进行一个项目,我们将在我们拥有的 Linux 服务器上托管一个 Ruby on Rails 应用程序。所有版本的 Linux 是否都能够同样地托管 Rails 应用程序?如果不是,那么哪些功能在某些 Linux 发行版中存在,而在其他发行版中不存在,这些功能对于托管 Rails 应用程序至关重要?

答案1

您应该使用您最熟悉的发行版。

我能想到的唯一真正重要的问题是如果你计划使用操作系统提供的 Ruby、rails 等版本,哪个发行版会“更好”。没有什么可以阻止你在任何发行版上构建自己的版本,但这可能会给你带来更多的麻烦。

RHEL / CentOS 不会在发布版本时持续更新。这可能是件好事,因为它应该可以消除升级操作系统时的兼容性问题。这可能是件坏事,因为您可能需要在更高版本中添加的功能。您可以通过添加具有较新版本的附加存储库来避免此问题。

我不是 Debian 的粉丝,所以我不能透露任何细节,但我认为 Debian 通常会提供较新的版本。这可能是一件好事,因为您不必四处寻找最近添加的功能。这可能是一件坏事,因为您可能会安装更新并破坏您的应用程序。

但实际上最好的答案是使用您最舒服的方式。

答案2

所有 Unix 变体都“同样有能力”承载 Ruby/Rails —— 至少从 Ruby、Rails 框架和大量 gem 都可以在它们上运行的角度来看是这样。因此从这个意义上来说,“使用您和您的团队最熟悉的操作系统”是正确的答案。

一些东西亲自在操作系统中寻找——

  1. Ruby 是否随操作系统一起提供(或者在端口等中可用)并且是相当新的?
    如今,所有新事物都需要 Ruby 1.9.x,因此,如果操作系统只提供 Ruby 1.8,我就会将其弃之不用。是的,我可以手动安装它,但是我已经有足够多的工作来构建一个稳定的环境了——为什么我要接受更多的工作来维护我自己的 Ruby 包?

  2. Ruby 支持包 ( rvm、gems 等) 是否合理新?
    与 (1) 的逻辑相同——我希望能够尽可能多地使用操作系统的包管理,但如果我必须覆盖包管理器并手动安装我要用到的每一颗宝石- 好吧,我可以接受,但这让事情变得更加困难。

  3. 操作系统本身是否适合我的目标?
    这是一个模糊的问题——确定操作系统是否“合适”的最佳方法是在工作负载测试/基准测试中击败它
    在这里你会发现 FooOS 有可怕多线程性能,而 BarOS 有一个磁盘子系统,它要求系统上的所有其他操作在线程想要写出数据时停止,所以 BazOS(在这两方面表现平平)实际上具有更好的性能,因为你的应用程序是多线程的写入密集型。
    如果您只查看“Linux”,则此处的差异可以忽略不计(或通过转动sysctl旋钮“可修复”)。如果您将操作系统搜索范围扩大到包括其他系统(BSD、OS X、Solaris、AIX、HP-UX、Windows),您可能会开始看到性能特征或负载能力的一些实际变化。

    这里也有一些非技术方面的考虑。如果你有两个假设系统可供选择,一个是免费的操作系统,另一个是付费许可系统,后者速度快两倍,但每个 CPU 核心的许可费用为 5000 美元,那么就选择免费的。你的双处理器四核服务器将花费你 40,000 美元的许可费,即使我们在硬件方面犯了错误,运行免费操作系统的服务器也会多得多。即使你为电力和冷却付费,从单位成本性能指标来看,谁赢谁赢也是一目了然的……

  4. 我们可以管理操作系统吗?
    该操作系统是否有工具可供您管理(或者它是否能与您已经使用/知道如何使用/想要使用的工具(如 Puppet 和 Chef)很好地配合使用)?
    您的团队是否足够熟悉该操作系统以管理它?您是否能够处理下一次主要版本升级,还是会惊慌失措,只是停滞在部署当天安装的任何内容上,当您想要的新功能缺失时,您会永远感到沮丧?

相关内容