问题:我正在尝试使用最新的 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 不能缓解这个问题。
有人可以帮助我诊断步骤中的错误吗?我知道我错过了一些东西,但到目前为止我一直无法找到它。如果需要,我还将添加任何其他必需的信息。