总览
整个过程将包含以下几个主要步骤:

- 更新系统:确保系统软件包是最新的。
- 安装 SVN 服务:使用
yum包管理器安装subversion。 - 创建 SVN 仓库:在指定目录下创建一个新的版本库。
- 配置用户和权限:通过
htpasswd创建认证用户,并通过authz文件控制其访问权限。 - 配置 SVN 服务:配置
svnserve守护进程,使其能够访问我们创建的仓库。 - 启动并设置开机自启:启动 SVN 服务,并确保系统重启后服务自动运行。
- 配置防火墙和 SELinux:允许外部访问 SVN 服务的默认端口(3690)。
- 客户端连接测试:使用 SVN 客户端工具验证安装是否成功。
详细步骤
第 1 步:更新系统
建议您更新系统所有已安装的软件包到最新版本,以确保系统的稳定性和安全性。
sudo yum update -y
第 2 步:安装 SVN 服务器
CentOS 7 的官方软件源中包含了 subversion 包,我们可以直接使用 yum 进行安装。
sudo yum install subversion -y
安装完成后,可以验证 SVN 的版本:
svnserve --version
您会看到类似以下的输出,表示安装成功。

svnserve, version 1.7.14 (r1541117)
compiled: Aug 24 2025, 09:13:08
Copyright (C) 2012 the Apache Software Foundation.
This software consists of contributions of many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/
...
第 3 步:创建 SVN 仓库
我们约定将 SVN 仓库存放在 /var/svn 目录下,首先创建这个目录,然后使用 svnadmin 命令创建一个名为 repos 的仓库。
# 创建仓库根目录 sudo mkdir -p /var/svn # 创建名为 'repos' 的仓库 sudo svnadmin create /var/svn/repos
创建完成后,进入 /var/svn/repos 目录,您会看到以下文件和文件夹,这表示仓库已经成功创建。
conf/ db/ format hooks/ locks/ README.txt
第 4 步:配置用户和权限
这是 SVN 服务器配置的核心部分,主要涉及两个文件:passwd 和 authz。
1 创建用户 (passwd 文件)
passwd 文件用于存储用户名和密码,我们使用 htpasswd 命令来添加用户。

