创立目录下载安装所需程序
yum -y install httpd
yum -y install subversion
yum -y install php
yum -y install mod_dav_svn
创立代码仓库
svnadmin create /home/svn/product
chown -R apache:apache /home/svn/product/
cd /home/svn && cp -a product/conf/* ./
#批改 /var/www 的权限为 apache,后续都要应用 apache 的权限,否则权限会失败
rm -rf passwd && touch passwd
#多仓库,把 product 上面的配置文件挪动到 svn 目录来实现
htpasswd /home/svn/passwd admin
设置 admin 的明码()
vi /home/svn/authz
admin = admin
[/]
@admin = rw
[product:/]
@admin = rw
* = r
#批改访问控制的配置文件
#原始文件的 `21 行 ` 用于设置用户组,要求在 `/var/www/svn/passswd` 文件内必须有此用户,每两个用户之间用 ` 英文逗号 ` 隔开。能够设置多个用户组,同一用户尽量不要在多个组中。#原始文件 `25 行 ` 用户设置根门路权限:#`*` 为 ` 所有用户 `,#`@XXX` 为 ` 用户组 `,#`XXX` 为 ` 单个用户 `。#**“=”后 **
#` 空 ` 代表 ` 不可读写 `
#`r` 代表 ` 只读 `,#`rw` 代表 ` 读写 `。cp /etc/httpd/conf.modules.d/10-subversion.conf /etc/httpd/conf.d/subversion.conf
installl iF.SVNAdmin
cd /resource &&wget http://sourceforge.net/projects/ifsvnadmin/files/svnadmin-1.6.2.zip/download
unzip download
#下载解压,iF.SVNAdmin 应用程序是您的 Subversion 受权文件的基于 Web 的 GUI
#这个是 php 写的,所以后面装置了 php
cp -r iF.SVNAdmin-stable-1.6.2/ /var/www/html/svnadmin
#将 iF.SVNAdmin 拷贝到 Apache 目录
chmod -R 777 /var/www/html/svnadmin/data/
chown -R apache:apache /var/www/html/svnadmin/
chown -R apache:apache /home/svn/
yum -y install php-ldap
yum -y install mod_ldap
#ldap 须要这两个模块的反对
systemctl restart httpd
subversion.conf
[root@prometheus-work-beijing ~]# cat /etc/httpd/conf.d/subversion.conf
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_user_module moduels/mod_authz_user.so
<Location /svn/>
DAV svn
SVNParentPath /home/svn
SVNListParentPath on
AuthBasicProvider ldap
AuthType Basic
AuthName "Subversion repository"
AuthLDAPURL "ldap://10.3x.14x.1x:389/OU=xxxxngshu-sh,DC=xxxongshu,DC=sh?sAMAccountName?sub?(objectClass=*)"
AuthzSVNAccessFile /home/svn/authz
AuthLDAPBindDN "CN=it_ldap,OU=ServiceAccount,DC=xxxxxxxhu,DC=sh"
AuthLDAPBindPassword "xxx"
Require valid-user
</Location>
#systemctl restart httpd
赋权限,重启配置失效
http://10.3x.1xx.x8/svnadmin/…
登录配置此处配置 ldap
Subversion 受权文件:/home/svn/authz
# 重启配置失效
svnserve -d -r /home/svn
#svn 的启动命令,没写端口默认 3690,- r 写 svn 门路,#svnserve -d -r /home/svn --listen-port=3690 --log-file /tmp/svn.log &
#重启须要 ps -aux |grep svn
#而后手动 kill
svn 配置 ldap
装置 sasl
yum -y install sasl
批改认证形式
vim /etc/sysconfig/saslauthd #很多人发现自己机器没有这个文件,你就写着三行就够了
将 MECH=pam 批改成 MECH=ldap
[root@prometheus-work-beijing ~]# cat /etc/sysconfig/saslauthd
SOCKETDIR=/run/saslauthd
MECH=ldap
FLAGS=
创立 /etc/saslauthd.conf 文件,写入以下内容
[root@prometheus-work-beijing ~]# cat /etc/saslauthd.conf
ldap_servers: ldap://10.x1.14x.1x:389
ldap_bind_dn: CN=it_ldap,OU=ServiceAccount,DC=xxxu,DC=sh
ldap_bind_pw: xxxxxx
ldap_search_base: OU=xixxxhu-sh,DC=xixaxxshu,DC=sh
#ldap_filter: sAMAccountName=%s
ldap_filter: sAMAccountName=%u
ldap_password_attr: userPassword
[root@prometheus-work-beijing ~]#
创立 /etc/sasl2/svn.conf 文件,写入以下内容
vim /etc/sasl2/svn.conf
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
[root@prometheus-work-beijing ~]# cat /home/svn/svnserve.conf
[general]
anon-access = none #匿名拜访的权限,能够是 read,write,none, 默认为 read
auth-access = write #使受权用户有写权限
password-db = passwd #明码数据库的门路
authz-db = authz #访问控制文件
realm = repo
[sasl]
use-sasl = true
批改 SVN svnserve.conf 配置文件
我的 SVN 仓库地址为 /opt/svn/repo,所以服务器配置文件门路为 /home/svn/code/conf/svnserve.conf
启用如下配置
vim /home/svn/code/conf/svnserve.conf
use-sasl = true
重启 saslauthd 服务
systemctl restart saslauthd