我是 Gentoo 的长期用户,无论是在桌面还是在服务器上。作为一名软件工程师,我喜欢它的灵活性和可定制性(以及它处于前沿和滚动发布的事实)。但对于我的新服务器,我想使用不同的发行版。主要是因为在虚拟服务器上编译所有内容会造成阻碍,但也因为 Gentoo 过于前沿,有时更新应该经过(更)适当的测试和延迟。
(附注:多年来,我已经成功部署/维护了多个 Gentoo 盒,大多数时候,事情都进行得很顺利,而且这些盒都很棒。)
因此,我想根据经验(而非意见)向社区寻求建议,哪种分布最符合以下标准:
一般的
- 滚动发布或非常好的(可靠的)就地升级路径
- 既不是完全过时的,也不是绝对前沿的软件包存储库
- Python 2.7 / 3.3(系统将主要部署python / django应用程序)
- 最新的 gcc (>= 4.7)
- 维护良好、良好的社区
- 灵活且可定制
- 应该可以同时安装不同的 gcc 或 python 版本
安全
- 已签名的(或以其他方式保护的)软件包存储库
- 合理/安全的编译器标志(针对安全性而非性能而定制)
- 及时的安全更新和专门的安全团队/公告列表
我立即想到的是CentOS和Debian但不幸的是,就包装而言,二者都已经过时了。
我关注的是Ubuntu但是他们官方支持的软件(主要/受限存储库)与 Universe 或其他发行版相比相当小。我也不太确定他们维护官方软件包的情况(就安全修复而言),而且在做出影响用户的决定时,我不太喜欢他们的企业(=封闭)心态。附注:我最近为一位朋友安装了 12.10 桌面版,但印象并不深刻。
ArchLinux接近Gentoo,减去软件包编译,在我看来。我自己还没有尝试过,但立即引人注目的(在我看来是负面的)是相当小的核心团队和缺少安全团队。似乎没有专门的安全列表,他们最近才集成了软件包签名(我不知道这是否是强制性的)。此外,有相当多的软件包仅通过 AUR 或其他方式获得支持。关于这一点,我没什么可说的。
OpenSuSE也是我关注的东西,但老实说,我上次尝试 SuSE 是在内核 1.x 时代(那时我还是个年轻的极客 :P)。所以我对它的现状几乎一无所知。
Fedora说实话,这也是我考虑过的事情。它通常维护得很好,并且(如果不是推迟几个月的话)有一个很好的发布时间表。另一方面,我读过很多关于 Fedora 18 的坏话,尤其是关于升级路径的坏话。而且它绝对是非常前沿的。
在这篇相当长的文章里我没有太多可以补充的,除了感谢您阅读这篇文章并花时间阅读。:-)
更新时间:2024UTC
我觉得我需要更新我的问题。尽管我完全同意给出的答案,但它们并不是我真正想要的。因此,以下几点希望能澄清我的情况:
我已经维护服务器十多年了,所以(至少目前)我还没有考虑雇人来帮助我或减轻负担。
我熟悉 Linux。它已经成为我 15 多年来的主要系统。作为一名软件工程师和极客,我不会放弃它。:)
我一直在寻求基于使用上述不同发行版的经验的建议。我知道我可以在虚拟机中安装所有这些发行版(最终我会为候选名单上的发行版安装它们),但即使我认为发行版 xy 很棒,但它并不能说明它的维护有多好,例如。或者一旦有新版本发布,道路有多坎坷。只有时间才能证明。而诸如此类的事情,我正在寻找。一周的简单测试运行无法显示的经验。基于经验的建议只有长期使用发行版才能获得。
我还必须强调的是,上面原始帖子中的列表几乎总结了对我来说重要的事情。
答案1
Server Fault 无法为您选择操作系统——您需要自己做出选择。
您应该考虑的诸多事项大致如下:
应用程序供应商支持
您需要的软件是否可以在相关发行版上运行内部(或区域可用)知识库
您是否有熟悉相关发行版的系统管理员?
如果没有,您能否以合理的价格在当地雇佣他们?操作系统供应商支持
发行版是否得到其供应商的良好支持?
您是否能获得适当的支持合同(以合理的成本)?
是否有适当的沟通渠道(security@ 等)?管理功能
如何让多个系统使用相同的软件包保持“同步”?
如何管理/更新多个系统而无需手动接触每个系统?
请记住,“当前”和“稳定”通常是互相排斥的要求:使其
软件包保持在最前沿或接近最前沿的发行版必然会有更频繁的更新,更有可能发布破坏您的环境的更新,并且可能出现安全问题。
在评估操作系统供应商时,您应该寻找提供“合理最新”版本软件的供应商(即,任何提供 Apache 1.x 的软件都应该被排除在外,任何提供已知安全漏洞的软件的软件也应该被排除在外,除非他们正在应用本地补丁),但除非您特别需要某个软件包的最新版本,否则您应该对操作系统供应商提供的产品感到满意,只要它能满足您的需求。
诚实地问自己:“如果我使用 Perl 5.12 而不是 5.14,这会影响我的日常操作吗?”,除非答案是“是的,我需要 5.14,因为X
。”否则不要担心。
请记住,你不是必需的使用任何程序的系统版本 - 只要您愿意承担责任,您始终可以安装和维护自己的版本。这就是 Puppet 等管理工具开始发挥作用的地方。
如果您不熟悉各种发行版及其当前的功能集,您应该花几个小时使用 VirtualBox 或类似的桌面虚拟化软件,并在缩小范围后对每个发行版进行评估。
确定您最容易维护的发行版,因为您可能会管理它好几年。
答案2
我在生产环境中使用过 Gentoo、SuSE 和 Fedora...我通常更喜欢 RHEL 或 CentOS,但上述每个分布都是在有限的容量下需要的非常具体特征。
Gentoo 很难扩展……可以做到,但不是“它就是有效”分布。您已承认这一点。
SuSE 在我的地区不占据市场主导地位,因此这可能会成为招聘和寻找专业知识的潜在障碍。
Red Hat 和 CentOS 工程师对 Fedora 已经足够熟悉,因此仍然有用(拥有更多可以管理它的人才)。问题在于版本之间的升级路径……这会影响 Fedora 以及RHEL/CentOS。
但是,如果你正确地做到这一点(DevOps这种方式),您将不会运行完整的就地升级。系统和应用程序部署应自动化且可重复,直到您重新部署到重建的服务器上,而不是尝试操作系统升级。