【问题标题】:How do I use a vendor Apache with a self-compiled Perl and mod_perl?如何使用带有自编译 Perl 和 mod_perl 的供应商 Apache?
【发布时间】:2010-09-09 22:03:42
【问题描述】:

我想使用 Apple 或 RedHat 的内置 Apache,但我想使用 Perl 5.10 和 mod_perl。实现这一目标的最少侵入方式是什么?我想要为供应商的 Apache、dav、php 等提供免费安全补丁的优势,但我非常关心我使用的 Perl 版本以及我的 @INC 路径中的内容。我不介意自己编译 mod_perl。

【问题讨论】:

    标签: perl apache mod-perl


    【解决方案1】:
    1. 按照 mod_perl 文档中的任何特殊说明构建您的 Perl 5.10 版本。告诉 Perl 配置器安装在一些非标准的地方,比如 /usr/local/perl/5.10.0

    2. 使用说明针对您的发行版的 Apache 构建一个共享库(或动态或 .so)mod_perl,但请确保您使用 您的版本的 perl 运行 Makefile.PL:

      /usr/local/perl/5.10.0/bin/perl Makefile.PL APXS=/usr/bin/apxs

    3. 像往常一样安装和配置 mod_perl。

    在第一步之后,更改路径可能会有所帮助,这样您就不会意外地混淆您正在使用的 Perl 版本:

    export PATH=/usr/local/perl/5.10.0/bin:$PATH
    

    【讨论】:

    • 但我不想将我的 mod_perl 安装在供应商的 mod_perl 之上...如何告诉 Apache 使用我的?可能是 mod_so,正如另一位评论者所建议的那样?
    • apxs 有一个选项只允许您构建。然后,您可以将 mod_perl.so 移动到某处,并在 LoadModule 行中使用完整路径引用它。您可能还想通过 Makefile.PL 一个 PREFIX 参数来安装 Apache:: 和/或 ModPerl:: perl 模块在某个非标准的地方。
    【解决方案2】:

    你会想看看mod_so

    【讨论】:

    • 我认为这没有抓住重点。编译你自己的 mod_perl 并安装它很容易。很难以可维护、可扩展的方式做到这一点。
    • 我不确定我是否理解。你是说我应该在某个地方构建自己的 mod_perl.so,然后让 Apache 通过“LoadModule perl_module /some/absolute/path/mod_perl.so”加载 那个 版本的 mod_perl?
    【解决方案3】:

    我以前做过。它不是很漂亮,但它很有效,尤其是因为供应商 perl 通常有 2-3 年的历史。

    我开始制作自己的 perl RPM,将 perl 安装到不同的位置,例如 /opt/。这很简单。我主要是从这个开始的,因为我不希望使用 perl 的系统实用程序在我升级/安装新模块时中断。我不得不修改我的所有脚本以在顶部指定 #!/opt/bin/perl,有时我什至使用路径来确保我的 perl 排在第一位。

    接下来,我获取了一个 mod_perl 源 RPM,并将其修改为使用我的 /opt/bin/perl 而不是 /usr/bin/perl。我无法访问我所做的更改,因为它是在不同的演出中。我花了一点时间才得到它。

    它确实有效,但我不是 RPM 向导,所以依赖性检查效果不佳。例如,我可以卸载我的自定义 RPM 并破坏一切。这对我来说没什么大不了的,所以我继续前进。

    我还将 RPM 与模块的 CPAN 安装混合在一起(我是否提到我们使用自己的代码构建了自己的自定义 CPAN 镜像?)。这也有点脆弱。同样,我没有资源(即时间)来弄清楚如何让cpan2rpm 使用我的 perl 而不会导致 RPM 冲突。

    如果我要重新做一遍,我会制作一个自定义的 5.10 perl RPM,然后替换系统 perl。然后我会使用cpan2rpm 来创建我的软件所需的 RPM 包并编译我自己的 mod_perl RPM。

    【讨论】:

      猜你喜欢
      • 2020-08-13
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 2021-04-27
      • 1970-01-01
      相关资源
      最近更新 更多