首页 / 资讯中心 / 文章详情

VisualSVN Server 3.5.3 安装配置与避坑指南

VisualSVN Server 3.5.3 安装配置与避坑指南 ★ FEATURED ARTICLE
简介面向需要在 Windows 环境下搭建 SVN 版本控制服务的技术人员这份资源围绕 VisualSVN Server 3.5.3 提供完整安装包与配套补丁并额外解决 Web 端用户自助修改密码的常见痛点适合运维、开发及中小团队自建代码仓库时参考使用。压缩包共 15 个文件约 7.95MB涵盖 msi 安装程序、exe 补丁、dll 与 so 运行库、conf 与 ini 配置、html 与 css 前端页面、js 脚本以及 cmd 批处理等从安装部署到 Web 界面定制均有对应文件支撑。资源已被 831 人学习下载说明其在同类需求中具备一定参考价值。读者可据此完成服务端安装与补丁处理并借助 WebUI 目录下的页面与 cgi-bin 脚本实现登录用户在线修改自身密码省去管理员代为重置的麻烦同时文档与说明文件可辅助理解目录结构与配置要点降低搭建与调试成本。1. 从一台老服务器说起VisualSVN Server 3.5.3 到底装的是什么接手一台退役的开发机做迁移时我在 D 盘翻到一个VisualSVN-Server-3.5.3-x64.msi旁边还压着一份手写的 web 密码纸条。这台机器上跑着三个小组的代码仓库服务一停提交全断。VisualSVN Server 3.5.3 是 Windows 上把 Subversion 服务端、Apache、管理控制台打包在一起的集成安装包装完就能用图形界面建仓库、配权限、开 HTTPS省掉手工拼 svnserve 和 httpd.conf 的麻烦。它适合还在维护老 SVN 仓库、又不想重构成 Git 的团队。装不好会怎样服务起不来、443 端口被占、web 控制台密码忘了进不去仓库数据还在但没人敢动。这篇就按我实际重装一遍的顺序写从版本选择到密码找回能照着走完。2. 装前把环境列清版本、端口和账号三件事2.1 为什么锁定 3.5.3 而不是追新VisualSVN Server 的版本和底层 Subversion、Apache 是绑死的3.5.3 对应的是 Subversion 1.8.x 系列仓库格式FSFS版本也固定在这一代。老机器上已有的仓库如果是这个版本建的直接上新版安装包安装程序会提示仓库格式需要升级升级不可逆一旦升了旧客户端就连不上。所以迁移或重装时第一原则是先确认现有仓库的格式版本再决定装哪个版本而不是无脑下最新。常见做法是先看仓库目录下的db/format和db/fsfs.confformat 文件里那个数字就是仓库格式版本。3.5.3 建的仓库通常是 4 或 6具体看创建时的选项。如果 format 是 4装 3.5.3 最稳如果已经是 6 甚至更高说明之前升过那就别退回 3.5.3否则服务端读不了。我一般会先把整个仓库根目录默认C:\Repositories整份复制到另一块盘再动手装。这一步不是多余后面讲避坑时会看到卸载重装最容易把配置和仓库路径搞混。2.2 环境对照表装之前逐项打勾项目3.5.3 的要求我实际的做法操作系统Windows Server 2008 R2 及以上 / Win7 及以上Win Server 2012 R2 实测可用安装包架构x64 与 x86 分开服务器一律选 x64默认服务端口HTTP 80 / HTTPS 44380 常被 IIS 占装时改 8080管理控制台MMC 插件随安装注册装完在开始菜单搜 VisualSVN服务账号默认 Network Service域环境改成专用服务账号仓库根路径安装时指定默认 C:\Repositories放数据盘别放系统盘依赖.NET Framework 4.x、VC 运行库安装包自带检测缺了会拦这张表里最容易被忽略的是端口。很多机器上 IIS 已经占了 80VisualSVN 安装时如果直接下一步装完服务起不来事件日志里报could not bind to address 0.0.0.0:80。装之前先跑一句看端口占用netstat -ano | findstr :80 :443输出里如果 80 后面跟着某个 PID用tasklist /fi pid eq 那个PID看是谁。是 IIS 就改 VisualSVN 的端口是别的服务就评估能不能停。443 同理有些安全软件会占。这一步花两分钟能省掉装完排查半小时。2.3 安装包来源与校验安装包拿到手先看数字签名右键属性里的数字签名页签名者是 VisualSVN 官方实体才算数。网上流传的所谓“绿色版”“免安装版”一律不用SVN 服务端涉及仓库读写权限来路不明的包风险太高。校验完再双击安装向导里两个关键选择安装类型选Custom而不是 Typical这样才能改端口和仓库路径服务账号那一步单机就保持 Network Service域环境填专用账号并给仓库目录的读写权限。装完先别急着建仓库打开服务管理器确认VisualSVN Server服务是 Running再打开浏览器访问https://localhost:443/svn/端口按你改的来能看到登录框说明 Apache 和模块都加载正常。这一步过了才算安装本身成功。3. 配置仓库与权限图形界面背后的参数3.1 建仓库时的两个选项决定后面所有事打开 VisualSVN Server 管理控制台右键 Repositories → Create New Repository向导里会问仓库类型和权限模型。仓库类型选FSFS默认不要选 BDBBDB 在新版里已经废弃3.5.3 虽然还支持但锁机制容易出问题。权限模型选Use custom permissions别用默认的“所有用户可读写”否则后面加人还得回头改。建完仓库目录结构大致是这样C:\Repositories\myrepo\ ├── conf\ # 权限与钩子配置 │ ├── authz # 路径级权限 │ ├── passwd # 用户密码若用文件认证 │ └── hooks\ # 钩子脚本 ├── db\ # 版本数据别手动碰 ├── hooks\ # 仓库级钩子 └── format # 仓库格式版本号conf/authz是路径级权限的核心图形界面里点的每一个“读/写”最终都写进这个文件。手改 authz 后不需要重启服务下一次请求就生效这点比改 httpd.conf 方便。但要注意图形界面和手改 authz 同时进行时控制台可能覆盖你的手改所以要么全用界面要么全手改别混着来。3.2 用户与组别把域账号和本地账号混用用户管理在控制台的 Users 节点。单机环境直接建本地用户域环境可以接 AD。这里有个血泪经验同一个仓库里不要一半用户是本地账号、一半是域账号认证源不同authz 里写用户名时前缀规则不一样排查起来非常费劲。要么全本地要么全域。建完用户在仓库的 Properties → Security 里加人。图形界面加完authz 里会多出类似这样的段落[myrepo:/] devs rw alice r * devs是组alice是单用户* 表示其他人无权限。最后这行很关键不写的话默认继承上级权限容易出现“以为锁死了其实没锁”的情况。我一般每个仓库根路径都显式写一行* 兜底。3.3 HTTPS 证书自签也能用但要会导3.5.3 安装时如果选了 HTTPS会自动生成一张自签证书。浏览器访问会报证书不受信任这是正常的不是装坏了。要让客户端不报错把证书导出来装到客户端的“受信任的根证书颁发机构”里。导出方法控制台里右键服务器节点 → Properties → Certificate点 View Certificate → 详细信息 → 复制到文件选 Base64 编码的 .cer。客户端导入用命令行更省事certutil -addstore -f Root server.cer-addstore指定存储区Root就是受信任根-f强制覆盖同名证书。导完重启浏览器或 SVN 客户端警告消失。这一步在批量部署客户端时特别有用写进登录脚本里一次搞定。4. 避坑与排查五个真实翻车现场4.1 卸载重装后仓库“消失”现象卸载 3.5.3 再装一遍控制台里仓库列表空了但C:\Repositories目录还在。原因仓库列表存在服务端的配置里卸载时如果勾了“删除配置”列表就没了但仓库数据目录默认不删。重装后服务端不知道这些目录是仓库。解决控制台里右键 Repositories → Add Existing Repository指向原目录即可数据不会丢。所以卸载前一定确认仓库目录不在安装目录下否则可能被一起清掉。4.2 服务启动失败事件日志报端口占用现象装完服务起不来net start VisualSVN Server报错 1067 或直接退出。原因80 或 443 被 IIS、其他 web 服务或安全软件占用。解决改端口。控制台里右键服务器 → Properties → Network把 HTTP/HTTPS 端口改成 8080/8443重启服务。改完记得同步改防火墙入站规则和客户端的仓库 URL。4.3 web 控制台密码忘了进不去现象浏览器打开https://服务器/svn/提示输入用户名密码但管理员密码早没人记得。原因3.5.3 的 web 界面认证走的是服务端配置里的管理员账号不是 Windows 登录账号。解决以管理员身份打开命令行进安装目录的 bin用VisualSVN-Server.exe的管理参数重置。常见做法是停服务后直接改配置文件里的密码哈希或者用安装包修复模式重设。更稳妥的是提前在控制台里建一个备用管理员账号别只留一个。密码纸条这事我现在的习惯是装完立刻把管理员账号写进团队的密码管理工具而不是贴显示器上。4.4 客户端提交报 403但权限看着没问题现象用户在 authz 里明明给了 rw提交还是 403 Forbidden。原因authz 里路径写错大小写或者用户属于多个组、组权限互相覆盖。SVN 的 authz 匹配是大小写敏感的/Trunk和/trunk是两个路径。解决用svn authz相关工具或直接看服务端日志确认实际匹配到的规则。日志在安装目录的logs\下打开对应日期的文件搜用户名能看到命中了哪条规则。改 authz 时路径一律小写组名和用户名区分大小写要对齐。4.5 迁移后钩子脚本不执行现象仓库从旧机器拷过来post-commit 钩子原来能发通知迁移后不发了。原因钩子脚本的可执行权限或路径变了Windows 下钩子脚本里的路径如果是绝对路径指向的还是旧机器。解决检查hooks\post-commit.bat或.exe把里面的绝对路径改成新机器路径确认文件有执行权限。拷过来的钩子文件有时会丢执行位重新赋一次。5. 装完怎么验证三步确认服务真的跑通装完不等于跑通我一般走三步验证缺一步都不算完。第一步服务层验证。命令行执行sc query VisualSVN Server看 STATE 是不是 RUNNING。再看端口netstat -ano | findstr :443 :8080有 LISTENING 才算网络层通了。第二步协议层验证。用 svn 客户端命令行做一次真实读写别只在浏览器里看登录框svn checkout https://localhost:8443/svn/myrepo test-wc --username alice --password 你的密码 echo test test-wc\readme.txt svn add test-wc\readme.txt svn commit test-wc -m verify installcheckout 成功说明读权限和证书都对commit 成功说明写权限和钩子链路都通。提交后去控制台刷新能看到新版本号这一步过了基本就稳了。第三步权限层验证。用一个只有读权限的账号再 checkout 一次然后尝试 commit应该被拒。这一步是确认 authz 真的生效而不是所有人都能写。很多“装好了”的仓库其实权限是敞开的就是因为跳过了这步。验证项命令/操作通过标准服务状态sc queryRUNNING端口监听netstat -ano443/8080 LISTENING读权限svn checkout工作副本生成写权限svn commit版本号递增权限隔离只读账号 commit返回 403三步都过这套 3.5.3 环境才算真正交付。从那以后我每次装完 SVN 服务端都强制走一遍“只读账号提交被拒”这个反向验证因为正向能通不代表权限没开大。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站