phpLDAPadmin 安装配置讲解,通过 Web 端来管理您的 LDAP 服务器

来源:互联网 发布:unity3d手机赛车游戏 编辑:程序博客网 时间:2024/05/23 01:12

做企业应用的也不时要与 LDAP 打交道的,例如组织架构、人员的管理,权限的分级控制等。以前管理 LDAP 都是用客户端工具 LDAP Browser 什么的,有时不甚方便。幸运的是,网上有一个现成的、功能完备的 LDAP Web 管理工具,那就是赫赫有名的 phpMyAdmin 的姊妹 phpLDAPadmin。

Web 方式的 phpLDAPadmin 利于发布,随处使用,基本上它有 LDAP Browser 客户端工具的所有功能,诸如条目管理、属性管理、导入导出、条件搜索等。还有比 LDAP Browser 所没有的 Schema 信息明细展示功能。

phpLDAPadmin 的界面截图请见:http://phpldapadmin.sourceforge.net/screenshots.php
您也可以进到 phpLDAPadmin 的 Demo 站点:http://thesmithfam.org/phpldapadmin-demo/htdocs/index.php 先睹为快。

本篇就来介绍 phpLDAPadmin 的安装及体验,读者最好是对 Apache、PHP、LDAP 有一定的了解。因未涉及非常具体的安装细节,只拣关键之处说明,所以如若对以上几个太过陌生的,可能中间稍有差池就要费些思量了。

一:软件准备

1. Apache HTTP Server,版本可选择 1.x 或 2.x,到 http://httpd.apache.org/ 下载。本文测试用的是 Apache 1.3.28。我偷了一下懒,直接用了安装 WAS 5.1 装上的 IBM HTTP Server。

2. OpenLDAP for Windows,文中版本是 2.2.29,可从 http://download.bergmans.us/openldap/openldap-2.2.29/openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32_Setup.exe 下载。当然你也可以选择其他的版本。

3. PHP 5,本文所用版本为 5.2.6,从 http://cn.php.net/distributions/php-5.2.6-Win32.zip 下载。因为这里的 phpLDAPadmin-1.1.0.5 要求是 PHP 5。

4. phpLDAPadmin,目前版本是 1.1.0.5,不过本文仍使用 1.1.0 版本,因为 1.1.0.5 我使用中有些问题,可从 http://nchc.dl.sourceforge.net/sourceforge/phpldapadmin/phpldapadmin-1.1.0.zip 下载。

二:软件安装

1. Apache 的安装

这个东西的安装、启动和停止就不多说了,用 %APACHE_HOME% 表示 Apache 的安装目录。

2. OpenLDAP 的安装配置

请参考之前写过的一篇日志:Windows下安装使用openldap当然,你也可以藉此连接到一个已有的 LDAP 服务器,那么这一步就可以直接跳过。

只是我们将使用 OpenLDAP Samples(http://www.zytrax.com/books/ldap/ch5/index.html) 中的目录结构。所以与前面不同的是要把 OpenLDAP 安装目录下的 slapd.conf 中的 suffix、rootdn 和 rootpw 分别改为如下:
       
        suffix "dc=example,dc=com"
        rootdn "cn=jimbob,dc=example,dc=com"
        rootpw dirtysecret 


然后拷贝下面文本框中的内容保存为 example.ldif  文件,比如放在 C 盘根目录下。


接着在 slapd -d 1 启动了 OpenLDAP 后,再用命令

ldapadd -x -D "cn=jimbob,dc=example,dc=com" -w dirtysecret -f c:/example.ldif

导入到 OpenLDAP 中。导入后 LDAP 的目录结构如下图所示:

LdapBrowserSample.jpg

3. PHP 的配置

下载的 PHP 解压到某个目录下,用 %PHP_HOME% 表示这个目录。

关于 PHP 与 Apache 的结合,参考 %PHP_HOME% 目录下的 install.txt 文件。简单说就是:

    1) 修改 %APACHE_HOME%/conf/httpd.conf  文件,我们以 Apache module 模块方式配置,在末尾加上下面三行
    
            LoadModule php5_module "%PHP_HOME%/php5apache.dll" 
           #对于 Apache 2 则加载 php5apache2.dll,写成
           #LoadModule php5_module "%PHP_HOME%/php5apache2.dll"
           
           AddType application/x-httpd-php .php
            
            #指定 php.ini 文件的置,默认是在 %windir% 目录下
            PHPIniDir "%PHP_HOME%/"

        说明:%PHP_HOME% 替换为实际的路径

    2) 把 %PHPE_HOME%/php.ini-recommended 文件更名为 php.ini,然后修改其中的

            extension_dir = "%PHP_HOME%/ext"

        然后把 extension=php_gettext.dll 和 extension=php_ldap.dll 前面的分号(;) 注释符去掉,保存。明显我们的 php 要用到 ldap 库,还有在 phpLDAPadmin 中使用了 GETTEXT 来实现国际化。

    3) 还要使得 Apache 启动时能加载到 %PHP_HOME% 下的 libeay32.dll 和 ssleay32.dll 这两个文件,我们不妨把这两个文件拷到 %APACHE_HOME% 目录下即可。

    4) 最后我们来测试一下 PHP 安装是否成功,在 %APACHE_HOME%/conf/httpd.conf 的 DocumentRoot  所指向的站点主目录中新建一个 phpinfo.php,在里面写上:

       <?php  phpinfo(); ?>

      启动 Apache,在浏览器中用 http://localhost/phpinfo.php 看看是不是显示了 php 的相关信息,并且能找到启用了 LDAP 和 GETTEXT,OK,到这一步就完成一大半了。

