mod_ldap和mod_authnz_ldap没有为Apache httpd 2.4.4和SVN构建

时间:2013-05-13 21:00:55

标签: apache

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

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

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

  • httpd-2.4.4 in /path/apache/src/httpd-2.4.4
  • apr 1.4.6 in /path/apache/src/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

之后,我使用makemake 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

这是成功的,我能够运行makemake 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不能解决问题。

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

1 个答案:

答案 0 :(得分:1)

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

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