本节书摘来自异步社区《Linux/UNIX OpenLDAP实战指南》一书中的第2章,第2.3节,作者:郭大勇著,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.3 Linux平台安装
2.3.1 yum用途及语法
yum仓库主要用于解决软件包依赖关系(这里以本地yum源为例进行配置)。
yum仓库配置文件的语法及参数如下。
1.yum配置文件语法
yum配置文件语法如下。
# cat /etc/yum.repos.d/define.repo
[repo_name]
name=
baseurl=
enabled=
gpgcheck=
gpgkey=
2. yum配置文件语法解释
yum配置文件的语法解释如下。
[repo_name]
含义:[ ]内是yum仓库的名称,用于区别不同yum仓库及功能
name=yum server
含义:name=后面跟的是仓库描述的信息
baseurl=path
含义:baseurl=后面跟仓库的路径
enabled=[0|1]
含义:enabled=后面跟的数字表示是否启用该仓库,[1]表示启用,[0]表示禁用
gpgcheck=[0|1]
含义:gpgcheck=后面跟的数字表示是否检查软件包的md5sum,用于验证软件包的安全性,[1]表示检查,[0]表示不检查。
gpgkey=path
含义:gpgkey=后面跟软件包所使用的签名,一般启用gpgcheck时才配置。例如:
gpgkey=/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
3.yum基本命令参数介绍
读者可以通过man yum来详细了解每个参数的具体说明,在此不做过多解释。
* install package1 [package2] [...]
软件包的安装
* update [package1] [package2] [...]
软件包的更新
* check-update
检测最新的软件包
* remove | erase package1 [package2] [...]
卸载安装的软件包
* list [...]
查看安装的软件包列表
* info [...]
查看软件包的相关信息
* provides | whatprovides feature1 [feature2] [...]
查看文件由哪个软件包提供
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
清除缓存信息
* makecache
重建缓存文件,一般新建yum仓库时以及使用clean参数时,使用makecache重建缓存
* groupinstall group1 [group2] [...]
以组的形式安装软件包组件
* groupupdate group1 [group2] [...]
更新组相关软件包
* grouplist [hidden] [groupwildcard] [...]
获取已安装和没安装的软件包组件
* groupremove group1 [group2] [...]
移除软件包组件
* groupinfo group1 [...]
查看软件包组件相关信息
* search string1 [string2] [...]
以软件包名称在仓库中进行搜索
* localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
本地安装软件包
* localupdate rpmfile1 [rpmfile2] [...]
本地更新软件包
2.3.2 以软件包形式安装
为了简化OpenLDAP的安装复杂度,作者建议使用光盘自带的rpm软件包安装。除非有特殊需求,需要定制安装,才使用编译方式安装OpenLDAP。
1.安装操作步骤
要以软件包rpm形式安装OpenLDAP,步骤如下。
1)配置yum源。
2)安装OpenLDAP组件。
3)初始化OpenLDAP配置。
4)加载slapd进程。
5)获取slapd信息。
2.配置yum仓库
要配置yum仓库,需要先挂载光盘镜像,命令如下。
# mount /dev/cdrom /mnt
配置yun仓库的命令如下:
# cat >> /etc/yum.repos.d/rhel-source.repo << EOF
[source-cdrom]
name=software
baseurl=file:///mnt
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
EOF
3.清除缓存并创建缓存
清除和创建缓存的命令如下:
# yum clean all && yum makecache
4.安装OpenLDAP组件
安装OpenLDAP组件的命令如下。
# yum install openldap openldap-servers openldap-clients openldap-devel compat-openldap –y
此时通过光盘自带的软件包安装OpenLDAP组件完成。
5.初始化OpenLDAP配置
初始化OpenLDAP配置的命令如下:
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
# chown –R ldap.ldap /etc/openldap/
# chown –R ldap.ldap /var/lib/ldap
6.启动LDAP进程slapd
OpenLDAP软件安装完成后,要使用它,需要启动slapd进程来调用程序:
# service slapd restart
Stopping slapd: [FAILED]
Starting slapd: [ OK ]
# chkconfig slapd on
7.获取OpenLDAP默认监听的端口
要获取OpenLDAP默认监听的端口,命令如下:
[root@mldap01 ~]# netstat -ntplu | grep -i :389
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 1567/slapd
tcp 0 0 :::389 :::* LISTEN 1567/slapd
默认OpenLDAP服务所使用的端口为389,此端口采用明文传输数据,数据信息得不到保障。所以可以通过配置CA及结合TLS/SASL实现数据加密传输,所使用端口为636,后面章节会详细介绍实现过程。
8.获取OpenLDAP进程的状态
要获取OpenLDAP进程的状态,命令如下:
[root@mldap01 ~]# ps aux | grep slapd | grep -v grep
ldap 1567 0.0 1.8 1128948 71880 ? Ssl Nov27 0:07 /usr/sbin/slapd -h ldap:/// ldapi:/// -u ldap
至此,通过光盘自带的软件包安装OpenLDAP就结束了。后续的操作就是配置并添加条目,这部分在本章最后通过案例进行介绍。
2.3.3 通过源码编译安装
1.通过源码编译安装OpenLDAP软件准备工作
由于编译安装OpenLDAP需要数据库支持,因此OpenLDAP软件后端数据库可采用Berkeley DBBDB、Oracle、MySQL、MariaDB、GDBM等数据库软件实现数据的存储。默认OpenLDAP采用Berkeley DB数据库作为后端存储引擎,而且OpenLDAP对Berkey DB的版本有一定要求,以OpenLDAP 2.4软件版本为例,需要Berkeley DB 4.4版本以上,所以在编译OpenLDAP源码包时需要先下载Brekeley DB源码包,并进行编译安装即可。
Berkeley DB是由美国Sleepycat Software公司开发的开源数据库系统,具有高性能、嵌入式数据库编程库,可存取任意类型的键(key)/值(value)对,一键可以存储多个值,且支持在线并发量大的数据查询请求。
2.安装步骤
根据环境需求,读者可以下载相应的源码包进行编译安装,作者所使用的系统为红帽Linux 6.5版本,Berkey DB源码包版本为4.6.21。安装步骤如下。
1)获取源码包。
2)安装编译所依赖的环境。
3)解压并定义安装属性。
4)编译及编译安装源码包。
5)添加库文件及头文件。
3.编译安装Berkeley DB源码包
获取Brekeley DB源码包。
可以从http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads
获取Berkeley DB源码包。
要点:
在编译安装任何开源软件时,解压完成后都会在相应的目录下生成INSTALLT和README文档,里面介绍安装方法以及注意事项,同样可以到官方文档查看软件的安装手册,提高用户安装的灵活性,降低编译复杂度。
编译安装前,先通过yum安装并解决编译OpenLDAP及BDB所依赖的软件包。# yum install libtool-ltdl libtool-ltdl-devel gcc openssl openssl-devel -y 安装依赖的软件包
解压db-4.6.21软件包至指定目录。# tar xfzv db-4.6.21.tar.gz -C /usr/local/src
解压Berkeley DB源码包到/usr/local/src目录下,此时会在该目录下生成build_unix目录,然后执行下列命令进行配置安装即可。
定义编译安装属性。
# cd /usr/local/src/db-4.6.21/build_unix && mkdir /usr/local/BDB
# ../dist/configure --prefix=/usr/local/BDB
================================================================== //华丽的省略线
configure: creating ./config.status
config.status: creating Makefile
config.status: creating db_cxx.h
config.status: creating db_int.h
config.status: creating clib_port.h
config.status: creating include.tcl
config.status: creating db.h
config.status: creating db_config.h
通过--prefix指定Berkeley DB安装路径,读者可通过../dist/configure –help命令获取Berkeley DB详细的配置选项。
编译定义安装属性及编译安装到指定的属性中。
# make && make install //编译并进行安装
========================================================================= //华丽的分割线
Installing DB utilities: /usr/local/BDB//bin ...
cp -p .libs/db_archive /usr/local/BDB//bin/db_archive
cp -p .libs/db_checkpoint /usr/local/BDB//bin/db_checkpoint
cp -p .libs/db_codegen /usr/local/BDB//bin/db_codegen
cp -p .libs/db_deadlock /usr/local/BDB//bin/db_deadlock
cp -p .libs/db_dump /usr/local/BDB//bin/db_dump
cp -p .libs/db_hotbackup /usr/local/BDB//bin/db_hotbackup
cp -p .libs/db_load /usr/local/BDB//bin/db_load
cp -p .libs/db_printlog /usr/local/BDB//bin/db_printlog
cp -p .libs/db_recover /usr/local/BDB//bin/db_recover
cp -p .libs/db_stat /usr/local/BDB//bin/db_stat
cp -p .libs/db_upgrade /usr/local/BDB//bin/db_upgrade
cp -p .libs/db_verify /usr/local/BDB//bin/db_verify
Installing documentation: /usr/local/BDB//docs ...
添加Berkeley DB相关库文件。
添加的库文件和头文件主要作为其他程序编译安装所调用的库文件和头文件。
# cat >> /etc/ld.so.conf.d/bdb.conf << EOF
/usr/local/BDB/lib/
EOF
# ldconfig –v //重新让内核读取库文件
通过在ld.so.conf.d目录下创建以.conf配置文件加载Berkeley DB的库文件,同样也可在ld.so.conf里面添加配文件进行加载,ld.so.conf是系统动态链接库配置文件。配置完成后,使用ldconfig –v重新加载库文件,使系统内核重新识别,然后在编译OpenLDAP时,才能找到Berkeley DB相关库文件。
添加Berkeley DB相关头文件。
# ln -sv /usr/local/BDB/include /usr/include/bdb
`/usr/include/bdb' -> `/usr/local/BDB/include'
至此,恭喜您!Berkeley DB编译安装到此就完成了。下面我们一起学习如何编译安装OpenLDAP软件。但读者一定注意,在编译安装OpenLDAP软件时,要确认后端数据库是否安装,例如Berkeley DB,否则会提示找不到数据库等错误。
4.编译安装OpenLDAP源码包
获取OpenLDAP源码包。
读者可通过http://www.openldap.org/software/download/获取OpenLDAP
源码包。
解压OpenLDAP源码包至指定目录。
# tar xf openldap-2.4.15.tgz -C /usr/local/src/
# cd /usr/local/src/openldap-2.4.15/
# ldconfig –v
编译安装OpenLDAP软件时,需要输出库文件(include和lib的路径),否则编译时会提示BDB数据库版本不兼容而中断编译操作。
定义编译安装属性。
# ./configure --prefix=/usr/local/openldap2.4
Making servers/slapd/backends.c
Add config ...
Add ldif ...
Add monitor ...
Add bdb ...
Add hdb ...
Add relay ...
Making servers/slapd/overlays/statover.c
Add seqmod ...
Add syncprov ...
Please run "make depend" to build dependencies
# make depend
编译安装OpenLDAP软件。
# make && make test &> /dev/null && make install
installing slapacl.8 in /usr/local/openldap2.4/share/man/man8
installing slapadd.8 in /usr/local/openldap2.4/share/man/man8
installing slapauth.8 in /usr/local/openldap2.4/share/man/man8
installing slapcat.8 in /usr/local/openldap2.4/share/man/man8
installing slapd.8 in /usr/local/openldap2.4/share/man/man8
installing slapdn.8 in /usr/local/openldap2.4/share/man/man8
installing slapindex.8 in /usr/local/openldap2.4/share/man/man8
installing slappasswd.8 in /usr/local/openldap2.4/share/man/man8
installing slaptest.8 in /usr/local/openldap2.4/share/man/man8
make[3]: Leaving directory `/usr/local/src/openldap-2.4.15/doc/man/man8'
make[2]: Leaving directory `/usr/local/src/openldap-2.4.15/doc/man'
make[1]: Leaving directory `/usr/local/src/openldap-2.4.15/doc'
执行make test时,可能需要花点时间进行检测,如果存在错误make test会提示错误类型。所以作者建议读者在编译安装时,一定要执行make test进行检测,从而保证软件的稳定性和可靠性。
添加OpenLDAP库文件。
# cat >> /etc/ld.so.conf.d/ldap.conf << EOF
/usr/local/openldap2.4/lib/
EOF
# ldconfig –v
添加OpenLDAP头文件。
# ln -sv /usr/local/openldap2.4/include /usr/include/ldap2.4
`/usr/include/ldap2.4' -> `/usr/local/openldap2.4/include'
至此,恭喜您!OpenLDAP编译安装就完成了。
2.3.4 错误分析、解决
如果在执行make时报如下错误,可以通过以下方法进行解决。
getpeereid.c: In function `lutil_getpeereid’:
getpeereid.c:65: error: storage size of ‘peercred’ isn’t known
make[2]: *** [getpeereid.o] Error 1
make[2]: Leaving directory `/usr/local/src/openldap-2.4.15/libraries/liblutil'
make[1]: *** [all-common] Error 1
make[1]: Leaving directory `/usr/local/src/openldap-2.4.15/libraries'
make: *** [all-common] Error 1
错误分析
在编译时没有输出库文件和lib的路径,所以在编译时会出现Error,可通过下面的方法进行解决。
解决方法
# export CPPFLAGS="-I/usr/local/BDB/include -D_GNU_SOURCE"
# make //编译前准备相关属性,如果没有配置任何属性信息,就会使用默认定义的属性
# make install //编译安装