| 2025-03-6
在 CentOS 系统上搭建基于 Web 的 SVN 服务器,能够通过浏览器方便地访问和管理 SVN 版本库。这需要安装和配置 Subversion、Apache 以及相关模块,以下是详细步骤。
1、 更新系统软件包:打开终端,以 root 用户身份登录系统,执行以下命令更新系统软件包:
yum update -y
此命令会从软件源下载并安装系统和已安装软件包的最新更新,确保系统处于最新状态,避免因软件版本问题导致的兼容性故障。
2、 安装 Subversion:执行以下命令安装 Subversion:
yum install subversion -y
这将安装 Subversion 服务器及其相关依赖项,为搭建 SVN 服务奠定基础。
3、 安装 Apache 及相关模块:执行以下命令安装 Apache Web 服务器以及 mod_dav_svn 模块,该模块用于实现 Apache 与 SVN 的集成:
yum install httpd mod_dav_svn -y
mod_dav_svn 模块允许通过 HTTP/HTTPS 协议访问 SVN 版本库,是实现基于 Web 的 SVN 服务器的关键组件。
1、 选择版本库存储目录:选择一个合适的目录用于存放 SVN 版本库,例如 “/var/svn”。使用以下命令创建该目录并设置权限:
mkdir -p /var/svn
chown -R apache:apache /var/svn
chmod -R 755 /var/svn
mkdir -p 确保目录及其父目录(如果不存在)被创建。chown 命令将目录所有者和所属组设置为 apache,因为后续 Apache 将以该用户身份访问版本库。chmod 设置目录权限为 755,即所有者有读、写、执行权限,其他用户和组只有读和执行权限。
2、 创建版本库:使用 svnadmin 命令创建 SVN 版本库,假设版本库名为 “myproject”,执行以下命令:
svnadmin create /var/svn/myproject
这将在指定目录下创建一个标准结构的 SVN 版本库,包含 conf、db 等重要目录,conf 目录用于存放配置文件,db 目录存储版本数据。
1、 配置访问权限:进入版本库的 conf 目录,执行以下命令:
cd /var/svn/myproject/conf
编辑 svnserve.conf 文件,取消以下几行的注释并根据需求修改:
anon - access = none
auth - access = write
password - db = passwd
authz - db = authz
realm = MyProjectRealm
anon - access = none 禁止匿名用户访问,提高安全性;auth - access = write 允许认证用户进行写操作;password - db = passwd 指定密码文件为同目录下的 passwd 文件;authz - db = authz 指定权限控制文件为 authz;realm 定义认证域,用于标识版本库。
2、 配置用户和权限:编辑 passwd 文件添加用户和密码,每行格式为 “用户名 = 密码”,例如:
user1 = Abc@123456
user2 = Xyz@789012
编辑 authz 文件设置用户和用户组的权限,示例如下:
[groups]
developers = user1, user2
[/]
@developers = rw
*** = r
上述配置创建了 developers 用户组,包含 user1 和 user2,赋予该组在版本库根目录的读写权限,其他用户只有只读权限。
1、 创建 Apache 配置文件:在 Apache 的配置目录(通常为 “/etc/httpd/conf.d/”)下创建一个新的配置文件,例如 “svn.conf”:
nano /etc/httpd/conf.d/svn.conf
2、 配置 SVN 虚拟主机:在 “svn.conf” 文件中添加以下内容,配置 SVN 虚拟主机:
<Location /svn>
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /var/svn/myproject/conf/passwd
AuthzSVNAccessFile /var/svn/myproject/conf/authz
Require valid - user
上述配置中,<Location /svn> 定义了访问 SVN 版本库的 URL 路径为 “/svn”。DAV svn 启用 SVN 的 DAV 功能;SVNParentPath /var/svn 指定 SVN 版本库的父目录;AuthType Basic 设置认证类型为基本认证;AuthName 设置认证提示信息;AuthUserFile 指定用户密码文件路径;AuthzSVNAccessFile 指定权限控制文件路径;Require valid - user 要求用户必须通过认证才能访问。
1、 启动服务:执行以下命令启动 Apache 和 SVN 服务,并设置开机自启:
systemctl start httpd
systemctl start svnserve
systemctl enable httpd
systemctl enable svnserve
2、 测试访问:在浏览器中输入 “http:// 服务器 IP 地址 /svn/myproject”,输入在 passwd 文件中设置的用户名和密码,若能正常访问版本库,则搭建成功。
1、 Apache 虚拟主机高级配置:Apache 虚拟主机支持多种配置选项,如基于域名的虚拟主机配置。通过配置多个
2、 SVN 与 SSL/TLS 加密:为了保障基于 Web 的 SVN 服务器通信安全,可以为 Apache 配置 SSL/TLS 加密。通过获取 SSL 证书(可购买或使用 Let's Encrypt 免费证书)并配置 Apache 的 SSL 模块,实现数据传输加密,防止数据被窃取或篡改。
3、 Web 端 SVN 管理工具:除了通过浏览器直接访问 SVN 版本库,还有一些 Web 端的 SVN 管理工具,如 ViewVC、WebSVN 等。这些工具提供了更友好的界面,方便查看版本历史、比较文件差异等操作,可根据需求选择安装和使用。