虽然通过手动配置dav_svn.authz文件可以实现SVN访问权限的设置,但是对于公司级的运营,显然是无法满足的。于是相应的管理工具应运而生,这类工具通常以WEB方式作为前端供用户操作,后端实现对dav_svn.authz文件编辑修改。
这类工具中,我试用了USVN和iF.SVNAdmin(后面简称SVNAdmin),最终选择了SVNAdmin,主要原因是USVN只能以用户组的方式分配权限,无法直接给单个用户分配权限,只适合小团队使用,不合适企业所需。
SVNAdmin基于PHP5.3开发,无需数据库支持,Debian10下的PHP7.3.19下工作良好,暂未发现异常,其配置操作也相对简单,目前版本为1.6.2。SVNAdmin的官方网站的下载页面地址为:http://svnadmin.insanefactory.com。
第一步:下载后的文件为svnadmin-1.6.2.zip,用Windows电脑端下载后,解压得到iF.SVNAdmin-stable-1.6.2文件夹,将其改名为SVNAdmin,然后通过WinSCP将SVNAdmin文件夹上传至服务器的用户目录下: /home/markul。
第二步:打开XShell登陆服务器,安装PHP,以便支持SVNAdmin,安装完成后可以通过php -v命令查看PHP版本号。
markul@server~$ sudo apt-get install php
...
markul@server:~$ php -v
PHP 7.3.19-1~deb10u1 (cli) (built: Jul 5 2020 06:46:45) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.19, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.19-1~deb10u1, Copyright (c) 1999-2018, by Zend Technologies
markul@server:~$
第三步:将上传SVNAdmin文件夹移动到/disk1/svn下,然后修改目录访问权限,以及所属用户和组。
markul@server~$ sudo mv /home/markul/SVNAdmin /disk1/svn/
markul@server~$ sudo chown -R www-data:www-data /disk1/svn/SVNAdmin
markul@server~$ sudo chmod -R 750 /disk1/svn/SVNAdmin
markul@server~$ sudo chown www-data:www-data /disk1/svn/dav*
markul@server:~$ ls -l /disk1/svn
total 12
-rwxr-x--- 1 www-data www-data 894 Oct 25 07:35 dav_svn.authz
-rwxr-x--- 1 www-data www-data 418 Aug 5 00:47 dav_svn.passwd
drwxr-x--- 13 www-data www-data 155 Oct 25 07:24 repo
drwxr-x--- 9 www-data www-data 4096 Oct 25 07:19 SVNAdmin
第四步:修改/etc/apache2/apache2.conf。添加如下内容,保存修改后重启一下Apache2。到此,SVNAdmin在服务器端的安装工作就完成的。
markul@server~$ sudo vi /etc/apache2/apache2.conf
markul@server~$ cat /etc/apache2/apache2.conf
... ...
#<Directory /srv/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>
Alias /svnadmin /disk1/svn/SVNAdmin
<Directory /disk1/svn/SVNAdmin>
Options +SymLinksIfOwnerMatch
AllowOverride All
Require all granted
</Directory>
# AccessFileName: The name of the file to look for in each directory
... ...
markul@server~$ service apache2 restart
第五步:现在到Windows电脑端打开浏览器,输入网址:https://192.168.1.223/svnadmin,首次打开时,选择一个SVN用户作为SVNAdmin管理员,然后进入配置页面,让人意外的是支持中文,在右上角的下拉列表中选择即可,相关配置内容如下:
至此,SVNAdmin的安装和配置工作已经完成,使用管理员用户登陆后即使用,这里提及一下,SVNAdmin在设置SVN权限的时候,需要先创建访问路径,然后再设置这个访问路径的访问权限。其思路如同编辑修改dav_svn.authz文件。
再说一个异常情况的处理:若出现Call to undefined function xml_parser_create()错误提示,原因是系统缺少php XML库,解决的办法是安装php XML库后重启apache2即可。
markul@server~$ sudo apt-get php7.3-xml
... ...
markul@server~$ sudo service apache2 restart