安装 httpd-tools 包,它包含了 htpasswd 工具:
sudo yum install httpd-tools -y
为 repos 仓库创建用户,我们创建两个用户:user1 和 user2。
# -c 选项表示创建一个新文件,第一次创建用户时使用,后续添加用户不要加 -c sudo htpasswd -c /var/svn/repos/conf/passwd user1 New password: # 输入 user1 的密码 Re-type new password: # 再次输入 Adding password for user user1 # 添加第二个用户,注意这里不要加 -c sudo htpasswd /var/svn/repos/conf/passwd user2 New password: # 输入 user2 的密码 Re-type new password: # 再次输入 Adding password for user user2
编辑 /var/svn/repos/conf/passwd 文件,您会看到类似下面内容:
[users]
user1 = $apr1$xxxxxxxxxxxxx...
user2 = $apr1$yyyyyyyyyyyyy...
2 配置访问权限 (authz 文件)
authz 文件用于定义用户和用户组对不同仓库或目录的访问权限(读/写)。
首先创建 authz 文件:
sudo touch /var/svn/repos/conf/authz
然后编辑该文件,我们可以使用 vi 或 nano 编辑器:
sudo vi /var/svn/repos/conf/authz
在文件中添加以下内容作为示例:
[groups] # 定义一个名为 'admin' 的用户组,包含 user1 admin = user1 # 定义一个名为 'devs' 的用户组,包含 user1 和 user2 devs = user1, user2 [/] # 根目录 '/' 的权限设置 * = r # 所有用户默认只有读权限 @devs = rw # 'devs' 组的成员对整个仓库有读写权限 @admin = rw # 'admin' 组的成员对整个仓库有读写权限 # 或者更精细的目录控制 # [repos:/projectA] # @devs = rw # user2 = r # # [repos:/projectB] # @admin = rw # user1 = r
authz 文件格式说明:
[groups]:定义用户组。[<仓库路径>:<目录路径>]:定义访问规则。 代表仓库根目录。用户名 = 权限:r代表只读,w代表读写,rw代表读写。@用户组名 = 权限:为整个用户组设置权限。
第 5 步:配置 SVN 服务 (svnserve.conf 文件)
这是 SVN 服务的主配置文件,它将认证和权限模块关联起来。
编辑 /var/svn/repos/conf/svnserve.conf 文件:
sudo vi /var/svn/repos/conf/svnserve.conf
注意:svnserve.conf 文件中的配置项必须顶格写,且 号两边不能有空格,否则会出错。
修改或确保以下配置项存在且被取消注释:
[general] # 匿名访问的权限,设置为 none 表示禁止匿名访问 anon-access = none # 认证用户的权限,设置为 write 表示允许读写 auth-access = write # 密码文件的路径 password-db = passwd # 权限配置文件的路径 authz-db = authz # 认证域,通常与仓库名相同即可 realm = repos
第 6 步:启动并设置开机自启
我们可以启动 svnserve 服务了。
# 启动服务 sudo systemctl start svnserve # 设置开机自启 sudo systemctl enable svnserve
检查服务状态:
sudo systemctl status svnserve
如果看到 active (running),则表示服务已成功启动。
第 7 步:配置防火墙和 SELinux
SVN 服务默认使用 3690 端口,为了能让外部机器访问,我们需要在防火墙中开放这个端口。
1 配置防火墙
# 开放 3690/TCP 端口 sudo firewall-cmd --permanent --add-port=3690/tcp # 重新加载防火墙规则以使配置生效 sudo firewall-cmd --reload
2 配置 SELinux (重要!)
CentOS 7 默认启用 SELinux,它可能会阻止 svnserve 访问仓库文件,为了简化操作,我们可以将 SELinux 设置为 permissive 模式(只记录警告,不阻止操作)或者为 svnserve 设置正确的上下文。
推荐方法:临时关闭 SELinux 进行测试
# 查看当前 SELinux 状态 getenforce # 临时设置为 Permissive 模式(重启后恢复) sudo setenforce 0
注意:这只是临时方案,在生产环境中,您应该学习如何为 svnserve 设置正确的 SELinux 策略,但这超出了本指南的范围。
第 8 步:客户端连接测试
您可以从另一台电脑或本机使用 SVN 客户端(如 TortoiseSVN、Cornerstone 或命令行 svn)来连接服务器。
命令行测试 (Linux/macOS)
# 创建一个本地临时目录用于检出 mkdir -p ~/test-svn cd ~/test-svn # 执行检出命令 # 格式: svn checkout svn://<服务器IP地址>/<仓库名> <本地目录名> svn checkout svn://<你的服务器IP地址>/repos .
系统会提示您输入用户名和密码,输入我们之前创建的 user1 或 user2 的信息。
如果成功,您会看到:
A .
Checked out revision 1.
表示您已经成功连接到 SVN 服务器,并检出了仓库。
TortoiseSVN 测试 (Windows)
- 在本地文件夹中,右键点击空白处,选择
SVN Checkout...。 - 在 "URL of repository" 字段中输入:
svn://<你的服务器IP地址>/repos - 在 "Checkout directory" 字段中选择一个本地目录。
- 点击 "OK"。
- 系统会弹出认证对话框,输入用户名(如
user1)和密码。 - 如果成功,仓库内容会被检出到您指定的本地目录。
通过以上步骤,您已经成功地在 CentOS 7 服务器上搭建了一个功能完善的 SVN 服务器,它支持:
- 用户认证
- 基于用户和用户组的精细权限控制
- 开机自启
- 防火墙访问
您可以根据实际需求,在 /var/svn 目录下创建更多的仓库,并为每个仓库单独配置 conf 目录下的文件。
