问题:我正在尝试使用最新的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我已下载:
有了这些资源,我: 编译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
和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不能解决问题。
有人可以协助我诊断我的步骤中的错误吗?我知道我错过了什么,但到目前为止我一直无法找到它。如果需要,我还会添加任何其他所需信息。
答案 0 :(得分:1)
如上所述,LDAP通过共享模块得到支持。要启用定义的模块(在我的情况下包括LDAP),您需要使用--enable-so标志配置apache。这将生成共享模块,并在编译/安装时将它们放在modules目录中。
可在此SO文章中找到其他参考:Compiling Apache Web Server with Dynamic Module Support