svn是近年来使用最为广泛的版本管理软件。不过由于虽然后在用户认证使用等方法非常的便捷,不过如果对用户和权限能有一个web的管理界面,相信很多人还是乐意通过web界面去配置的。svn的后台管理软件非常多,如svn-web-admin、pysvnmanager以及今天要提到的if.svnadmin 。

iF.SVNAdmin 是一个基于 Web 的,用来管理 Subversion 的认证文件的项目。无需数据库支持,直接对 Subversion 的认证文件和用户认证文件进行设置,支持 LDAP,同时也可以用来创建和删除版本库,以及对版本库进行浏览。

一、下载安装

目前最新的版本是1.6.2

1wget http://jaist.dl.sourceforge.net/project/ifsvnadmin/svnadmin-1.6.2.zip
2unzip svnadmin-1.6.2.zip

在apache的conf.d中增加如下配置文件:

 1# vim svnadmin.conf
 2<virtualhost>
 3    ServerAdmin admin@361way.com
 4    ServerName svnadmin.361way.com
 5    DocumentRoot "/var/www/html/svnadmin"
 6    <directory>
 7        Order deny,allow
 8        Deny from all
 9       Allow from 192.168.10.0/24
10    </directory>
11</virtualhost>

配置完成后,重载apache 并将刚刚解包的文件放到conf配置文件中指定的路径。通过svnadmin.361way.com防问,即可通过web方式配置安装。直接打开时,可能报如下错误:

1Error: Could not copy configuration file template. Require write permission (777) to "data" folder and all containing files.
2#0 /var/www/svnadmin/index.php(20): include_once()
3#1 {main}

出现上面错误时,直接赋权限就OK了:

1cd /var/www/svnadmin/
2chmod 777 data

svnadmin

如上图所示,通过配置相关项就可以了。如果使用的是ldap认证,刚将use view provider type和Group view provider type项换成ldap 。完成配置后,保存配置即可。

二、最终配置及管理员

最终完成后的配置文件如下:

 1#vim svnadmin/data/config.ini
 2[Common]
 3FirstStart=0
 4[Translation]
 5Directory=./translations/
 6[Engine:Providers]
 7AuthenticationStatus=basic
 8UserViewProviderType=ldap
 9UserEditProviderType=
10GroupViewProviderType=svnauthfile
11GroupEditProviderType=svnauthfile
12AccessPathViewProviderType=svnauthfile
13AccessPathEditProviderType=svnauthfile
14RepositoryViewProviderType=svnclient
15RepositoryEditProviderType=svnclient
16[ACLManager]
17UserRoleAssignmentFile=./data/userroleassignments.ini
18[Subversion]
19SVNAuthFile=/etc/httpd/conf/svnauthz.conf
20[Repositories:svnclient]
21SVNParentPath=/data1/svnroot
22SvnExecutable=/usr/bin/svn
23SvnAdminExecutable=/usr/bin/svnadmin
24[Users:passwd]
25SVNUserFile=./test/passwd.cfg
26[Users:digest]
27SVNUserDigestFile=
28SVNDigestRealm=SVN Privat
29[Ldap]
30HostAddress=ldap://192.168.10.100:389/
31ProtocolVersion=3
32BindDN=cn=svnldap,dc=361way,dc=com
33BindPassword=W3HKf87u
34[Users:ldap]
35BaseDN=ou=users,domainname=361way.com,o=domains,dc=361way,dc=com
36SearchFilter=(|(&(objectClass=mailuser)(accountStatus=active))(cn=svnadmin))
37Attributes=sn
38[Groups:ldap]
39BaseDN=ou=groups,domainname=361way.com,o=domains,dc=361way,dc=com
40SearchFilter=(objectClass=groupOfUniqueNames)
41Attributes=cn
42GroupsToUserAttribute=uniqueMember
43GroupsToUserAttributeValue=dn

不想通过web方式配置的,也可以直接在该文件中进行配置 。

默认安装完成后,只有一个管理员用户,想要再新增管理员用户,可以通过更改下面的配置文件完成。

1cat svnadmin/data/userroleassignments.ini
2[admin]
3Administrator=
4[361way]
5Administrator=

这里定义了两个管理员用户,一个用户名是admin ,另一个是 361way 。

三、注意点

同其他运维工作要注意的一样,任何操作之前先要做好备份。在新版本的if.svnadmin安装完成后,我大意了,无意间在后台点了一个按钮,对所有用户的权限分配都初始化了(惨痛的教训,还好一周前有一个备份,并且研发变更的人数不大)。操作如下面所示:

svnupdate

最后提供一下该软件的官方主页。所有一切不能确定的操作,可以在测试环境随意操作,但在现网中不确定时,最好先看下官方文档确认后再操作。