| 2025-03-16
在 Linux 系统上搭建 SVN 服务器,一般需经过安装 Subversion 软件包、创建版本库、配置服务器参数、启动服务以及设置防火墙等步骤,以下以 CentOS 7 系统为例详细介绍。
安装 Subversion
确保服务器已连接互联网,使用 root 用户登录系统。在终端中执行以下命令安装 Subversion:
yum -y install subversion
该命令会自动从 CentOS 官方软件源下载并安装 Subversion 及其所有依赖软件包。安装过程中,系统可能会提示确认安装,直接按回车键确认即可。安装完成后,系统会自动停止命令运行。若想查看 Subversion 的安装位置,可使用命令:
rpm -ql subversion
此命令会列出 Subversion 安装在系统中的所有文件和目录路径。同时,可使用 “svnserve --version” 命令查看安装的 Subversion 版本,确认安装是否成功。
创建版本库
选择一个合适的目录来存放 SVN 版本库,通常建议在 “/var” 目录下创建。在终端中依次执行以下命令:
cd /var
mkdir -p svn/svnrepos
“mkdir -p” 命令用于递归创建目录,如果父目录不存在,会一并创建。这里在 “/var/svn” 目录下创建了名为 “svnrepos” 的子目录,作为版本库的存放位置。接下来,在该目录下创建具体的版本库,假设要创建名为 “myproject” 的版本库,执行命令:
cd /var/svn/svnrepos
svnadmin create myproject
创建成功后,进入 “myproject” 目录,可以看到一系列自动生成的文件和目录,这些文件和目录构成了 SVN 版本库的基本结构。其中,“conf” 目录存放配置文件,“db” 目录存储实际的版本数据等。
配置服务器参数
进入版本库的配置目录,即 “/var/svn/svnrepos/myproject/conf”,该目录下有三个重要的配置文件:
1.authz:负责账号权限管理,控制用户对版本库的读写权限。使用文本编辑器(如 vim)打开该文件,在文件末尾添加如下内容来设置权限:
[/]
admin = rw
上述配置表示 “admin” 用户在整个版本库中拥有读写权限。“/” 代表整个版本库,若要针对特定目录设置权限,可将 “/” 替换为具体目录路径。例如,若要为 “admin” 用户设置 “/myproject/docs” 目录的只读权限,可添加 “[/myproject/docs] admin = r”。
2.passwd:用于管理账号和密码。同样用 vim 打开该文件,在文件末尾添加用户信息,格式为 “用户名 = 密码”,例如:
admin = mypassword
这里添加了 “admin” 用户及其密码 “mypassword”,可根据实际需求添加多个用户。若要添加名为 “user1”,密码为 “password1” 的用户,在文件末尾另起一行添加 “user1 = password1” 即可。
3.svnserve.conf:这是 SVN 服务器的核心配置文件。打开该文件,找到并修改以下配置项:
[general]
anon - access = none
auth - access = write
password - db = passwd
realm = mysvn
其中,“anon - access = none” 表示禁止匿名用户访问;“auth - access = write” 允许授权用户进行写入操作;“password - db = passwd” 指定使用当前目录下的 “passwd” 文件进行密码认证;“realm = mysvn” 设置认证命名空间,该名称会在认证提示界面显示,并作为凭证缓存的关键字,可自定义为版本库名称或有意义的标识。注意,不要放开 “authz - db = authz” 这一行的注释,否则远程连接时可能不会弹出输入用户密码的提示,导致认证失败。
启动 SVN 服务
在完成上述配置后,启动 SVN 服务。在终端中执行命令:
svnserve -d -r /var/svn/svnrepos
“-d” 参数表示以守护进程模式运行,使 SVN 服务在后台持续运行;“-r” 参数指定版本库的根目录,即 “/var/svn/svnrepos”。若要停止 SVN 服务,可使用 “killall svnserve” 命令(需谨慎使用,可能影响正在进行的操作),或通过关闭服务器等方式停止。
设置防火墙
CentOS 7 默认启用了防火墙,需要开放 SVN 服务使用的端口(默认为 3690),以允许外部客户端连接。执行以下命令开放端口:
firewall - cmd --zone = public --add - port = 3690/tcp --permanent
firewall - cmd --reload
第一条命令将 3690 端口添加到公共区域并设置为永久生效;第二条命令重新加载防火墙配置,使设置生效。若使用其他防火墙软件,如 iptables,需相应地配置开放 3690 端口的规则。
此时,SVN 服务器已在 CentOS 7 系统上搭建完成。客户端可以通过 “svn:// 服务器 IP 地址:3690/myproject”(假设服务器 IP 地址为实际的服务器 IP,“myproject” 为创建的版本库名称)访问该 SVN 服务器,输入在 “passwd” 文件中设置的用户名和密码即可进行操作。例如,在 Windows 系统中使用 TortoiseSVN 客户端,在 “Repository - Browser” 中输入上述地址,按照提示输入用户名和密码,即可浏览和操作 SVN 版本库中的文件。
拓展阅读
-SVN 与 Apache 集成:虽然通过 “svnserve” 命令可以启动 SVN 服务,但将 SVN 与 Apache 集成能带来更多功能,如支持 HTTP/HTTPS 协议访问、更好的用户认证和授权管理等。集成时需安装 “mod_dav_svn” 模块,在 Apache 配置文件中进行相应配置,可实现更灵活和安全的 SVN 服务器访问方式。
-版本库存储格式:SVN 版本库有 FSFS 和 BDB 两种存储格式,默认使用 FSFS。FSFS 格式以文件系统的方式存储版本数据,性能较好且更易于维护;BDB 格式使用 Berkeley DB 数据库存储数据。了解不同存储格式的特点,在创建版本库或进行数据迁移时,可根据实际需求选择合适的存储格式。
-SVN 客户端工具使用:除了常见的 TortoiseSVN(Windows 系统),在 Linux 系统中也有多种 SVN 客户端工具,如命令行工具 “svn”、图形化客户端 “RabbitVCS” 等。熟练掌握不同客户端工具的使用方法,能提高与 SVN 服务器交互的效率,满足不同用户的操作习惯。