在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是否正确
女,喜甜食,甚胖!该女有一癖好:痛恨蚂蚁,见必杀之。问其故曰:这小东西,那么爱吃甜食,腰还那么细! 避孕的效果:不成功,便成“人”。 长大了娶唐僧做老公,能玩就玩一玩,不能玩就把他吃掉。 与时俱进,你我共赴高潮! 修养的艺术,其实就是说谎的艺术。 丑,但是丑的特别,也就是特别的丑!
页:
[1]