凌峰创科服务平台

CentOS 7安装SVN服务器步骤详解?

总览

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

CentOS 7安装SVN服务器步骤详解?-图1
(图片来源网络,侵删)
  1. 更新系统:确保系统软件包是最新的。
  2. 安装 SVN 服务:使用 yum 包管理器安装 subversion
  3. 创建 SVN 仓库:在指定目录下创建一个新的版本库。
  4. 配置用户和权限:通过 htpasswd 创建认证用户,并通过 authz 文件控制其访问权限。
  5. 配置 SVN 服务:配置 svnserve 守护进程,使其能够访问我们创建的仓库。
  6. 启动并设置开机自启:启动 SVN 服务,并确保系统重启后服务自动运行。
  7. 配置防火墙和 SELinux:允许外部访问 SVN 服务的默认端口(3690)。
  8. 客户端连接测试:使用 SVN 客户端工具验证安装是否成功。

详细步骤

第 1 步:更新系统

建议您更新系统所有已安装的软件包到最新版本,以确保系统的稳定性和安全性。

sudo yum update -y

第 2 步:安装 SVN 服务器

CentOS 7 的官方软件源中包含了 subversion 包,我们可以直接使用 yum 进行安装。

sudo yum install subversion -y

安装完成后,可以验证 SVN 的版本:

svnserve --version

您会看到类似以下的输出,表示安装成功。

CentOS 7安装SVN服务器步骤详解?-图2
(图片来源网络,侵删)
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 服务器配置的核心部分,主要涉及两个文件:passwdauthz

1 创建用户 (passwd 文件)

passwd 文件用于存储用户名和密码,我们使用 htpasswd 命令来添加用户。

CentOS 7安装SVN服务器步骤详解?-图3
(图片来源网络,侵删)

安装 httpd-tools 包,它包含了 htpasswd 工具:

sudo yum install httpd-tools -y

repos 仓库创建用户,我们创建两个用户:user1user2

# -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

然后编辑该文件,我们可以使用 vinano 编辑器:

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 .

系统会提示您输入用户名和密码,输入我们之前创建的 user1user2 的信息。

如果成功,您会看到:

A    .
Checked out revision 1.

表示您已经成功连接到 SVN 服务器,并检出了仓库。

TortoiseSVN 测试 (Windows)

  1. 在本地文件夹中,右键点击空白处,选择 SVN Checkout...
  2. 在 "URL of repository" 字段中输入:svn://<你的服务器IP地址>/repos
  3. 在 "Checkout directory" 字段中选择一个本地目录。
  4. 点击 "OK"。
  5. 系统会弹出认证对话框,输入用户名(如 user1)和密码。
  6. 如果成功,仓库内容会被检出到您指定的本地目录。

通过以上步骤,您已经成功地在 CentOS 7 服务器上搭建了一个功能完善的 SVN 服务器,它支持:

  • 用户认证
  • 基于用户和用户组的精细权限控制
  • 开机自启
  • 防火墙访问

您可以根据实际需求,在 /var/svn 目录下创建更多的仓库,并为每个仓库单独配置 conf 目录下的文件。

分享:
扫描分享到社交APP
上一篇
下一篇