2

问题:我正在尝试使用最新的 httpd、apr 和 apr-util 源编译 Apache Web 服务器,并启用 LDAP 支持。我当前的步骤似乎没有编译 mod_ldap.so 和 mod_authnz_ldap.so。

环境背景:构建和目标操作系统是RHEL5。服务器(2.4.1)上已经有一个未启用 LDAP 的 httpd 实例,并且已经安装了 SVN 1.7.3 并且可以匿名使用 httpd-2.4.1

重现步骤:按照我下载的编译说明

  • /path/apache/src/httpd-2.4.4 中的 httpd-2.4.4
  • /path/apache/src/apr-1.4.6 中的 apr 1.4.6
  • apr-utils 1.5.2 /path/apache/src/apr-util-1.5.2
  • /path/openldap-2.4.35_src 和 /path/db-5.3.21_src 中的 OpenLDAP 和 Berkley DB(用于构建 apr-util 的 LDAP 库)

有了源代码,我: 编译 BDB 并将其安装到 /path/db-5.3.21 使用已安装的 BDB 编译 OpenLDAP 并将其安装在 /path/openldap-2.4.35 配置 apr 中,编译并将其安装在 /path /apache/apr 将 apr-util 配置为:

./configure --with-ldap --prefix=/path/apache/apr-util-1.5.2 --with-apr=/path/apache/apr-1.4.6 --with-ldap-lib=/path/openldap-2.4.35/lib --with-ldap-include=/path/openldap-2.4.35/include

make之后,我使用and构建和安装make install

最后,我使用以下内容配置了 httpd:

   ./configure --prefix=/path/apache/httpd-2.4.4 --with-apr=/path/apache/apr-1.4.6 --with-apr-util=/path/apache/apr-util-1.5.2 --with-pcre=/path/apache/pcre-8.30 --with-ldap --enable-ldap

这是成功的,我能够运行make并且make install

我现在在 /path/apache/httpd-2.4.4/ 中有一个 httpd 实例。使用 /path/httpd-2.4.1/httpd.conf 作为模型,我匹配现有的配置和加载的模块,添加:

LoadModule mod_ldap modules/mod_ldap.so LoadModule mod_authnz_ldap modules/mod_authnz_ldap.so

但是,如果我运行 apachectl start 我会收到语法错误:

/path/apache/httpd-2.4.4> ./bin/apachectl start httpd: Syntax error on line 148 of /path/apache/httpd-2.4.4/conf/httpd.conf: Can't locate API module structure 'mod_ldap' in file /path/apache/httpd-2.4.4/modules/mod_ldap.so: /path/apache/httpd-2.4.4/modules/mod_ldap.so: undefined symbol: mod_ldap

在 httpd-2.4.4/modules 目录中查看,模块 mod_ldap.so 和 mod_authnz.ldap.so 缺失。我已经尝试了上述步骤但没有成功。我发现在 src/httpd-2.4.4 目录中,文件 ./modules/aaa/.libs/mod_authnz_ldap.so 和 ./modules/ldap/.libs/mod_ldap.so 存在,但是将它们复制到 httpd -2.4.4/modules 不能缓解这个问题。

有人可以帮助我诊断步骤中的错误吗?我知道我错过了一些东西,但到目前为止我一直无法找到它。如果需要,我还将添加任何其他必需的信息。

4

1 回答 1

1

如上所述,LDAP 是通过一个共享模块来支持的。要启用定义的模块(在我的例子中包括 LDAP),您需要使用 --enable-so 标志配置 apache。这将生成共享模块并在编译/安装时将它们放在模块目录中。

其他参考可以在这篇 SO 文章中找到: Compiling Apache Web Server with Dynamic Module Support

于 2013-05-17T15:11:36.697 回答