SVN(Apache Subversion)本身有多种“启动模式”(即提供服务的协议和运行方式),每种模式适用于不同场景。下面把所有常见的 SVN 启动/服务模式完整列出,并说明优缺点、适用场景和启动方法。
1. svnserve 原生协议模式(最轻量、最快,推荐中小团队)
| 协议 | 端口 | 特点 | 适用场景 |
|---|---|---|---|
| svn:// | 3690 | 速度最快、配置最简单 | 内网、专线、速度优先 |
| svn+ssh:// | 22 | 通过 SSH 隧道,强制加密+认证 | 对安全性要求高,又不想配 HTTPS |
启动方式(Linux 示例)
# 1. 作为独立守护进程启动(推荐)
svnserve -d -r /svn/repos # 前台:加 --foreground
# 或指定监听地址和端口
svnserve -d -r /svn/repos --listen-port 3690 --listen-host 0.0.0.0
# 2. 用 systemd 管理(生产推荐)
# 创建 /etc/systemd/system/svnserve.service
[Unit]
Description=Subversion Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/svnserve -d -r /svn/repos
Restart=always
[Install]
WantedBy=multi-user.target
# 然后
sudo systemctl enable svnserve
sudo systemctl start svnserve
配置文件:/svn/repos/myrepo/conf/svnserve.conf 和 authz、passwd
优点:启动快、资源占用极低、配置简单
缺点:默认不加密(除非用 svn+ssh)
2. Apache + mod_dav_svn 模式(http/https,最通用)
| 协议 | 端口 | 特点 | 适用场景 |
|---|---|---|---|
| http:// | 80 | 兼容性最好,可通过 Nginx 反向代理 | 外网访问、公司标准 |
| https:// | 443 | 加密传输,支持企业级认证(LDAP、SSO) | 安全性要求高、大型团队 |
启动方式(Ubuntu/Debian 示例)
sudo apt install apache2 libapache2-mod-svn
# 启用模块
sudo a2enmod dav dav_svn authz_svn ssl # ssl 为 https 需要
# 典型配置 /etc/apache2/mods-enabled/dav_svn.conf
<Location /svn>
DAV svn
SVNParentPath /svn/repos # 多仓库
# SVNPath /svn/repos/myrepo # 单仓库用这个
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/svn-auth/svn-auth-users
AuthzSVNAccessFile /etc/svn-auth/svn-authz
Require valid-user
# 匿名只读 + 认证写(最常用)
# Satisfy Any
</Location>
# 重启 Apache
sudo systemctl restart apache2
优点:支持 HTTPS、LDAP、细粒度权限、可与公司现有 Web 平台共存
缺点:比 svnserve 慢 20%-50%,占用内存多
3. VisualSVN Server(Windows 专属,一键傻瓜式)
- 内置 Apache + HTTPS + 图形化管理 + Active Directory 集成
- 启动方式:安装后自动以 Windows 服务运行(默认 https://服务器名:443/svn/)
- 适用:Windows 环境下的企业或不想折腾命令行的团队
4. svnserve 隧道模式(svn+ssh://)
不需要额外启动服务,直接复用 SSH
# 用户端 checkout 方式
svn checkout svn+ssh://user@server/svn/repos/myproject
优点:最安全(SSH 加密+系统账号认证)
缺点:每次操作都要输入密码(可配 SSH 密钥解决)
5. file:// 直接文件访问(不启动任何服务)
svn checkout file:///svn/repos/myproject
只适合单机、本地测试、脚本自动化
不适合多人协作
6. Nginx + svnserve 反向代理(高性能外网方案)
有些公司不想用 Apache,用 Nginx 代理 svn:// 流量(支持 WebSocket 升级)
各种启动模式的对比总结
| 模式 | 启动难度 | 性能 | 安全性 | 外网友好 | 推荐指数 | 典型使用场景 |
|---|---|---|---|---|---|---|
| svnserve (svn://) | ★☆☆☆☆ | ★★★★★ | ★★☆☆☆ | ★★☆☆☆ | ★★★★★ | 内网中小团队首选 |
| svnserve + ssh | ★★☆☆☆ | ★★★★★ | ★★★★★ | ★★★☆☆ | ★★★★☆ | 安全性要求高的小团队 |
| Apache (http/https) | ★★★☆☆ | ★★★☆☆ | ★★★★★ | ★★★★★ | ★★★★☆ | 大公司、外网访问、LDAP 集成 |
| VisualSVN Server | ★☆☆☆☆ | ★★★☆☆ | ★★★★★ | ★★★★★ | ★★★★★ (Windows) | Windows 环境企业首选 |
| file:// | ★☆☆☆☆ | ★★★★★ | ★☆☆☆☆ | ★☆☆☆☆ | ★☆☆☆☆ | 单机测试、CI/CD 脚本 |
我的推荐(2025 年最新建议)
- 内网 + 50 人以下团队 → svnserve 原生模式(最快最省资源)
- Windows 服务器 → VisualSVN Server(几乎零维护)
- 外网访问或大公司 → Apache HTTPS + LDAP
- 安全性极高要求 → svn+ssh
你现在用的是哪种环境(Windows/Linux、内网/外网)?我可以给你最匹配的一键启动脚本或配置模板。