创建目录下载安装所需程序
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
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
#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