轻型目录访问协议(英文:Lightweight Directory Access Protocol,缩写:LDAP)是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。
OpenLDAP是轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)的自由和开源的实现,在其OpenLDAP许可证下发行,并已经被包含在众多流行的Linux发行版中。
可以这样讲:市面上只要你能够想像得到的所有工具软件,全部都支持LDAP协议。比如说你公司要安装一个项目管理工具,那么这个工具几乎必然支持LDAP协议,你公司要安装一个bug管理工具,这工具必然也支持LDAP协议,你公司要安装一套软件版本管理工具,这工具也必然支持LDAP协议。LDAP协议的好处就是你公司的所有员工在所有这些工具里共享同一套用户名和密码,来人的时候新增一个用户就能自动访问所有系统,走人的时候一键删除就取消了他对所有系统的访问权限,这就是LDAP。
这几天由于项目需要,经理让我研究一下openldap,写一个连接openldap以及实现与openldap数据交互的SDK。之前从来没有接触过openldap,所以我想从安装做起,做一个记录,不多说了,下面是步骤:
我用的是银河麒麟系统,内核是ubuntu的,首先要将用户转为root权限,下面开始安装。
1、安装openssl
安装openldap前提是已经安装好openssl和BerkeleyDB,我们先来安装openssl(这个虽然系统自带,但是最好不要卸载,重新安装一个,卸载之后很多服务可能起不来)
下载地址:https://www.openssl.org/source/
之后解压
tar -zxvf +压缩包名
进入文件
cd 文件名
执行命令
./config shared #注意这里是用./config 会安装到/usr/local/ssl
make
make install
配置库文件搜索路径
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig -V
这2句的作用就是通知系统Berkeley DB的动态链接库在/usr/local/berkeleydb/lib/目录。
- 配置/etc/ld.so.conf文件
ld.so.conf文件配置了需要读入告诉缓存中的动态函数库所在目录 重新配置ld.so.conf后,在命令行执行ldconfig命令生效该软件默认是安装在/usr/local/BerkeleyDB.4.2目录下。安装完成后,要把/usr/local/BerkeleyDB.4.2/lib的库路径加到/etc/ld.so.conf文件内,添加完成后执行一次ldconfig,使配置文件生效。这样编译openldap时才能找到相应的库文件。
- ld.so.conf是什么东西?
它就是系统动态链接库的配置文件。此文件内,存放着可被LINUX共享的动态链接库所在目录的名字(系统目录/lib,/usr/lib除外),各个目录名间以空白字符(空格,换行等)或冒号或逗号分隔。一般的LINUX发行版中,此文件均含一个共享目录/usr/X11R6/lib,为X window窗口系统的动态链接库所在的目录。 ldconfig是它的管理命令,具体操作方法可查询man手册
- ldconfig是什么
它是一个程序,通常它位于/sbin下,是root用户使用的东东。具体作用及用法可以man ldconfig查到
简单的说,它的作用就是将/etc/ld.so.conf列出的路径下的库文件 缓存到/etc/ld.so.cache 以供使用
因此当安装完一些库文件,(例如刚安装好glib),或者修改ld.so.conf增加新的库路径后,需要运行一下/sbin/ldconfig
使所有的库文件都被缓存到ld.so.cache中,如果没做,即使库文件明明就在/usr/lib下的,也是不会被使用的,结果编译过程中抱错,缺少xxx库,去查看发现明明就在那放着......
2、安装BerkeleyDB
下载地址: http://www.oracle.com/technet...(注意要根据openldap的README文件中的内容下载合适的版本下面是一段原文,在下载时一定要注意!)
SLAPD:
BDB and HDB backends require Oracle Berkeley DB 4.4 - 4.8,
or 5.0 - 5.1. It is highly recommended to apply the
patches from Oracle for a given release.
之后执行命令
tar -zxvf +压缩包名
cd 文件名
cd build_unix
../dist/configure --prefix=/usr/local/berkeleydb --enable-cxx #其中–enable-cxx就是编译C++库,这样才能编译Berkeley DB数据库的PHP扩展php_db4。
make
make install
echo '/usr/local/berkeleydb/lib/' >> /etc/ld.so.conf
ldconfig #添加完成后执行一次ldconfig,使配置文件生效。这样编译openldap时才能找到相应的库文件。
ldconfig -V
3、安装openldap
终于进入正题,下载地址:http://www.openldap.org/softw...
之后执行命令
tar -zxvf +压缩包名
cd 文件名
env CPPFLAGS="-I/usr/local/berkeleydb/include" LDFLAGS="-L/usr/local/berkeleydb/lib" LD_LIBRARY_PATH="/usr/local/berkeleydb/lib" ./configure --prefix=/usr/local/openldap --enable-ldbm --enable-overlays --enable-ldap --enable-accesslog --enable-syncprov
注意以上配置语句,要设置资料库的include和lib路径,否则在配置到资料库相关内容时会提示Berkeley DB版本不兼容,并中断配置。如果没有--enable-ldbm选项,在make test时会提示ldbm找不到。为了减少出错,还是加上为好。后面的几个参数是为了使用openldap的同步协议,必须在编译阶段强制开启如下的编译选项,其中-enable-ldap 选项用于支持ldap代理,在同步中用来推送数据;--enable-accesslog 选项用于记录用户操作,在同步中用于记录服务端的数据修改;--enable-syncprov 选项用于支持数据同步引擎。
make depend
make
make test # (在make test阶段要花费较长时间进行测试,好像有16项吧。可以放在那里等,自己做其他事情,不过成与不成就看这下的了,如果没问题就可安装了)
make install
配置库文件搜索路径
echo "/usr/local/openldap/lib" >> /etc/ld.so.conf
ldconfig -V
说说这里的坑吧,第一次装这个东西,网上的资料要么对新人不太友好,要么就是过时的资料,还有就是本身就是错误的,总之安装挺不容易的,我具体说说吧,一个就是刚才我写到的,之前装的BerkeleyDB版本太高,导致在装openldap时提示BerkeleyDB不可用,后来装了适合的版本,又提示版本不匹配,google后在./configure之前添加
LD_LIBRARY_PATH="/usr/local/berkeleydb/lib"
好不容易可以执行下一步了,在make test 时又测试失败,原来动态连接库出问题了,没有设置正确,导致运行时的库文件没能找到,所以要检查环境变量.LD_LIBRARY_PATH中一定要有系统的以及bdb的环境库文件位置.之前可能直接复制的,没有看路径导致的错误......总之“惊喜”不断,不过最后还是安装成功了,先喘口气,后面还有更大的考验......
补充:linux源码安装的三步曲
从源码安装程序时,需要依此执行以下步骤:
./configure
make
make install
他们的含义:
这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤。
./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本
make是用来编译的,它从Makefile中读取指令,然后编译。
make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。