当前位置:操作系统 > Unix/Linux >>

用OpenLdap建立网络数据库

目录

  一、 OpenLdap简介 1

  二、 项目描述 1

  三、 数据库结构图 2

  四、 平台环境 2

  1. 硬件 2

  2. 软件 2

  五、 数据库构建的过程 3

  1. 安装OS和应用软件 3

  2. 系统配置 3

  3. 数据库配置 3

  4. 数据导入 7

  5. 检查LDAP上的操作和主从同步是否正确: 9

  一、 OpenLdap简介

  LDAP 的英文全称是Lightweight Directory Access Protocol(轻量级的目录访问协议),它基于X.500标准的,支持TCP/IP。简单地说,LDAP其实就是数据库三种模型中的层次型数据库,按照树型结构组织,由entry(条目)这种相当于关系型数据库中记录的数据结构组成。每个条目由多个属性-值对组成,其中DN(区别名)属性是标识这条记录的关键字,还由一个特殊的属性ObjectClass(对象类别)来实现的决定了该条目必须遵循的一些规则,规定了该条目必须和可选包含哪些属性。每个属性都可以有多个值。LDAP的数据类型不用申明默认都为字符型,除了个别还定义了一些如BIN(二进制数据)、CIS(忽略大小写)、CES(大小写敏感)、TEL(电话型)等。LDAP的一个很大的特点就是适合于大型OLTP的数据查询服务,但不适合需要经常改变数据的情况。

  二、 项目描述

  本项目目的在于提供用户购买会员卡进行网上信息查询,考虑到LDAP读快写慢的特点,而本项目的特点就在于不频繁地导入更新数据库,决定采用 Openldap构建用户信息验证数据库。该数据库有两个子树(相当于两个表),用户信息树和会员帐号树。由于会员卡是事先批量制作流入市场,与用户没有固定的对应关系,只有当用户购买会员卡并注册一个用户名后才能通过网络告知系统用户信息和会员卡号之间的这种关联关系。于是在后台数据库中用户信息树和会员帐号树之间就通过会员卡号作为关联关键字。

  三、 数据库结构图

  该数据库的构建更能体现逻辑和功能上的模块化。以域名info.net作为树根,有一个系统管理员admin(DN:cn=admin,dc=info,dc=net),该库中包括两大子树: people组(DN:ou=people,dc=info,dc=net),用于存放用户信息;Account组(DN:ou=Account,dc= info,dc=net),用于存放会员卡信息。

  四、 平台环境

  1. 硬件

  SUN sparc主机(主从同步结构)

  四层交换机(SLB负载均衡)

  2. 软件

  OS: solaris 8(sparc)

  BerkeleyDB2.7.7(www.sleepycat.com)

  Openldap1.2.11(www.openldap.org)

  五、 数据库构建的过程

  1. 安装OS和应用软件

  安装Solaris8,BerkeleyDB2.7.7和Openldap1.2.11

  Openldap1.2.11基于BerkeleyDB2.7.7之上

  2. 系统配置

  修改系统核心参数文件/etc/system:

  加入文件句柄的软限制和硬限制:

  * set hard limit on file descriptors

  set rlim_fd_max = 4096

  * set soft limit on file descriptors

  set rlim_fd_cur = 1024

  修改核心参数需要重启机器

  3. 数据库配置

  主LDAP服务器:

  Slapd.conf

  #

  # See slapd.conf(5) for details on configuration options.

  # This file should NOT be world readable.

  #

  include /opt/openldap/etc/openldap/slapd.at.conf

  include /opt/openldap/etc/openldap/slapd.oc.conf

  include /opt/openldap/etc/openldap/slapd.info.oc.conf

  include /opt/openldap/etc/openldap/slapd.account.oc.conf

  schemacheck on

  pidfile /opt/openldap/var/slapd.pid

  argsfile /opt/openldap/var/slapd.args

  loglevel 8

  ########################################

  # ldbm database definitions

  ########################################

  database ldbm

  cachesize 3000000

  dbcachesize 500000000

  #dbcachenowsync

  timelimit 30

  suffix "dc=info, dc=net"

  rootdn "cn=root, dc=info, dc=net"

  rootpw root

  # cleartext passwords, especially for the rootdn, should

  # be avoid. See slapd.conf(5) for details.

  replogfile /opt/openldap/log/slapd.replog

  directory /opt/openldap/data

  index id,card_id,email

  index default none

  replica host=n.n.n..n binddn="cn=root, dc=info, dc=net" bindmethod=易做图 credentials=root

  defaultaccess none

  access to dn=".*,dc=root,dc=net"

  by self read

  by dn="cn=Admin,dc=root,dc=net" write

  by * none

  access to *

  by self read

  by dn="cn=Admin,dc=root,dc=net" write

  by * none

  该配置指定了两个自定义schema:slapd.info.oc.conf slapd..account.oc.conf,同步的辅助服务器和一些ACL用于安全限制

  辅LDAP服务器:

  #

  # See slapd.conf(5) for details on configuration options.

  # This file should NOT be world readable.

  #

  include /opt/openldap/etc/openldap/slapd.at.conf

  include /opt/openldap/etc/openldap/slapd.oc.conf

  include /opt/openldap/etc/openldap/slapd.info.oc.conf

  include /opt/openldap/etc/openldap/slapd.account.oc.conf

  schemacheck on

  pidfile /opt/openldap/var/slapd.pid

  argsfile /opt/openldap/var/slapd.args

  loglevel 8

  ########################################

  # ldbm database definitions

  ########################################

  database ldbm

  #cachesize 4000000

  #dbcachesize 500000000

  #dbcachenowsync

  timelimit 30

  suffix "dc=info, dc=net"

  rootdn "cn=root, dc=info, dc=net"

  rootpw root

  # cleartext passwords, especially for the rootdn, should

  # be avoid. See slapd.conf(5) for details.

  replogfile /opt/openldap/log/slapd.replog

  directory /opt/openldap/data

  index id,card_id,email

  index default none

  updatedn "cn=root,dc=info,dc=net"

  defaultaccess none

  access to dn=".*,dc=info,dc=net"

  by self read

  by dn="cn=Admin,dc=info,dc=net" write

  by * none

  access to *

  by self read

  by dn="cn=Admin,dc=info,dc=net" write

  by * none

  该配置指定了主LDAP同步过来修改本机信息的权限

  增加slapd.info.oc.conf:(用户信息的配置文件)

  objectclass InfoPerson

  requires

  objectClass,

  id

  allows

  username,

  pass,

  uid,

  addr,

  shenfenno,

  tel,

  card_id

  指定id字段是比不可少的,其他都为可选

  增加slapd.account.oc.conf:(账号信息配置文件)

  objectclass AccountPerson

  requires

  objectClass,

  card_id

  allows

  card_pass

  指定了卡号和卡密码

  重新启动LDAP SERVER:

  这里主LDAP服务器的启动脚本如下

  /etc/rc2.d/S94slapd

  #!/bin/sh

  #

  #ident LDAP Service

  case "$1" in

  'start')

  if [ -f /opt/openldap/etc/openldap/slapd.conf -a -f /opt/openldap/libexec/slapd ]; then

  echo "LDAP service starting."

  /opt/openldap/libexec/slapd -f /opt/openldap/etc/openldap/slapd.conf 1>/dev/console 2>&1 &

  fi

  if [ -f /opt/openldap/etc/openldap/slapd.conf -a -f /opt/openldap/libexec/slurpd ]; then

  echo "LDAP sync service starting."

  /opt/openldap/libexec/slurpd -f /opt/openldap/etc/openldap/slapd.conf -t /opt/openldap/log >/tmp/slurpd.log 2>&1 &

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,