4, phpLDAPadmin 的安装配置

    1) 把下载的 phpLDAPadmin 解压到 Apache 的站点主目录中,目录命名为 phpldapadmin,如 %APACHE_HOME%/htdocs/phpldapadmin,用 %PHP_LDAP_ADMIN_HOME% 来表示这个目录。

    2) 把 %PHP_LDAP_ADMIN_HOME% /config/config.php.example 更名为 config.php,这个文件中对于各项的配置有很详细的说明。

    3) 修改以上的 config.php 文件

注意,如果是连接用来连接到本机的 389 端口上的 LDAP 服务,不用修改此文件都行,到时在界面上直接输入登录用户的 DN 和密码即可。

在该文件中找到行
 
        $ldapservers->SetValue($i,'server','name','My LDAP Server');

        并把这一行随后的 

        // $ldapservers->SetValue($i,'server','host','127.0.0.1');
        // $ldapservers->SetValue($i,'server','port','389');
        // $ldapservers->SetValue($i,'server','base',array(''));
        // $ldapservers->SetValue($i,'server','auth_type','cookie');
        #  $ldapservers->SetValue($i,'login','dn','cn=Manager,dc=example,dc=com');
        #  $ldapservers->SetValue($i,'login','pass','secret');

       去掉注释符(// 或 #),再依据前面的 OpenLDAP 配置依次改为

        $ldapservers->SetValue($i,'server','host','localhost');
        $ldapservers->SetValue($i,'server','port','389');
        $ldapservers->SetValue($i,'server','base',array('dc=example,dc=com'));
        $ldapservers->SetValue($i,'server','auth_type','cookie');
        $ldapservers->SetValue($i,'login','dn','cn=jimbob,dc=example,dc=com');
        $ldapservers->SetValue($i,'login','pass','dirtysceret');


       以上那个属性不设置,则取默认值,如默认 host 为 localhost,port 为 389,base 为空则自动检测,auth_type 为 cookie,dn 和 pass 不设值则要求界面输入。

    3) 如果要同时管多个 LDAP 服务器,则可在这个 config.php 文件中参照 $i++; 所在的注释块配置其他的 LDAP 服务器参数,配置了多个可以在 WEB 界面上通过下拉选择当前的的 LDAP 服务器。

三. 体验 phpLDAPadmin

在浏览器上访问 http://localhost/phpldapadmin/index.php, 点击左侧 My LDAP Server 下的 Login ...,输入 登录 DN 为 cn=jimbob,dc=example,dc=com 和密码为:dirtysecret,点击认证按钮就能连接上 LDAP 服务器进行管理了。这里挂上一个搜索的界面。

phpLDAPadmin.jpg

四. 一些问题

1. 为什么用 phpLDAPadmin 1.1.0,而不用目前最新版 1.1.0.5,因为 1.1.0.5 主要有两个问题:
     
        1) 经常页面出现乱码,每次需手工选择网页编码为 UTF-8,1.1.0 下正常。
 
        2) 即使在 config.php 中提供了登录 DN 和 密码,auth-type 是 cookie,也是不能自己登录的,一定要输入密码手工点一点认证按钮,1.1.0 下正常

2. 注意 PHP 的版本,以及是否开启了 LDAP 和 GETTEXT 支持。我首先拿到的 phpLDAPadmin 版本是 1.1.0-alpha3,看其中的 INSTALL 文件里写着的是:

        PHP 4.1.0 or newer (with LDAP support)

其实我还是比较大方的,直接用了 PHP 4.4.9 来伺候它,LDAP 也开了,结果它不领情。出现了这样的错误:

        php unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}'

定位在 PHP 类的变量声明上,如 public、private 和 clone 操作上,原因是 PHP 4 不支持这个,只能用 var,所以要换 PHP 5 才行。

        还有 phpLDAPadmin 绝口未提要 GETTEXT 来支持它的国际化,害我从源代码中才翻出这一底细,即使是后续版本也对此默声不语。况且 PHP 4 本身就没有内置对 GETTEXT 的支持,尝试着安装 gettext for Win32 也不奏效,那就顺手移到 PHP5 上吧,在 php.ini 中把 GETTEXT 也打开,一切解决。

       在 phpldapadmin/htdocs/index.php 中有这么一段代码:

        # Make sure this PHP install has gettext, we use it for language translation
        if (! extension_loaded('gettext'))
             pla_error('<p>Your install of PHP appears to be missing GETTEXT support.</p><p>GETTEXT is used for language translation.</p><p>Please install GETTEXT support before using phpLDAPadmin.<br /><small>(Dont forget to restart your web server afterwards)</small></p>');

3. 有关 php.ini 和 config.php 的详细配置见这两文件本身吧,它们是自文档的,例如可以适当的裁剪一些 PHP 的功能。以及 PHP 和 Apache 的搭配也应见 PHP 的 install.txt。最后为方便访问,在 Apache 的 httpd.conf 中为
 
        DirectoryIndex index.html index.php

把 index.php 也加上,如上形式。

本篇只关注如何配置 phpLDAPadmin 使用,碰到问题实际解决而已。旨在为我们开发中使用 LDAP 提供一个便利的工具而已,或有些用处。不用在 PHP 上纠缠,毕竟 PHP 太久没用过了,也不清楚现在演化成什么样子了。

4. 另外,若是你的 phpLDAPadmin 页面要加载的数据信息过于庞大时,建议用 FireFox,因为 FireFox 与 IE 的机制不一样,FireFox 首先会申请一大块内存,所以显示大量数据信息的页面时不会像 IE 那样拖不动。用 FireFox 和 IE 分别试着访问一下 Blogjava 首页面的,更多博客连接 http://www.blogjava.net/AllBloggers.aspx 就知道了。
原创粉丝点击