我正在一个项目中,我们要在我们拥有的Linux服务器上托pipe一个Ruby on Rails应用程序。 Linux的所有风格同样能够托pipeRails应用程序吗? 如果没有,那么在一些Linux发行版中有什么function,但是对于托pipeRails应用程序而言是不可或缺的function呢?
你应该使用你最舒服的分配。
如果你打算使用操作系统提供的Ruby,rails等版本,我唯一能想到的就是哪个发行版本更好,那么真的很重要。没有什么能阻止你构build自己的在任何发行版本上,但这可能比它更值得您的麻烦。
RHEL / CentOS在发布时不会保留更新版本。 这可能是件好事,因为在升级操作系统时应该消除兼容性问题。 这可能是一件坏事,因为您可能需要在较新版本中添加的function。 您可以通过添加具有较新版本的附加存储库来解决此问题。
我不是一个Debian的人,所以我不能说任何具体的,但我的印象是Debian通常提供更新的版本。 这可能是一件好事,因为您不必四处search最近添加的function。 这可能是一件坏事,因为您可能会安装更新并破坏您的应用程序。
但最好的答案是使用任何你最舒服的方式。
所有的Unix变体都能“托pipeRuby / Rails”,至less在Ruby,Rails框架以及大量的gem都可以运行的情况下。 所以从这个意义上说,“使用你和你的团队最适合的操作系统”是正确的答案。
我个人在操作系统中寻找的一些东西 –
是否随操作系统(或在端口等可用)运行的Ruby是合理的?
现在所有的新版本都需要Ruby 1.9.x,所以如果一个操作系统只运行Ruby 1.8,我会把它踢到路边。 是的,我可以手工安装它,但是我有足够的工作来build立一个稳定的环境 – 为什么我会接受更多维护自己的Ruby包的工作?
Ruby支持包( rvm ,gems等)是否合理?
与(1)相同的逻辑 – 我希望能够尽可能地使用操作系统的包pipe理,但是如果我必须重写包pipe理器并手动安装每一个我将要使用的gem – 那么我可以生活在那里,但它使事情变得更加困难。
操作系统本身是否适合我的目标?
这是一个模糊的问题 – 确定操作系统是否“合适”的最好方法是在工作量testing/基准testing中打败其中的生活日光 。
这是你发现FooOS具有可怕的multithreading性能的地方,而BarOS有一个磁盘子系统,要求系统上的每一个其他操作只要一个线程想要写入数据就停止,所以BazOS(这两者确实是平庸的)实际上有更好的性能,因为您的应用程序是multithreading和写密集型的。
如果你只是在看“Linux”,那么这里的差异就可以忽略不计(或者通过转换sysctl旋钮来“修复”)。 如果将操作系统search扩展到包含其他系统(BSD,OS X,Solaris,AIX,HP-UX,Windows),则可能会看到性能特征或负载容量方面的实际变化。
这里也有一些非技术性的考虑。 如果您可以在两个假设的系统之间进行select,一个是免费的操作系统,另一个是支付许可证系统,速度是原来的两倍,但每个CPU核心需要花费5000美元才能获得许可证。 你的双核心四核服务器将花费40,000美元的授权费用,即使我们在昂贵的硬件方面犯了错误,但是很多服务器运行的是免费的操作系统。 即使你支付了电力和制冷费用,也很清楚谁以每单位成本衡量指标获胜?
我们可以pipe理操作系统吗?
操作系统是否有可以让你pipe理它的工具(或者你已经使用/知道如何使用/想要使用的工具,比如Puppet和Chef)可以很好地工作?
你的团队是否足够舒适的操作系统来pipe理它? 你将能够处理下一个主要的版本升级,或者你会恐慌,只停留在你部署的那一天安装的任何东西,并且当你想要的新function缺失时永远感到沮丧?