搭建SVN服务器需要安装的核心组件是Subversion服务端软件(如Apache Subversion或VisualSVN Server),再加上版本库管理工具和必要的依赖环境,具体安装清单取决于你的操作系统和部署方式。
作为经历过无数次代码仓库崩坏的“过来人”,我深知你在搜索这个问题时最想要的是一个准确、能直接上手的清单,下面这份指南会分场景拆解,帮你避开那些只讲一半的教程坑。
按操作系统划分,服务器搭建需要安装哪些基础软件
SVN服务器的安装清单不是固定的,你用Windows还是Linux,决定了完全不同的安装包组合。
Linux环境(以CentOS/Ubuntu为例)的安装集
社区和中小企业最常用的方案是结合Apache HTTP服务来提供Web访问,这种情况下,你需要安装subversion和mod_dav_svn模块。
- 核心服务包:在CentOS上执行
yum install subversion,在Ubuntu上执行apt install subversion,这个包内置了svnadmin和svnserve工具,能独立运行,但不支持HTTP协议。 - Web集成模块:如果希望通过浏览器访问仓库,必须安装Apache的扩展模块,CentOS安装
mod_dav_svn,Ubuntu安装libapache2-mod-svn,行业共识认为,企业级部署应将这部分纳入初始安装清单,否则后续扩展权限管理会非常麻烦。 - 依赖库:
neon或serf库用于HTTP协议支持,多数发行版会在安装主包时自动拉取,无需手动介入。
Windows环境下的两种主流方案
Windows用户通常不用原始Subversion源码包,而是选择集成安装包,国内搭建SVN服务器时,运维人员最常用的组合是VisualSVN Server或WANdisco的二进制包。
- VisualSVN Server:自带Apache服务、SVN核心和管理控制台,无需单独安装Apache或配置环境变量,安装时勾选“Include default repository structure”即可自动生成trunk、branches、tags目录。
- 原始Cygwin方案(仅限资深用户):需要安装Cygwin的Subversion包并手动配置
svnserve作为Windows服务,这个方案维护成本极高,不建议用于生产环境。
如果你问“具体需要下载哪个文件”,可以直接看软件官网的Download页面,选择对应系统架构的MSI安装包即可。
版本库管理工具:比核心服务更重要的附加组件
很多教程只告诉你装一个subversion就完事了,但实际使用中,没有管理工具会让你痛苦得怀疑人生,这里补充安装两类常用工具。
客户端工具
客户端不算服务器端安装项,但每个需要提交代码的电脑都必须装。
- TortoiseSVN:Windows图形客户端,安装后会在右键菜单集成SVN操作,它内置了
svn.exe命令行工具,不需要额外安装命令版。 - Subversion命令行客户端:Linux开发机通常用
yum install subversion或apt install subversion自带,无需单独安装。
仓库权限管理工具
当需要精细化控制不同用户对路径的读写权限时,你需要考虑是否安装额外的认证模块。
- Apache的passwd和authz文件:这是最经典的方案,随
mod_dav_svn模块一并启用,无需单独安装。 - LDAP/AD集成插件:如果公司已有域控环境,建议安装
mod_authz_ldap等模块,把账号认证交给中央目录服务,这样每次离职员工删号时,SVN权限会自动失效。
安装SVN服务器辅助环境:依赖项不可跳过
除了SVN本体,下面这些环境通常会被忽略,但缺失它们会导致安装失败或运行报错。
编译器与开发工具
如果你选择从源码编译Subversion(比如定制特殊补丁),必须安装gcc、make、libtool和依赖开发包,但通常情况下,利用包管理器安装编译好的二进制包效率更高,源码编译往往只有极端定制需求时才使用。
数据库后端的取舍
Subversion支持两种仓库存储格式:FSFS和BDB,新版SVN已默认FSFS,该格式无需额外的数据库软件,但如果你坚持用BDB后端,就必须先安装Berkeley DB库文件,我强烈建议跟着默认走,因为BDB在故障恢复时表现不佳,属业内常见痛点。
HTTP服务依赖
使用Apache方案时,Apache本身是完整的依赖,但请注意SSL证书配置,以支持https://访问,需要安装mod_ssl模块,没有这个模块,远程提交时账号密码会明文传输,存在较大风险。
具体安装步骤演示:以CentOS 7搭建完整SVN环境为例
这一步提供可验证的操作路径,帮你落地上面的清单。
- 执行
yum install subversion mod_dav_svn mod_ssl httpd,一次性拉取所有核心组件。 - 执行
svnadmin create /var/svn/repo创建仓库目录。 - 编辑
/etc/httpd/conf.d/subversion.conf,配置SVNPath和授权文件路径。 - 使用
htpasswd -cm /etc/svn-auth-users admin生成认证用户。 - 创建
/var/svn/access.conf,定义用户读写规则。 - 启动服务:
systemctl start httpd和systemctl enable httpd。
同一套步骤在Ubuntu上略有差异:把yum install换成apt install,配置文件路径变成/etc/apache2/mods-available/dav_svn.conf,启动命令变为service apache2 restart。
搭建SVN服务器时费用和地域选择怎么考虑
这个问题常被新手忽略,因为SVN服务器首选是Linux的,所以不牵扯太多软件采购预算,整个工具的安装使用基本是免费开源的,但你需要支付云服务器费用或本地硬件维护成本。
云服务器地域选择影响连接速度,如果团队在广州、深圳,建议选择华南地域的云主机;如果团队在北京、上海,则用华北或华东节点,你可能搜索过“搭建SVN服务器需要买多大内存”,简单说:仓库存储的是文本变化记录,对内存需求很低,最低配2核4G云主机足够支撑数百人的日常提交,相反,磁盘IO带宽更重要,多买SSD存储比加内存更划算。
常见问题排查:装完但访问不了怎么办
安装清单正确但服务不能访问,多数情况出在两个地方:
- 防火墙端口未开放,Apache占用80或443端口,
svnserve独立模式占用3690端口,需要检查安全组策略是否放行对应端口,酷番云和简米云都要求单独设置规则,不能只靠本地firewalld关闭。 - SELinux拦截,CentOS默认开启SELinux,会阻止Apache读写
/var/svn目录,执行setsebool -P httpd_unified on即可解决,这不是额外的软件安装问题,但常常让人误以为漏装了组件。
Q&A:关于SVN服务器搭建你还会问什么
Q:搭建SVN服务器需要安装哪些版本的Apache?
A:Subversion 1.8及以上版本对Apache 2.4支持较好,如果你是老项目用Apache 2.2,则需匹配subversion 1.6或1.7,建议统一采用2.4搭配较新的SVN版,避免因协议版本不匹配导致svn: E170013错误。
Q:SVN服务器的仓库路径和版本库权限如何设置?
A:仓库路径即创建版本库时指定的目录,权限设置推荐用Apache方案的AuthzSVNAccessFile指令,支持对单个路径精细控制,例如[/] admin=rw, = r,意味着admin可读写而其他用户只读。
Q:用VisualSVN Server搭建后,客户端仍需另行安装TortoiseSVN,这是否说明安装清单不完整?
A:不缺,服务器只负责管理仓库和响应请求,客户端工具用于本地文件管理和提交操作,两者独立运行,无需在服务器上安装TortoiseSVN。
SVN的价值在于版本记录的稳定性,只要你的安装包覆盖了核心服务、依赖模块和权限管理通这三块,剩下的一切都会顺理成章。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/699106.html





