linux openldap mysql_linux ldap openldapadmin

article/2025/9/17 2:06:24

LINUX下安装openldap,并用phpldapadmin进行管理

BDB:Berkeley DB,openldap需要使用的数据库(貌似还有别的数据库可用,但这次我要用到它)

phpldapadmin:openldap的网页管理软件,需要php支持,所以会有apache+php一说。

linux:    CentOS5.4   ip:192.168.1.6

apache:    httpd-2.2.14.tar.bz2

php:    php-5.2.12.tar.gz

bdb:    db-4.5.20.tar.gz

openldap:    openldap-stable-2.3.32.tgz

phpldapadmin:    phpldapadmin-1.2.0.5.tgz

bdb与openldap会有兼容性问题,2.3和2.4的openldap与4.8的bdb不兼容,后来发现2.3的openldap需要的bdb版本应该为4.4-4.6之间,所以这里就选择了4.5的bdb。(装64位系统的时候,4.5的却不兼容,让换成4.3.29的,我晕死。。。)

1.安装apache

./configure --prefix=/usr/local/apache2 --enable-so --enalbe-rewrite                //安装到指定目录,so开启动态模块支持,rewrite开启地址重写。

make;make install

2.安装php

./configure --prefix=/usr/local/php5

--with-apxs2=/usr/local/apache2/bin/apxs

--with-config-file-path=/usr/local/php5 --with-ldap --with-gettext                                   //指定安装目录,跟apache融合,指定配置文件位置,启用ldap支持(必须的),启用gettext支持(必须要启用的支持)

make;make install

cp php.ini-dist /usr/local/php5/php.ini                         //把配置文件拷贝过去,编辑它在适当位置添加include_path = /usr/local/php5/lib/php

修正:我的服務器支持LAMP及JSP應用,編譯使用的參數為

/configure' '--prefix=/usr/local/php' '--with-gd=/usr/local/gd2'

'--with-apxs2=/usr/local/apache/bin/apxs' '--enable-mbregex'

'--enable-bcmath' '--with-mysql=/usr/local/mysql' '--with-zlib-dir'

'--enable-mbstring=all'

'--with-pdo-mysql=/usr/local/mysql/bin/mysql_config'

'--with-freetype-dir=/usr/local/freetype' '--with-ldap'

'--with-ldap-sasl' '--with-gettext'

make ;make install

cp php.ini-dist /usr/local/php/lib/php.ini

vim /usr/local/php/lib/php.ini

刪除“;extension=php_gettext.dll”前的豐號。重啟apache服務即可。

如果編譯是不加--with-gettext會報Fatal error: Call to undefined function bindtextdomain() in。。。。錯誤;不修改配置文件也會報找不到gettext錯誤。

3.修改apache让其支持php

vi /usr/local/apache2/conf/httpd.conf

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps              //在合适的位置添加这两行,.php和.phps前面都带“点”的,再前面还都有一“空格”的,不要写错了哦。

DirectoryIndex index.html index.php                            //在DirectoryIndex后面加个index.php,类似前面这样子

保存退出。

4.安装bdb

tar zcvf db-4.5.20.tar.gz

cd db-4.5.20/build_unix                                            //bdb需要在这个目录里编译(不同于其它大多数linux程序,算一特异者吧)

../dist/configure --prefix=/usr/local/db                         //bdb的配置文件在dist目录里(这种编译安装在linux里没有普遍性,所以不必因此困扰,大多数linux程序还都是直接在解包出来的根目录里直接编译安装就行了的)

make

make install

//make;make

install中间有分号是因为两条命令写在同一行里必须要用;分隔,而此处则是把两条命令分开执行,所以;也就不用了,其实结果是一样的。

vi /etc/ld.so.conf      手工加入以下内容:

/usr/local/db/lib

/sbin/ldconfig

5.安装openldap

vi /etc/profile     在末尾手工加入以下内容:

LD_RUN_PATH=/usr/local/db/lib                                //这个可能不是必须的。

