设为首页 收藏本站
查看: 563|回复: 0

[经验分享] Apache+svn+openldap+phpldapadmin方案操作日志

[复制链接]

尚未签到

发表于 2017-1-6 08:23:43 | 显示全部楼层 |阅读模式
1.方案说明 


  • apache作为前端访问入口和功能整合
  • svn的认证使用apache代理openLDAP完成
  • svn的权限和授权受限于svn本身的机制,目前任然使用其原生配置文件方式。
  • openLDAP提供用户身份认证数据提供和用户统一管理

2.环境及软件

2.1.操作系统准备

操作系统:centos-6.3 64位
因为在部署整个环境中经常需要安装一些系统的组件,所以,这里先配置好yum的仓库,便于后面安装设置。
yum仓库设置
1.centos-6.3安装包FTP准备
在网络内任务服务器上,解压操作系统的ISO文件(如:/pub/centos/6.3),并把对应的包文件夹暴露为FTP服务(访问地址如:ftp://192.168.30.33/pub/centos/6.3/x86_64/)
 
2.设置操作系统的yum仓库
# cd /etc/yum.repos.d/
# 如果文件不存在则创建文件:centos6.3_x86_64.repo
# touch centos6.3_x86_64.repo
# 使用VI编辑设置仓库
# vi centos6.3_x86_64.repo
  [centos6.3]
  name=centos6.3
  baseurl=ftp://192.168.30.33/pub/centos/6.3/x86_64/
  gpgcheck=0
  enabled=1
  gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
 
以上配置中,gpgcheck=0表示访问不需要验证;enabled=1表示本仓库可用。
 
3.安装必须的组件
# yum install openssl
# yum install gcc
 
如果后续在各软件安装过程中,出现错误提示需要依赖某组件或找不到某组件,请使用yum search 和 yum install 进行安装。
 
 

2.2.软件准备
  软件所有内网共享地址:\\192.168.30.202\public_resources\topic\apache_svn_openldap_phpldapadmin


  • httpd-2.2.21.tar.gz     (下载地址:http://apache.etoak.com//httpd/httpd-2.2.23.tar.gz )
  • subversion-1.7.9.tar.bz2
  • db-5.3.15.tar.gz(bdb)
  • openldap-2.4.35.tgz
  • phpldapadmin-1.2.3.zip
  • sqlite-amalgamation-3071602.zip
  # mkdir /data/packages
  # cd /data/packages
  拷贝或下载一下文件到/data/packages目录,待用。

3.安装openLDAP
  安装BDB
  LDAP采用openLDAP,因为其依赖DBD,所以我们先安装BDB。
  # cd /data/packages
  # tar -zxvf db-5.2.15.tar.gz 
  # db-5.3.15/build_unix
  # ../dist/configure
  # make
  # make install
  如果出现错误:configure: error: C compiler cannot create executables
  解决办法:yum install glibc-devel
  安装完成后,安装目录在:/usr/local/BerkeleyDB.5.3
  # 设置系统级动态链接
  # cd /etc/ld.so.conf.d
  # touch bdb.conf
  # echo /usr/local/BerkeleyDB.5.3/lib > bdb.conf
  # ldconfig
  安装openLDAP
  # cd /data/packages
  tar -xzvf openldap-2.4.35.tgz
  cd openldap-2.4.35
  ./configure --prefix=/usr/local/openldap CPPFLAGS="-I/usr/local/BerkeleyDB.5.3/include" LDFLAGS="-L/usr/local/BerkeleyDB.5.3/lib" 
  make depend
  make
  make install
  安装完成后目录在:/usr/local/openldap/
  配置openLDAP
  # 新建LDAP数据存储目录
  # mkdir /data/openldap/data
  openLDAP一般只需要配置:/usr/local/openldap/etc/openldap/slapd.conf 文件,主要是设置根,认证,名称等基础信息。如下:
  # vi /usr/local/openldap/etc/openldap/slapd.conf

# 默认的schema只有core,增加两个常用的schema,用于建立用户信息。
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
#######################################################################
# BDB database definitions
#######################################################################
# 使用bdb作为存储
database        bdb
# 顶层节点DN配置
suffix          "dc=feinno,dc=com"
# 管理员DN
rootdn          "cn=Manager,dc=feinno,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoid.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
# 密码,这里设置的是123456,请根据其情况设置
rootpw          123456
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
# 存储路径
directory       /data/openldap/data
# Indices to maintain
# 索引配置
index   objectClass     eq
 以上内容是需要修改和配置的,其他参数主要是权限配置,可以暂不配置。完成配置后,请保持退出。
  # 配置环境变量,用户后续的LDAP操作
  # vi /etc/profile
  在文件结尾加入:
  export PATH=$PATH:/usr/local/openldap/bin
  保持退出
  # soruce /etc/profile
  启动openLDAP
  # /usr/local/openldap/libexec/slapd
  # 停止openLDAP
  # killall slapd
  验证和使用openLDAP
  1.命令行方式使用ldif文件建立根组织DN
  # mkdir /data/openldap/ldif
  # cd /data/openldap/ldif
  # vi feinno.com.ldif

dn:dc=feinno,dc=com
objectclass:top
objectclass:dcObject
objectclass:organization
o:feinno
dc:feinno
 保存退出
  # 命令方式创建根DN entity:"dc=feinno,dc=com",使用rootdn的账户和密码(前面slapd.conf文件中配置)
  # ldapadd -x -D "cn=Manager,dc=feinno,dc=com" -W -f feinno.com.ldif
  Enter LDAP Password:
  adding new entry "dc=feinno,dc=com"
  ......
  # 查询已经创建的entity
  # ldapsearch -x -b 'dc=feinno,dc=com' '(objectclass=*)'
  ......
  2.使用桌面客户端工具
  推荐使用桌面工具:


  • LDAPAdmin 下载地址:http://www.ldapadmin.org/
  • Apache LDAP studio  下载地址:http://directory.apache.org/apacheds/
  这里使用LDAPAdmin 做操作演示。
  我们Demo的LDAP结构如下:
  
DSC0000.png
 
  建立连接:
  
DSC0001.png
 
  创建组织结构单元:
  
DSC0002.jpg
 
  建立部门节点:
  
DSC0003.png
 建立用户:
  
DSC0004.png
 
  3.使用B/S的phpLDAPAdmin
  请参见后面第7节
 

4.安装Apache
  安装
apache是整个SVN和LDAP的前端,这里打开其动态加载功能(DSO)
# yum install openldap-devel zlib-devel expat-devel
# cd /data/packages
# tar -xzvf httpd-2.2.23.tar.gz
# cd httpd-2.2.23
# ./configure --prefix=/usr/local/apache2 --enable-so --enable-mods-shared=all --enable-dav=share --enable-dav-fs --with-ldap --enable-ldap --enable-authnz-ldap
# make
# make install
安装完成后,目录在:/usr/local/apache2
# 设置环境变量,方面后面操作
 
  # vi /etc/profile
  在文件结尾加入:
  export PATH=$PATH:/usr/local/apache2/bin
  保持退出
  # soruce /etc/profile
 
基本配置
主配置文件:/usr/local/apache2/conf/httpd.conf
1、修改ServerName,防止DNS查找失败错误
  # If your host doesn't have a registered DNS name, enter its IP address here.
  ServerName localhost:80
 
2、打开server-status配置,支持apache 状态检查。
请确保主配置文件中存在配置行:
  LoadModule status_module modules/mod_status.so
在主配置文件结尾加入:
  ExtendedStatus On
  <Location /server-status>
  SetHandler server-status
  Order allow,deny
  Allow from all
  </Location>
  系统服务和自启动
  # apache 服务和自启动
  Apache加入到系统服务里面:
  # cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd
  修改httpd
  在文件头部加入如下内容:
  ###
  # Comments to support chkconfig on RedHat Linux
  # chkconfig: 2345 90 90
  # description:http server
  ###
  保存
  # chkconfig --add httpd
  # chkconfig --level 35 httpd on
  等级0表示:表示关机
  等级1表示:单用户模式
  等级2表示:无网络连接的多用户命令行模式
  等级3表示:有网络连接的多用户命令行模式
  等级4表示:不可用
  等级5表示:带图形界面的多用户模式
  等级6表示:重新启动
  验证
  # apachectlstart
  # 打开浏览器访问:http://ip
  如果现实:It work! 表示安装成功。
  # 关闭apache,等待配置
  # apachectl stop
 
 

5.安装SVN
  安装
# subversion1.7.9的编译依赖 SQLITE的算法
# cd /data/packages
# tar -xjvf subversion-1.7.9.tar.bz2
# cd subversion-1.7.9
# mkdir sqlite-amalgamation
# cd..
# unzip sqlite-amalgamation-3071602.zip
# cp sqlite-amalgamation-3071602/sqlite3.c subversion-1.7.9/sqlite-amalgamation/
# cd subversion-1.7.9
# ./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2
# make
# make install
安装成功后,安装目录在:/usr/local/subversion
# 设置环境变量
 
  # vi /etc/profile
  在文件结尾加入:
  export PATH=/usr/local/subversion/bin:$PATH
  保持退出
  # soruce /etc/profile
  创建和配置仓库
  # 创建SVN仓库目录
  # mkdir /data/svn/repositories
  # cd /data/svn/repositories
  # 创建测试工程
  # svnadmin create project1
# svnadmin create project2
# svnadmin create project3
# svnadmin create project4
# svnadmin create project5
# ls
  project1  project2  project3  project4  project5  project6
  # 创建authz.conf文件,作为工程权限控制的配置文件。(配置语法请参考:http://svnbook.red-bean.com/en/1.5/svn.serverconfig.pathbasedauthz.html)
  # vi authz.conf

[groups]
admin=zhangpu
[/]
@admin=rw
*=
#*=r

[project1:/]
zhangpu=r
libingyang=r
*=
 
完成以上后,待用,后续使用apache整合。
 

6.配置apache+svn+ldap
  # 采用HOST方式配置,打开主配置文件httpd.conf文件中对host配置的引用注释。
  # vi /usr/local/apache2/conf
  Include conf/extra/httpd-vhosts.conf
  保存退出
  # 配置vhost
  # cd /usr/local/apache2/conf/extra
  # vi httpd-vhosts.conf

NameVirtualHost *:80
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
<VirtualHost *:80>
ServerAdmin xxxx@gmail.com
ServerName svn.acooly.com
ErrorLog logs/svn.feinno.com-error_log
CustomLog logs/svn.feinno.com-access_log common
<Location /svn>
# SVN配置
DAV svn
SVNListParentPath on
SVNParentPath /data/svn/repositories/
AuthzSVNAccessFile /data/svn/repositories/authz.conf
# 在ldap找不到账号的情况下可以使用其它的认证方式(如,密码文件)
AuthzLDAPAuthoritative off
# openLDAP的管理账户
AuthLDAPBindDN "cn=Manager,dc=feinno,dc=com"
AuthLDAPBindPassword 123456
AuthBasicProvider ldap
# 认证数据来源:"ou=rd,dc=cq,dc=feinno,dc=com" 下所有子entity的uid作为认证用户名
AuthLDAPURL "ldap://localhost:389/ou=rd,dc=cq,dc=feinno,dc=com?uid?sub?(objectClass=*)"
# http 基本认证
AuthType Basic
AuthName "feinno Subversion repository"
Require valid-user
# 设置目录权限,实现列表所有工程目录
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
</Location>
</VirtualHost>
完成配置后,保存退出。

# 启动验证
# service httpd start
使用浏览器访问:http://ip/svn/
输入你在LDAP中设置的账户名(UID)和passwd
 

7.安装php和phpldapadmin
  安装配置PHP
# yum install libxml2
# yum install libxml2-devel -y
# cd /data/packages
# tar -xzvf php-5.3.22.tar.gz
# cd php-5.3.22
# ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php5 --with-ldap --with-gettext
# make
# make install
 安装完成后的目录在:/usr/local/php5
# 拷贝默认的配置文件
# cp /data/packages/php-5.3.22/php.ini-development /usr/local/lib/php.ini
# 如果在配置的时候出现如下问题一般是因为64位操作系统造成的原因,请如下操作解决。
configure: error: Cannot find ldap libraries in /usr/lib
# cp -frp /usr/lib64/libldap* /usr/lib/
 
# 停止apache配置支持php
# service httpd stop
# vi /usr/local/apache2/conf/httpd.conf

LoadModule php5_module        modules/libphp5.so
# 在文件中找到<IfModule dir_module>节点,在后面增加目录默认页面:index.php
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
# 在文件结尾增加对php文件的支持
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.ph(p[2-6]?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
  保存退出
 
安装phpldapadmin
下载1.2.3版本,直接解压到apache的相关目录。修改config/config.php文件配置LDAP相关参数。
# cd /data/packages/phpldapadmin-1.2.3.zip /usr/local/apache2/htdocs/
# cd /usr/local/apache2/htdocs/
# unzip phpldapadmin-1.2.3.zip
# mv phpldapadmin-1.2.3 phpldapadmin
# cd /usr/local/apache2/htdocs/phpldapadmin/config
# 修改phpldapadmin参数
# cp config.php.example config.php
# vi config.php

# ldap服务器地址
$servers->setValue('server','host','127.0.0.1');
# ldap服务端口
$servers->setValue('server','port',389);
# ldap根实体dn
$servers->setValue('server','base',array('dc=feinno,dc=com'));
# ldap管理用户名
$servers->setValue('login','bind_id','cn=Manager,dc=feinno,dc=com');
# ldap管理用户密码
$servers->setValue('login','bind_pass','123456');
  保存退出。
  从新启动apache,验证phpldapadmin
  # service httpd start
  访问:http://ip/phpldapdmin
  使用ldap的管理账户登录。
  
DSC0005.png
 
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-324456-1-1.html 上篇帖子: Apache的rewrite做URL重写 下篇帖子: Apache FileUpload文件上传组件API解析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表