快速搭建可远程访问的subversion需四步:安装apache与subversion组件并启用mod_dav_svn模块;创建svn仓库并正确设置www-data或apache所有权;配置apache的<location /svn>区块,使用svnparentpath;创建用户密码文件并重启服务。

在Linux服务器上快速搭建可远程访问的Subversion版本控制系统,需完成Apache与Subversion的集成安装、仓库初始化、权限配置及服务启用四步闭环操作。
安装Apache与Subversion基础组件
在Ubuntu 20.04或CentOS 7系统中,直接使用系统包管理器安装是最稳妥的方式。避免源码编译带来的apr依赖冲突风险。
Ubuntu执行:sudo apt update && sudo apt install apache2 subversion libapache2-mod-svn
CentOS执行:sudo yum install httpd mod_dav_svn subversion
安装完成后,【mod_dav_svn模块必须已自动启用】。若未启用,需手动运行 sudo a2enmod dav_svn(Ubuntu)或确认 /etc/httpd/conf.modules.d/10-subversion.conf 已加载模块(CentOS)。
创建SVN仓库并设置所有权
选择非系统盘路径创建仓库根目录,例如 /var/svn。
执行:sudo mkdir -p /var/svn
创建具体仓库:sudo svnadmin create /var/svn/myproject
这一步会生成 conf、db、hooks 等标准子目录。若跳过此步直接配置Apache,访问时将返回“Could not open the requested SVN filesystem”错误。
关键权限设置:sudo chown -R www-data:www-data /var/svn/myproject(Ubuntu)或 sudo chown -R apache:apache /var/svn/myproject(CentOS)。【所有权不匹配会导致HTTP 500内部错误】
配置Apache暴露SVN仓库
Ubuntu用户编辑站点配置:sudo nano /etc/apache2/sites-available/000-default.conf
CentOS用户编辑主配置:sudo nano /etc/httpd/conf/httpd.conf
在文件末尾添加以下区块:
<location><br>DAV svn<br>SVNParentPath /var/svn<br>AuthType Basic<br>AuthName "Subversion Repository"<br>AuthUserFile /etc/apache2/dav_svn.passwd<br>Require valid-user<br></location>
注意:使用 SVNParentPath 而非 SVNPath,才能支持同一路径下多个仓库(如 /svn/myproject、/svn/other);若误用 SVNPath 指向单个仓库,则无法通过URL后缀区分不同项目。
创建SVN访问用户并重启服务
第一步:生成密码文件并添加首个用户
sudo htpasswd -cm /etc/apache2/dav_svn.passwd alice
其中 -c 表示创建新文件,-m 使用MD5加密。首次运行必须带 -c,否则会清空已有用户。
第二步:为已有密码文件追加用户(不带 -c)
sudo htpasswd -m /etc/apache2/dav_svn.passwd bob
第三步:重启Apache使配置生效
Ubuntu:sudo systemctl restart apache2
CentOS:sudo systemctl restart httpd











