在银河麒麟v10上搭建远程svn服务器需四步:安装subversion、libapache2-mod-svn等服务端组件;初始化仓库并设权限;配置apache虚拟主机及basic认证;编辑authz和svnserve.conf实现用户权限控制。

在银河麒麟V10系统上搭建可远程访问、带权限控制的SVN服务器,需完成服务端组件安装、版本库初始化、配置文件编辑及守护进程启用四步闭环操作。
安装SVN服务端核心组件
银河麒麟V10基于Debian系包管理机制,但默认源中不包含完整服务端套件。执行以下命令安装subversion及其依赖模块:
sudo apt update && sudo apt install subversion libapache2-mod-svn apache2 -y
注意:libapache2-mod-svn是启用HTTP协议访问的关键模块,缺省安装仅含客户端工具,【未安装此包将无法通过http://方式访问仓库】。
验证服务端模块是否就位:
svn --version | grep -E "ra_local|ra_svn|ra_serf"
输出中必须同时出现ra_svn(支持svn://)和ra_serf(支持https://),否则需手动安装libserf-1-1等依赖。
创建并初始化SVN版本库
选择一个非系统关键路径作为仓库根目录,例如:
sudo mkdir -p /srv/svn/repo
使用svnadmin命令初始化空仓库:
sudo svnadmin create /srv/svn/repo
初始化后自动创建conf/、db/、hooks/等子目录。此时仓库处于裸状态,尚未启用网络服务。
修改仓库目录权限,确保Apache进程可读写:
sudo chown -R www-data:www-data /srv/svn/repo
sudo chmod -R g+ws /srv/svn/repo
配置Apache以提供HTTP访问
启用必要模块:
sudo a2enmod dav dav_svn rewrite
创建SVN专属虚拟主机配置文件:
sudo nano /etc/apache2/sites-available/svn.conf
填入以下内容(注意替换ServerName为实际域名或IP):
DAV svn
SVNParentPath /srv/svn
AuthType Basic
AuthName "SVN Repository"
AuthUserFile /etc/subversion/passwd
Require valid-user
启用该站点并重启服务:
sudo a2ensite svn.conf && sudo systemctl restart apache2
配置用户认证与权限
第一步:生成第一个管理员用户
sudo htpasswd -c /etc/subversion/passwd admin
按提示输入密码。-c参数仅首次使用,后续添加用户请勿加-c,否则覆盖整个密码文件。
第二步:编辑权限控制文件
sudo nano /srv/svn/repo/conf/authz
写入基础权限规则:
[groups]
devs = admin,user1
[repo:/]
@devs = rw
* = r
第三步:启用权限校验
编辑 /srv/svn/repo/conf/svnserve.conf,取消以下三行注释并设置值:
anon-access = none
auth-access = write
password-db = passwd
保存后,权限即刻生效,无需重启Apache。
启动svnserve守护进程(可选)
若需支持原生svn://协议(如TortoiseSVN旧版客户端),启用独立服务:
sudo svnserve -d -r /srv/svn --log-file /var/log/svnserve.log
该命令以守护进程方式运行,监听3690端口。防火墙需放行:
sudo ufw allow 3690
验证服务状态:
sudo ss -tlnp | grep :3690
看到LISTEN状态即表示服务已就绪。











