qder 发表于 2013-8-15 09:08:57

在RHEL6.3上实现SVN+LDAP+APACHE(真实项目)

环境:AD:windows 2008 R2 x86_64:192.168.101.12:gz.newp.localSVN:RHEL 6.3 x86_64:192.168.130.25仓库:/data/gz/svn/it
一. 配置好yum源详细请看我的另一篇文章《RHEL常用源》
二. 安装
yum install httpd httpd-devel subversion mod_dav_svn
a. 确定已经安装了svn模块:mod_dav_svn
#cd /etc/httpd/modules
#ls | grep svn
mod_authz_svn.so
mod_dav_svn.so如果要确认是否成功的安装了svn可以通过如下的命令进行验证:
svn –version
b. 确认apache能正常启动。测试Apache是否可以正常启动:#service httpd start在浏览器中访问:http://localhost, 如果能看到Apache的页面,则说明Apache已经正常启动。

c. 进入到/etc/httpd/conf.d目录下用vim打开subversion.conf配置文件
一定要保证下面的两句话存在于配置文件中,否则无法加载svn的模块(一般用YUM安装的话,下面两个模块在安装的过程中已经改好了)。LoadModule dav_svn_module   modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
三. 建立仓库#mkdir -p /data/gz/svn#chown -R apache:apache /data                        //必须要把目录权限给apache,否则会报http 500内部服务器错误#svnadmin create /data/gz/svn/it#cd /data/gz/svn/it#lsconf   dav   db   format   hooks   locks   README.txt如果目录下有这些文件,表示仓库创建成功。
四. 编辑/etc/httpd/conf/http.d# vim /etc/httpd/conf/http.d
[*]NameVirtualHost *
[*]<VirtualHost *>
[*]         DocumentRoot /data/gz/svn/baomiban         //这里最好不要指向你所有的仓库,如果你指向了/data/gz/svn ,那么apache就不知道时候将请求提交给subversion模块
[*]         ServerName svn.newp.local
[*]         LogLevel warn
[*]         ServerSignature on
[*]      <Directory “/data/gz/svn”>
[*]                     Options Indexes FollowSymLinks MultiViews
[*]                     Order allow,deny
[*]                     allow from all
[*]         </Directory>
[*]</VirtualHost>


五. 编辑ldap配置文件
# vim/etc/openldap/ldap.conf
添加一行
REFERRALS       off

六. 尝试用ldapsearch连接AD域控
# ldapsearch -x -b “CN=administrator,CN=Users,DC=gz,DC=newp,DC=local” -D “svnuser@gz.newp.local” -W

这个命令的意思是:
使用svnuser的身份去查询gz.newp.local域中的Users这个OU里的administrator信息,然后返回一大堆东西,比较有用的就是其中的sAMAccountName,这个就是下文AuthLDAPURL中用到的关键字

命令的详细用法请点击《查询windows AD域的DN》查看

七. 修改httpd.conf
就一下内容添加到上面新建的虚拟主机中

[*]<Location “/svn”>
[*]       SVNParentPath “/data/gz/svn”      //仓库的父目录
[*]       SVNListParentPath on                        //时候允许理出仓库的父目录
[*]       AuthBasicProvider ldap                      //身份验证的提供方式
[*]       AuthType Basic
[*]       AuthzLDAPAuthoritative off
[*]       AuthName “itrepo”                              //验证时会出现的名字,随便写一个,不影响
[*]       AuthLDAPURL “ldap://192.168.101.12:389/OU=Users,DC=gz,DC=newp,DC=local?sAMAccountName?sub?(objectClass=*)” NONE                           //这句的意思是,gz.newp.local域中的Users的OU里的用户才能使用这个仓库
[*]       AuthLDAPBindDN “svnuser@gz.newp.local”          //ldap查询时使用的身份,在域中随便建个普通用户就行
[*]       AuthLDAPBindPassword 123456a!                           //svnuser这个用户的域密码
[*]       AuthSVNAccessFile /data/gz/svn/access.acl         //仓库的权限配置文件,ldap是身份验证,这个是权限验证,规定你时候对某个仓库或目录由读写的权限,名字可以随便取
[*]       require valid-user
[*]</Location>

重启httpd
# service httpd restart

八. 修改access.acl
# vim /data/gz/svn/access.acl

* = r
rajaruan = rw


[/]                              这个表示所有仓库的根目录
                        这个表示A仓库的根目录
    这个表示A仓库中,rajaruan这个目录

错误汇总:一.http 500 内部服务器错误解决办法:1.检查你的域用户是否在OU=Users,DC=gz,DC=newp,DC=local这个OU里2.检查apache是否有权限3.检查AuthLDAPBindDN指定的用户时候存在
二.http 403 禁止访问解决办法:1.检查access.acl文件,是否具有权限
三.http 401 未授权查一下apache的error_log user rajaruan not found: /svn/it

这个应该是ldap没有连接到域控制器,或者找不到OU=Users,DC=gz,DC=newp,DC=local这个OU检查一下你的AuthLDAPURL是否正确

shanghaipc 发表于 2013-8-15 11:46:50

女,喜甜食,甚胖!该女有一癖好:痛恨蚂蚁,见必杀之。问其故曰:这小东西,那么爱吃甜食,腰还那么细!

xq8995209 发表于 2013-8-15 14:43:45

避孕的效果:不成功,便成“人”。

q36988 发表于 2013-8-16 04:11:09

长大了娶唐僧做老公,能玩就玩一玩,不能玩就把他吃掉。

qq524061227 发表于 2013-8-16 18:21:39

与时俱进,你我共赴高潮!

359025439 发表于 2013-8-16 23:14:53

修养的艺术,其实就是说谎的艺术。

xiaui520 发表于 2013-8-17 05:47:08

丑,但是丑的特别,也就是特别的丑!
页: [1]
查看完整版本: 在RHEL6.3上实现SVN+LDAP+APACHE(真实项目)