(网上好多资料都不靠谱 尹渝寒原创 粘贴请说明版权 谢谢)

http://hi.baidu.com/bensonkung/home

-----------------------------------------------------------

OpenLDAP安装记录
-----------------------------------------------------------------------

slurpd/replica 已经被删除
OpenLDAP 从版本 2.4.7 开始,不再支持通过 slurpd 服务执行 LDAP 复制。原先的配
置需要修改为使用 LDAP 同步复制引擎(syncrepl)。更详细的文档位于 http://
www.openldap.org/doc/admin24/replication.html。


Berkeley DB下载地址
http://www.oracle.com/technetwork/database/berkeleydb/downloads/index-082944.html
http://download.oracle.com/berkeley-db/db-4.1.25.tar.gz

openldap下载地址
ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.1.30.tgz

* openldap的安装包里的readme里说明了该版本的openldap对应哪个版本的Berkeley DB
* 并且里面的servers包里包含了slapd和slurpd两个文件夹的是带复制功能的版本
关于openldap和berkeley db具体各用什么版本搭配
2.3的openldap都带slurpd功能
但是都是要求用4.2版本的berkeley db
而4.2版本的berkeley db的header是4.2,而library是4.3的
所以在安装openldap执行configure操作的时候是无法通过版本兼容检测的
会报如下错误
checking for Berkeley DB version match... Berkeley DB version mismatch
        header: Sleepycat Software: Berkeley DB 4.2.52: (December  3, 2003)
        library: Sleepycat Software: Berkeley DB 4.3.29: (September  6, 2005)
no
configure: error: Berkeley DB version mismatch

将上述两个文件上传至/root目录下

tar -zxvf db-4.1.25.tar.gz
进入解压缩目录
进入build_unix目录
执行
cd /root/db-4.1.25
../dist/configure --prefix=/usr/local/BerkeleyDB
#make depend
make
#make test
make install

编辑/etc/profile
在最后一行之前加入下面的东西
export CPPFLAGS="-I/usr/local/BerkeleyDB/include"
export LDFLAGS="-L/usr/local/BerkeleyDB/lib"
export LD_LIBRARY_PATH="/root/db-4.1.25/build_unix/.libs"

重启
reboot

tar -zxvf openldap-2.1.30.tgz
进入解压缩目录
执行
cd /root/openldap-2.1.30
./configure --prefix=/usr/local/openldap --enable-ldap --with-threads --enable-rewrite --enable-ldbm --enable-slurpd --enable-wrappers
make depend
make
make test
make install

安装完毕


参考文章
http://www.debian.org/releases/stable/amd64/release-notes.zh_CN.pdf
http://tinux.no-ip.com/wordpress/?p=113
http://tinux.no-ip.com/wordpress/?p=126
http://hi.baidu.com/fiber212121/blog/item/d50ae7367e190d360b55a9b9.html
http://www.blogjava.net/junky/archive/2007/06/06/122343.aspx
http://blog.linuxeden.com/html/55/t-160555.html
http://www.360doc.com/content/10/0109/20/715855_13102499.shtml





新建文件文件
/usr/local/openldap/bin/simp_root.ldif
内容如下
dn: dc=simp,dc=com
dc: simp
#objectclass: top
#objectclass: domain
objectclass: dcObject
objectclass: organization
o: simp.com

将自定义的schame文件simp_99user.schema添加到如下位置
/usr/local/openldap/etc/openldap/

新建一个空文件
/usr/local/openldap/libexec/slurpd.log

将下面的文件复制一份
/usr/local/openldap/var/openldap-data/DB_CONFIG.example
并改名为
/usr/local/openldap/var/openldap-data/DB_CONFIG

安装后需要修改slapd.conf文件
复制一份并将复制的文件改名为slapd.conf.bak备份
如果是linux上安装openldap,则配置文件的位置为
/usr/local/openldap/etc/openldap/slapd.conf
在配置文件slapd.conf中覆盖为如下内容
include        /usr/local/openldap/etc/openldap/schema/core.schema
include        /usr/local/openldap/etc/openldap/schema/cosine.schema
include        /usr/local/openldap/etc/openldap/schema/inetorgperson.schema
include        /usr/local/openldap/etc/openldap/schema/simp_99user.schema #这是自定义的schema
pidfile        /usr/local/openldap/var/run/slapd.pid
argsfile    /usr/local/openldap/var/run/slapd.args
database    bdb
suffix        "dc=simp,dc=com"
rootdn        "cn=admin,dc=simp,dc=com"
rootpw        {SSHA}TRCYMjvDt461OTC0gqp/wAR4wBdzDR5W
directory    /usr/local/openldap/var/openldap-data
index    objectClass    eq

注:执行某一命令之前需要切换到命令文件所在的目录

启动服务,debug模式启动slapd服务的命令为
cd /usr/local/openldap/libexec
./slapd -d -1 -h ldap://192.168.1.109:666 -f /usr/local/openldap/etc/openldap/slapd.conf

表5.1: Debugging Levels
Level Description
-1 nable all debugging
0 no debugging
1 trace function calls
2 debug packet handling
4 heavy trace debugging
8 connection management
16 print out packets sent and received
32 search filter processing
64 configuration file processing
128 access control list processing
256 stats log connections/operations/results
512 stats log entries sent
1024 print communication with shell backends
2048 print entry parsing debugging

然后可以向openldap中添加数据
要先添加根节点
根节点比较特殊
添加后无法删除
这要用到开头时说明要创建的文件
/usr/local/openldap/bin/simp_root.ldif
这是添加命令
windows版
cd /usr/local/openldap/bin
ldapadd -x -D "cn=admin,dc=simp,dc=com" -w 123 -f simp_root.ldif
debian版
cd /usr/local/openldap/bin
./ldapadd -H ldap://192.168.1.109:666 -x -D "cn=admin,dc=simp,dc=com" -w 123 -f simp_root.ldif
注意参数选项H是大写 与slapd功能不同

ldap复制功能配置

将主服务器的目录
/usr/local/openldap
覆盖至从服务器的相应位置

修改配置文件
/usr/local/openldap/etc/openldap/slapd.conf

假设主openldap服务器IP为 192.168.1.109
    从openldap服务器IP为 192.168.1.110

在主ldap服务器端加入如下配置
replogfile ./slurpd.log
replica host=192.168.1.110:666 suffix="dc=simp,dc=com" binddn="cn=admin,dc=simp,dc=com" credentials=123 bindmethod=simple tls=yes

在从ldap服务器端加入如下配置
updatedn "cn=admin,dc=simp,dc=com"
updateref ldap://192.168.1.109

debug模式启动从服务器slapd
cd /usr/local/openldap/libexec
./slapd -d -1 -h ldap://192.168.1.110:666 -f /usr/local/openldap/etc/openldap/slapd.conf
debug模式启动主服务器slapd
cd /usr/local/openldap/libexec
./slapd -d -1 -h ldap://192.168.1.109:666 -f /usr/local/openldap/etc/openldap/slapd.conf
debug模式启动主服务器slurpd
cd /usr/local/openldap/libexec
./slurpd -d -1 -f /usr/local/openldap/etc/openldap/slapd.conf

然后用ldap-browser分别连接到主从服务器上
修改主服务器上的一个数据
验证下从服务器上的数据是否做了相应的改变