您的当前位置:首页>全部文章>文章详情

在 Linux 服务器上安装 SVN(Subversion)

发表于:2026-06-05 10:27:48浏览:976次 TAG: #SVN 收藏
在 Linux 服务器上安装 SVN(Subversion)非常简单,主流发行版都可以通过包管理器一键安装。下面以最常见的 CentOS(RHEL系)和 Ubuntu(Debian系)为例,详细介绍安装和配置步骤。

1. 安装 SVN

根据你的操作系统,选择对应的命令进行安装。

操作系统系列 安装命令
CentOS / RHEL / Rocky Linux sudo yum install -y subversion  
Ubuntu / Debian sudo apt update
sudo apt install -y subversion 

安装完成后,使用以下命令验证是否成功:

svnserve --version

如果命令输出了 SVN 的版本信息,就说明安装成功了

2. 创建并配置版本库

SVN 服务器需要一个目录来存放所有项目的数据,这个目录被称为“版本库”(Repository)。

2.1 创建版本库目录

选择一个目录来存放版本库,例如 /var/svn。首先创建这个目录:

sudo mkdir -p /var/svn

2.2 创建项目版本库

我们在这个目录下创建一个名为 svnrepos 的版本库:

sudo svnadmin create /var/svn/svnrepos

执行后,系统会在 /var/svn/svnrepos 目录下生成一系列文件和文件夹,其中 conf 目录存放着所有配置文件

2.3 配置访问权限和用户

接下来,需要配置 SVN 的用户账号、密码和访问权限。进入配置目录:

cd /var/svn/svnrepos/conf

这里有三个主要的配置文件,我们需要依次修改

1、 passwd - 管理用户名和密码
使用 vim passwd 命令打开文件,在 [users] 部分添加用户。格式为 用户名 = 密码,注意等号两边要有空格。

[users]
# harry = harryssecret
# sally = sallyssecret
john = 123456
jane = 123456

2、authz - 管理用户访问权限
使用 vim authz 命令打开文件,在文件末尾添加以下内容,为用户 john  jane 赋予根目录 / 的读写权限(rw)。

[/]
john = rw
jane = rw

3、svnserve.conf - SVN 服务主配置
使用 vim svnserve.conf 命令打开文件,找到以下配置行,去掉行首的注释符 # 和它后面的空格,确保每行代码顶格(不能有前导空格)。

[general]
anon-access = none        # 禁止匿名用户访问
auth-access = write       # 授权用户可写
password-db = passwd      # 指定密码文件
authz-db = authz          # 指定权限文件
realm = /var/svn/svnrepos # 版本库的认证命名空间

注意realm 的值可以自定义,当客户端连接时,会显示为“认证领域”的名称

 

3. 启动 SVN 服务

配置完成后,就可以启动 SVN 服务了。

启动服务
使用 svnserve 命令启动,-d 表示以守护进程(后台)模式运行,-r 用于指定版本库的根路径

sudo svnserve -d -r /var/svn/svnrepos

检查服务状态
使用以下命令查看进程,确认服务是否已成功启动

ps -ef | grep svnserve

 

如果看到类似 ... svnserve --daemon ... 的进程信息,说明服务已经正常运行。


防火墙设置
SVN 服务的默认端口是 3690。如果服务器开启了防火墙,需要开放这个端口

# 对于使用 firewalld 的系统 (如 CentOS 7+)
sudo firewall-cmd --permanent --add-port=3690/tcp
sudo firewall-cmd --reload

# 对于使用 iptables 的系统
sudo iptables -A INPUT -p tcp --dport 3690 -j ACCEPT

 

4. 客户端连接与测试

现在,可以使用 SVN 客户端(如 TortoiseSVN、命令行)来访问你的服务器了。

  • 访问地址格式svn://<你的服务器IP>

例如,在另一台有 SVN 客户端的机器上执行以下命令,就可以将版本库中的内容检出到当前目录

svn checkout svn://your-server-ip .

系统会提示你输入用户名和密码(即之前在 passwd 文件中设置的 john  jane),验证成功后即可完成检出

补充:离线安装与开机自启

  • 离线安装:如果服务器无法连接互联网,你需要先在有网络的环境下,使用 yum localinstall  rpm 命令下载好 SVN 及其所有依赖包(如 apr, apr-util, subversion),然后拷贝到服务器上进行本地安装

  • 设置开机自启:在 CentOS 7 及以上版本,可以创建系统服务文件来管理 SVN,但更简单的方法是将启动命令 svnserve -d -r /var/svn/svnrepos 添加到 /etc/rc.local 文件中,并确保该文件有执行权限

补充:重启SVN 进程

# 1. 先查找 SVN 服务的进程ID
ps aux | grep svnserve | grep -v grep

# 2. 杀掉进程(使用上一步查到的PID)
sudo kill <PID>

# 或者直接通过命令杀掉所有 svnserve 进程
sudo killall svnserve

# 3. 重新启动 SVN 服务
sudo svnserve -d -r /var/svn/svnrepos

一条命令完成重启:

sudo killall svnserve && sudo svnserve -d -r /var/svn/svnrepos