手把手教你从零开始搭建SVN服务器完整实战指南
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
技术虽旧,价值犹存 —— SVN 依然是企业级项目管理的可靠基石
在当今以 Git 为主导的分布式版本控制时代,Subversion(简称 SVN)并未退出历史舞台,相反,在许多传统行业、大型企业、政府机构及对权限控制和审计追溯有强需求的项目中,SVN 凭借其集中式架构、权限粒度精细、操作直观稳定等优势,依然被广泛部署和使用。
如果你正计划为企业团队搭建一套可控、安全、易维护的代码/文档版本管理系统,那么本篇《SVN 服务器搭建全攻略》将是你不可多得的实战手册,无论你是 Linux 新手、开发组长,还是系统运维工程师,只需按步骤操作,即可轻松部署属于你的 SVN 服务。
🧭 一、环境准备:选择合适的操作系统与网络配置
✅ 推荐系统
本文以 Ubuntu 20.04 LTS 为例进行演示(同样适用于 Debian 系列),若你使用 CentOS、RHEL 或 Rocky Linux,只需将 apt 替换为 yum 或 dnf 即可。
🔐 权限要求
- 必须拥有 root 权限 或具备
sudo执行能力。 - 建议服务器配置 静态 IP 地址 或绑定域名,确保团队成员访问稳定。
🌐 网络与防火墙
- 若使用云服务器(如阿里云、腾讯云、AWS、Azure),请提前在安全组规则中开放以下端口:
3690/tcp—— SVN 原生协议默认端口80/tcp或443/tcp—— 若通过 Apache 提供 HTTP(S) 访问
💡 小贴士:生产环境中建议启用 HTTPS + SSL 加密,避免密码明文传输。
⚙️ 二、安装 SVN 核心组件
打开终端,依次执行:
sudo apt update && sudo apt upgrade -y sudo apt install subversion -y
安装完成后,验证是否成功:
svn --version
✅ 若输出类似 13.x 的版本号,说明核心组件已就绪,但注意:此时仅安装了客户端和服务端工具,并未启动服务,还需创建仓库并配置访问策略。
🗂️ 三、创建 SVN 版本库(Repository)
SVN 仓库是所有项目文件、历史记录与元数据的核心存储地,推荐统一存放于 /var/svn/ 目录下,便于集中管理。
假设我们要为“财务系统”项目创建仓库:
sudo mkdir -p /var/svn sudo svnadmin create /var/svn/finance-system
执行后,系统将在 /var/svn/finance-system 下自动生成如下关键目录:
conf/—— 配置文件目录(含用户、权限、服务设置)db/—— 数据库存储区(勿手动修改)hooks/—— 钩子脚本目录(用于自动化触发动作)locks/,format等 —— 内部管理文件
🔐 四、配置用户权限与访问控制
进入配置目录:
cd /var/svn/finance-system/conf
1️⃣ 编辑主配置文件 svnserve.conf
sudo nano svnserve.conf
取消注释并调整如下内容:
[general] anon-access = none # 禁止匿名访问 auth-access = write # 认证用户默认可读写 password-db = passwd # 用户密码文件路径 authz-db = authz # 权限控制文件路径 realm = Finance System Repo # 自定义认证域名称(登录时可见)
2️⃣ 设置用户账号 passwd
sudo nano passwd
添加用户,格式为 用户名=密码:
[users] alice = MyP@ssw0rd! bob = DevSecOps2024 charlie = Tester_789
🔒 安全提示:生产环境应定期轮换密码,或接入 LDAP / Active Directory 统一认证。
3️⃣ 配置细粒度权限 authz
sudo nano authz
示例配置:
[groups] developers = alice, bob qa_team = charlie [/] # 仓库根目录权限 @developers = rw # 开发组拥有读写权限 @qa_team = r # 测试组仅可读 * = # 其他用户无任何权限 [/trunk/docs] charlie = rw # 特定用户对特定路径授权(如允许测试人员更新文档) [/branches/release-v1.0] bob = rw # 分支权限独立控制
4️⃣ 修复文件权限(重要!)
sudo chown -R www-data:www-data /var/svn/finance-system # Apache 模式需此属主 sudo chmod -R 755 /var/svn/finance-system
🚀 五、启动 SVN 服务
SVN 支持两种运行模式:
- 原生模式:
svnserve守护进程(轻量、快速) - Web 模式:Apache +
mod_dav_svn(支持浏览器访问、HTTPS、LDAP)
▶ 方式一:使用 svnserve 启动(推荐新手)
sudo svnserve -d -r /var/svn
参数说明:
-d:后台守护进程运行-r /var/svn:指定仓库根目录,简化客户端访问路径
✅ 设置开机自启(systemd)
创建服务单元文件:
sudo nano /etc/systemd/system/svnserve.service
[Unit] Description=Subversion Server Daemon After=network.target [Service] Type=forking ExecStart=/usr/bin/svnserve -d -r /var/svn ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure User=www-data Group=www-data [Install] WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload sudo systemctl enable svnserve sudo systemctl start svnserve sudo systemctl status svnserve # 检查状态
🖥️ 六、客户端连接测试
在任意客户端机器上(Windows/macOS/Linux),使用以下工具连接:
- Windows:TortoiseSVN
- macOS/Linux:命令行
svn或 SmartSVN / Cornerstone
访问地址:
svn://your-server-ip/finance-system
首次访问将弹出登录框,输入你在 passwd 中配置的用户名密码(如 alice/MyP@ssw0rd!),即可检出(checkout)项目,开始提交与协作。
🌐 七、进阶方案:通过 Apache 实现 Web 访问(HTTPS 友好)
适用于希望集成浏览器访问、LDAP 认证、SSL 加密的企业场景。
1️⃣ 安装 Apache 与 SVN 模块
sudo apt install apache2 libapache2-mod-dav-svn -y
2️⃣ 启用必要模块
sudo a2enmod dav sudo a2enmod dav_svn
3️⃣ 创建虚拟主机配置
sudo nano /etc/apache2/sites-available/svn.conf
<Location /svn>
DAV svn
SVNParentPath /var/svn
SVNListParentPath On # 允许列出所有仓库
AuthType Basic
AuthName "Secure SVN Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /var/svn/authz_global # 可选:全局权限文件
Require valid-user
</Location>
4️⃣ 创建 Apache 专用用户密码
sudo htpasswd -c /etc/apache2/dav_svn.passwd alice sudo htpasswd /etc/apache2/dav_svn.passwd bob
📝 注意:
-c仅首次创建时使用,后续添加用户不要


