生产服务器上新鲜和安全的PHP软件包之间的妥协?

我有一些运行Centos的生产服务器。 我的应用程序需要一个相当新的PHP版本(> 5.2,IIRC)。 Centos用户目前可以使用的选项有:

  1. 官方的,主stream的centos5 / redhat软件包。
    • 优点:最稳定,最安全,易于安装 – redhat定期发布安全更新和build议。
    • 缺点:包是旧的(5.1.6?)
  2. 第三方存储库(如Remi Collet的回购)
    • 优点:出血边缘,易于安装
    • Con:不可靠 – 我们曾经使用过uterramblings存储库…但是这个家伙已经完全MIA了一年多了。 我不想再那么高高地干起来。
    • 骗子:不安全或稳定
  3. 使用CentOStesting库
    • 优点:相当新的版本,易于安装
    • 缺点:不稳定。 他们并不称之为“testing”。 不适合生产服务器
  4. 从源代码构build(php.net)
    • 优点:出血的边缘
    • 缺点:劳动密集,不安全,不稳定

其他选项:

  1. Redhat提供了包含最近版本的Redhat应用程序堆栈 ,但不存在相同的centos。
    • 这些软件包的CentOS版本是否有任何理由不存在? 来源必须可用,对吗?
    • 来源必须可用,对吗? 自己打造centos软件包有多困难?
  2. 其他的Linux发行版
    1. Debian在稳定性上可与redhat相媲美,但提供了旧的软件包
    2. Ubuntu提供更新鲜但不太稳定/安全的软件包
    3. 其他?

所以,最后,我的问题是:是否有稳定,安全,定期更新的PHP软件包或源代码(适用于任何Linux发行版)的好源? 你从哪里得到你的源代码/二进制文件?

只是为了突出Debian方面:

以前的Debian发行版 – Etch(2007年4月8日),带有PHP 5.2.0。

目前的Debian版本 – Lenny(2009年2月14日) – 带有PHP 5.2.6。

如果在发行周期中应该对软件包进行重大更新,那么通常可以在backports.org上获得这些版本, 前提是他们有明显的用户群。 可以在这里find可用于Lenny的backported软件包的完整列表。 由于上个版本只有几个月的时间,所以这个列表目前相对较短。

要在Debian中查看PHP和其他软件包的特定版本,可以使用packages.debian.org 。

我build立了自己的RPMs,因为我不相信第三方维护者留在地球上。

这有点痛苦(尽pipe我只是build立了一些软件包),但是我知道当我完成的时候我会得到什么。 我使用来自上游(RHEL / CentOS)的规格文件,但是我会根据需要对它们进行修改以适应我的需要,并在我要查找的任何版本的源代码中进行修改(必要时修改上游的修补程序)。

这也有助于我的工作stream程不在生产系统上安装编译器,因为我可以将自定义的二进制文件发送给他们。 我也这样做,当我“卡住”运行一个较旧的操作系统(没有预算升级等)时,为较旧的操作系统提供更新的软件包的backports。

如果你能掌握SRPMS,build立一个软件包并不难。 (这主要是为一个给定的包构build环境,这可能是一个痛苦)。从无到有(也就是自己写规范)构build一个RPM是一个很好的练习,尽pipe你应该先阅读一些“专业的”spec spec文件,感觉它。

我不能真正回答你的问题,但是我要做的是使用官方的源代码版本,然后在开发环境中进行编译。

然后,我使用dpkg工具(我正在使用debian)从它做一个包,但是应该有类似的方式来做一个像RedHat OS一样的包。

然后,你只需要在你的服务器上传播它。

我们让一个虚拟机运行来构build分发版本库不可用的软件包。 当你使用发行版时,这是一个常见的问题。 解决scheme通常是自己构build它们,并随时了解安全build议和泄漏这些软件包。 供应商分发的安全补丁通常首先通过安全列表提供,然后由供应商进行testing和集成并发布。

坦率地说,只要你用gpg-key检查你的代码(然后用你自己的密钥签名你的包),你将会像发行版的代码一样安全。 你只需要跟上date,这不是不安全的,这只是劳动。 如果你需要这些function,那么这是由你来完成的。 否则,你可以找一个没有中央服务器或者官方build立服务( 咳嗽 OpenSuSE)的后端问题的发行版,或者从更新更频繁的供应商处购买许可证。 你可以工作,或者你可以付钱。 你的select,但“啤酒”中只有这么多的“免费”…

和一些肮脏的旧灰色毛发一起出去玩吧,这些灰色毛发将告诉你,当所有东西都是从源代码编译的时候,保持一个盒子的劳动密集程度。 ;)

其他select值得考虑