必须将subversion模块加载进apache并正确指向仓库路径,否则访问/svn会返回404或500错误;需匹配apache 2.4.x与subversion 1.14.x版本,复制mod_dav_svn.so等模块及所有libsvn_*.dll等依赖库,启用dav、dav_fs、dav_svn、authz_svn四模块(顺序不可错),配置svnpath或svnparentpath,结合htpasswd实现basic认证。

要在Windows服务器上让Subversion仓库通过HTTP协议对外提供版本控制服务,必须将Subversion模块加载进Apache HTTP Server并正确指向仓库路径,否则浏览器访问/svn时会返回404或500错误。
准备基础环境
下载Apache HTTP Server 2.4.x(推荐2.4.58)和Subversion 1.14.x(官方最新稳定版),二者版本需匹配:Subversion 1.14仅支持Apache 2.4,不兼容2.2或更低版本。
安装Apache时勾选“将Apache安装为服务”,端口保持默认80;若80被占用,需在httpd.conf中修改Listen和ServerName两处,否则Apache无法启动。
安装Subversion时务必勾选“Install Subversion command-line client tools”,否则后续svnadmin命令不可用。
复制核心模块与依赖库
方法一:手动复制关键文件
从Subversion安装目录\bin中复制mod_dav_svn.so和mod_authz_svn.so到Apache安装目录\modules。
从同一目录复制所有*.dll文件(如libsvn_*、intl3_svn.dll、libdb-5.dll等)到Apache安装目录\bin。
【若漏复制任何dll,Apache启动时会报错“找不到指定模块”,且错误日志无明确提示】
方法二:使用Subversion自带的整合包(仅限部分发行版)
某些Subversion Windows安装包提供“Apache Modules”子目录,直接将其中全部文件覆盖至Apache modules目录即可,省去逐个判断dll依赖的步骤。
启用Apache模块并加载SVN支持
打开Apache安装目录\conf\httpd.conf,找到以下两行并删除开头的#:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
在mod_dav_fs.so下方新增两行(顺序不可颠倒):
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
这一步顺序错误会导致Apache拒绝启动,且错误码为AH00526,日志提示“Invalid argument: mod_dav_svn requires mod_dav to be loaded first”。
创建SVN仓库并设置路径
第一步:新建仓库根目录
在非系统盘(如E:\svnroot)新建空文件夹,避免重装系统时仓库丢失。
第二步:初始化单个仓库
命令行执行:svnadmin create E:\svnroot\myproject,成功后myproject内自动生成conf、db、hooks等子目录。
第三步:配置Apache识别该仓库
在httpd.conf末尾添加:
<location></location>
DAV svn
SVNPath E:\svnroot\myproject
注意:此处用SVNPath对应单库,若要支持多库(如/svn/repo1、/svn/repo2),则改用SVNParentPath E:\svnroot并把<location></location>路径设为/svn。
配置基础用户认证
创建密码文件目录:mkdir "E:\svnroot\conf"。
生成第一个用户(用户名admin,密码123456):
"C:\Program Files\Apache Software Foundation\Apache2.4\bin\htpasswd.exe" -cmb "E:\svnroot\conf\passwd" admin 123456
在<location></location>块内追加以下四行:
AuthType Basic
AuthName "SVN Repository"
AuthUserFile "E:\svnroot\conf\passwd"
Require valid-user
保存httpd.conf后,以管理员身份运行命令提示符,执行httpd -k restart重启Apache服务。