LD_LIBRARY_PATH=/usr/local/db/lib                         //必须的,少了安装会报错

export LD_RUN_PATH LD_LIBRARY_PATH                //导出变量,也是必须的,要不变量没法生效

保存退出

source /etc/profile                                                     //让刚设置的变量立刻生效

env CPPFLAGS="-I /usr/local/db/include" LDFLAGS="-L /usr/local/db/lib" ./configure --prefix=/usr/local/openldap --enable-bdb                                                            //CPP和LD这两个环境变量应该可以跟刚才的LD_LIBRARY那个变量一样设置在profile文件里的,但是大家都是在这里设置,可能是因为这两个变量都是只在安装时用一次吧,所以我这里也就随大家写在命令里而不是写在profile

里了,记得要启用bdb,要不我们的bdb就白装了。(装64 位系统的时候又报错缺少ltdl.h,后来locate

ltdl找到了它的位置,然后命令改成了env CPPFLAGS="-I /usr/local/db/include" LDFLAGS="-L

/usr/local/db/lib" LDFLAGS="-L /usr/share/libtool/libltdl"

./configure --prefix=/usr/local/openldap

--enable-bdb,就是多加了红色字体部分。真晕,同样的操作配置,32位能过,64位系统就过不了。。。)(试过多种方法64位系统总是提示缺

少ltdl.h,最后实在耗不起那个时间了然后就直接yum install

openldap-servers了事,此时却发现yum安装时安装了一个名为libtool-ltdl-1.5.22-7.el5_4的依赖包,难道就

是因为缺少这个包导致的编译通不过?)(yum安装openldap主要是安装openldap、openldap-devel、openldap-

servers、openldap-clients这四种包)

make depend                                                        //解决依赖问题

make

make test                                                             //有自信的可以不检测,这个不是必须的。

make install

6.修改openldap配置文件

vi /usr/local/openldap/etc/openldap/slapd.conf

include         /usr/local/openldap/etc/openldap/schema/core.schema                    //本行后面这些include行手工添加一下,这些schema都在openldap安装目录下的etc/openldap/schema下,可以进去该目录看下都有什么schema,把有的全都添加到这里,以后用起来也方便。

include         /usr/local/openldap/etc/openldap/schema/corba.schema

include         /usr/local/openldap/etc/openldap/schema/cosine.schema

include         /usr/local/openldap/etc/openldap/schema/dyngroup.schema

include         /usr/local/openldap/etc/openldap/schema/inetorgperson.schema

include         /usr/local/openldap/etc/openldap/schema/java.schema

include         /usr/local/openldap/etc/openldap/schema/misc.schema

include         /usr/local/openldap/etc/openldap/schema/nis.schema

include         /usr/local/openldap/etc/openldap/schema/openldap.schema

database        bdb                                                                            //本行后面这些行是可能需要修改的,bdb就是我们的Berkeley DB数据库了

suffix          "dc=gaso,dc=com"

//suffix(后缀),以后所有的ldap数据记录都将放在它的下面,你可以把它看成是数据库的总库,之后的phpldapadmin中也需要指定它

并且要跟这里的设置一致(6个多小时的时间花费得来的经验!),它的格式有:dc=gaso,dc=com或者o=gaso,dc=com或者

cn=gaso,dc=com,这些样子的应该都可以(没试过哦,推测的,有兴趣的可以试下),应该比较灵活,甚至直接dc=com我估计也行(没试过

哦)。我推测就是给个树根好让以后苹果有地方长,至于树根长什么模样,苹果是不会介意的:),怎么的苹果也是长树枝上的,中间还隔着树干呢,哈哈!

rootdn          "cn=root,dc=gaso,dc=com"                                          //openldap的管理者(就跟系统的管理员类似,openldap的“大权在握者”)

rootpw          {SSHA}rWWrzQ60N42lNONcZFaKovPrgWSjn5/Z          //管理者密码,该密码串需要通过ldappasswd命令(openldap安装目录下的bin目录里)来生成

directory       /usr/local/openldap/var/openldap-data                        //指定openldap数据库的存放目录

保存退出

/usr/local/openldap/bin/ldappasswd                                                 //生成管理者密码,回车后输入两遍密码就可以了

/usr/local/openldap/libexec/slapd                                                    //启动openldap

7.安装phpldapadmin

tar zxvf phpldapadmin-1.2.0.5.tgz

mv phpldapadmin-1.2.0.5/* /usr/local/apache2/htdocs/                   //解包,把得到的文件弄到apache的网页根目录htdocs里就算安装完事

8.修改phpldapadmin配置文件

cp /usr/local/apache2/htdocs/config/config.{php.example,php}       //用配置文件模板拷贝一份配置文件出来

vi /usr/local/apache2/htdocs/config/config.php

$servers->setValue('server','name','GASO LDAP Server');                //本行及后面这些行(读hang)为关键参数,可按实际情况修改,此处指定服务器的显示名称为GASO LDAP Server,该名称可随意设置

$servers->setValue('server','host','127.0.0.1');                                     //指定openldap服务器就是本机

$servers->setValue('server','port',389);                                              //指定openldap服务使用的端口为389

$servers->setValue('server','base',array('dc=gaso,dc=com'));

//指定openldap的Base

DN(树根,总数据库啊什么的),array里的值必须与上面6中设置的suffix的值一致,否则phpldapadmin就无法连接上

openldap,也就意味着phpldapadmin无法操作openldap(6个多小时才搞明白这一点,我晕死!)。

$servers->setValue('login','auth_type','session');                               //session是默认值,还可以设置成cookie,但那是另一套设置方案了

$servers->setValue('login','bind_id','cn=root,dc=gaso,dc=com');       //登陆的绑定id,我在这里用了“大权在握者”来绑定,这样的话网页登陆对话框上就会直接显示该管理者的账号,直接输入密码就可以登录了,也可以留空,留空的话下面的密码也就必须留空了,那样的话可以设置多个账号,大家各登个的录。

$servers->setValue('login','bind_pass','gaso123');                              //上面已经绑定了管理者账号了,这里就需要给出密码,这个密码可是之前ldappasswd命令设置生成的密码,可不是在这里指定什么就是什么密码。

9.访问phpldapadmin管理openldap

http://192.168.1.6/(安装openldap服务的系统的ip,不要连别人的名字都抄到答卷上了哦)

没意外的话就可以看到phpldapadmin的登录页面了(八成会有意外,第一次在所难免啊!)

10.关于ldap的一些理解

我们可以想象有一颗苹果树,树枝就是树干的延伸。

0f7d1754f37496f119fcf1662d8f48a1.png

貌似可以这样理解:ou、cn(树干)长在dc(树根)上,ou、cn(苹果)长在ou、cn(树干树枝)上(非主流啊!哈哈!)

11.其它相关

ldapsearch -x -b '' -s base '(objectclass=*)'                      //检查openldap安装是否成功,结果类似如下

# extended LDIF

#

# LDAPv3

# base <> with scope baseObject

# filter: (objectclass=*)

# requesting: ALL

#

#

dn:

objectClass: top

objectClass: OpenLDAProotDSE

# search result

search: 2

result: 0 Success

# numResponses: 2

# numEntries: 1

ldapsearch -x -b 'dc=gaso,dc=com' '(objectclass=*)'            //查看openldap数据库里所有数据

ldapadd -x -D "cn=root,dc=gaso,dc=com" -w gaso123 -f "gaso.ldif"//把文件gaso.ldif里面的记录通过管理者账号录入openldap的数据库里面。


http://chatgpt.dhexx.cn/article/lT6spsE4.shtml

相关文章

mysql +cobar_数据库中间件Cobar功能探究

一、Cobar项目介绍 一)、Cobar背景概述 Cobar是提供分布式数据库服务的中间件&#xff0c;由阿里巴巴中间件团队开发&#xff0c;是阿里巴巴B2B前台应用访问数据库的统一入口&#xff0c;目前已在github上开源。 Cobar的分布式方案是分库和分表&#xff0c;可以按照业务需求将数…

mysql 的基本表的应用_mysql数据库应用(五)----表的基本操作(创建,删除,显示)...

------------------------------表的基本概念------------------------------------------ 表是包含数据库中所有数据的数据库对象 表中的数据库对象包括列&#xff0c;索引&#xff0c;触发器 列&#xff1a;在具体创建表时&#xff0c;必须指定列的名字和数据类型 索引&#…

RC电路的频率响应、选频网络特性测试的分析与仿真

目录 7.1 目的 7.2 分析原理 7.3 仿真分析 7.4 注意事项 7.5 总结与思考 7.1 目的 1. 掌握系统频率特性曲线的测试方法。 2. 了解常用线性系统的选频特性和相移特性。 7.2 分析原理 1&#xff0e;系统的频率响应特性 从理论课程的学习中可知&#xff0c;系统…

RC电路时间常数的定义及计算

转自电子发烧友&#xff1a;http://www.elecfans.com/dianzichangshi/20171101573662.html 时间常数表示过渡反应的时间过程的常数。指该物理量从最大值衰减到最大值的1/e所需要的时间。对于某一按指数规律衰变的量&#xff0c;其幅值衰变为1/e倍时所需的时间称为时间常数。 …

实验报告:RC电路的充放电过程仿真实验

实验人员&#xff1a;田少军 韦其优 实验目的&#xff1a; 掌握Multisim软件对RC电路充放电过程的仿真方法&#xff0c;理解RC电路的充放电过程的特性和规律&#xff0c;加深对电容器和电阻器的使用和理解。 实验原理&#xff1a; RC电路是由一个电容和一个阻值串联而成的电…

RC电路充放电时间的计算

V0是电容上的初始电压值 V1是电容最终可以充到或者放到的电压值 Vt是t时刻电容上的电压值 VtV0(V1-V0)x[1-exp(-t/RC)] 这里的exp是以e为底的指数函数 上面的公式还可以写成 tRCxln[(V1-V0)/(V1-Vt)] 1.电压为E的电池通过R向初值为0的电容C充电&#xff0c;V00&#xff0c;V1E…

模拟电路知识点总结(详细版)--放大电路的频率效应(RC电路)

一、高通电路 1.1传输特性 A u A_u Au​ R R 1 j ω C \frac{R}{R \frac {1} { j \omega C}} RjωC1​R​   &#xff08;补充知识&#xff1a;j是复数域中的一个旋转因子&#xff09; 详细求解思路&#xff1a;   求解 A u A_u Au​就是要求输入与输出的关系。 所以 A…

RC电路 波形分析

在模拟及脉冲数字电路中&#xff0c;常常用到由电阻R和电容C组成的RC电路&#xff0c;在些电路中&#xff0c; 电阻R和电容C的取值不同、输入和输出关系以及处理的波形之间的关系&#xff0c;产生了RC电路的 不同应用&#xff0c;下面分别谈谈微分电路、积分电路、耦合电路、脉…

RC电路分析计算

RC电路有一个电容和一个电阻组成&#xff0c;可以是并联或者串联&#xff0c;可用作滤波&#xff0c;移相等。下面以RC串联电路为例计算分析电路的电流电压特性和频率特性。 RC串联电路 如上图所示&#xff0c;假设RC电路电源电压为Us&#xff0c;电容大小为C&#xff0c;电容两…

RC电路一阶线性微分方程

电路中一阶线性微分方程 在高等数学中&#xff0c;一阶微分方程求解过程需要先算出齐次的通解&#xff0c;然后再根据初始条件算出特解&#xff0c;计算与推理过程很是复杂。在我们学习电路的时候再遇到这个东西时&#xff0c;会因为之前复杂的求解方式严重打击自信心&#xf…

RC并联电路传递函数用MATLAb,RC电路(一)RC串联、并联电路详解

由电阻R和电容C组成的电路称为阻容电路,简称RC电路,这是电子电路中十分常见的一种电路,RC电路的种类和变化很多,需要认真学习,深入掌握。 RC串联电路 下图所示是RC串联电路,RC串联电路由一个电阻R1和一个电容C1串联而成。在串联电路中,电容C1在电阻R1后面或前面是一样的…

详解电路设计中的RC电路

​ 目录 一、什么是RC电路 二、RC充、放电电路 &#xff08;1&#xff09;RC充电电路 &#xff08;2&#xff09;RC放电电路 三、RC积分电路 &#xff08;1&#xff09;RC积分电路的作用 &#xff08;2&#xff09;电路图 四、RC微分电路 &#xff08;1&#xff09;R…

RC电路的充放过程C语言实现,RC电路的瞬态和稳态过程

RC电路的瞬态和稳态过程 以指数衰减方式进行运动变化,不仅在交流电路中有,在静电学及放射性衰变、原子核裂变中同样出现。在核物理与放射性研究中,半衰期是放射元素的一个特性常数,它与外界条件、元素状态、元素质量无关。在考古学、医学、环境保护学中,放射性元素半衰期这…

RC电路

&#xff08;1&#xff09;RC 串联电路   电路的特点&#xff1a;由于有电容存在不能流过直流电流&#xff0c;电阻和电容都对电流存在阻碍作用&#xff0c;其总阻抗由电阻和容抗确定&#xff0c;总阻抗随频率变化而变化。RC 串联有一个转折频率&#xff1a; f01/2πR1C1 …

RC并联电路

1电容充放电细节 电容是由一对普通的金属平板对组成的&#xff0c;假设上极板有四对正负电荷的粒子对。然后&#xff0c;突然在该电容两端加一个电源。由于电源正极带正电&#xff0c;电源正极成功吸引了两个上极板上的电子过去&#xff08;此时上极板有两个正电荷&#xff09…

一阶RC电路实验

实验六 一阶RC电路实验 一.实验目的 1.培训应用示波器测量电路暂响应过程的技能。观测RC一阶电路暂态过程的动态曲线&#xff0c;测量其时间常数及作为积分应用特性。 2. 观测RLC二阶电路暂态过程的三种状态轨迹&#xff0c;测量并分析其参数。 二.实验仪器和器材 1.实验仪…

RC电路讲解

R和C组成的电路非常多&#xff0c;应用也非常广泛&#xff0c;下面分别谈谈微分电路、积分电路、耦合电路、脉冲分压器以及滤波电路。 1. RC微分电路 如图1所示&#xff0c;电阻R和电容C串联后接入输入信号VI&#xff0c;由电阻R输出信号VO&#xff0c;当RC 数值与输入方波宽度…

RC电路(一)

1、RC充放电时间常数 在模拟/数字电路中&#xff0c;常常用到由电阻R和电容C组成的RC电路&#xff0c;R和C的取值不同&#xff0c;会导致输出波形和输入波形之间的关系也不同&#xff0c;由此也会产生不同的应用。 当t RC时&#xff0c;电容电压0.63E&#xff1b; 当t 2RC时&a…

RC电路知识讲解

RC电路是指由电阻R和电容C组成的电路&#xff0c;他是脉冲产生和整形电路中常用的电路。1.RC 1.RC充电电路 电源通过电阻给电容充电&#xff0c;由于一开始电容两端的电压为0&#xff0c;所以电压的电压都在电阻上&#xff0c;这时电流大&#xff0c;充电速度快。随着电容两端…

web安全之--UrlRewrite

最近在做一个项目&#xff0c;在做项目的过程中发现&#xff0c;由于自己的命名规范&#xff0c;显示在url地址栏中的信息如果不加修饰&#xff0c;很容易被人理解并且改写。如果让别人看不懂自己网站上的url地址栏的内容是不是非常好呢&#xff0c;于是自己便发时间去查找资料…