CentOS 是一款广泛使用的 Linux 发行版,常用于搭建服务器环境,SVN(Subversion)是一个开源的版本控制系统,而 HTTPD(Apache HTTP Server)则是最流行的 Web 服务器之一,将两者结合使用,可以通过 HTTP 协议访问 SVN 仓库,实现高效的版本控制管理,本文将详细介绍在 CentOS 系统上安装和配置 SVN 与 HTTPD 的完整步骤,帮助您快速搭建稳定的版本控制服务器。

安装前的准备工作
在开始安装之前,确保您的 CentOS 系统已更新至最新的软件包列表,打开终端,执行以下命令更新系统:
sudo yum update -y
建议为 SVN 服务创建一个专用的系统用户和组,以提高安全性,可以使用以下命令创建:
sudo groupadd svn sudo useradd -g svn -s /sbin/nologin -d /var/svn svn
安装 HTTPD 服务器
HTTPD 是 SVN 的必要组件,用于提供 Web 访问服务,执行以下命令安装 HTTPD:
sudo yum install httpd -y
安装完成后,启动 HTTPD 服务并设置开机自启:
sudo systemctl start httpd sudo systemctl enable httpd
为确保 HTTPD 正常运行,可以检查服务状态:
sudo systemctl status httpd
如果显示 active (running),说明服务已成功启动。
安装 SVN 服务器
安装 SVN 服务器软件包,在 CentOS 中,SVN 通常通过 subversion 包提供:
sudo yum install subversion -y
安装完成后,验证 SVN 版本:

svnserve --version
如果显示版本信息,说明 SVN 已成功安装。
创建 SVN 仓库
SVN 仓库用于存储版本控制数据,建议将仓库目录创建在 /var/svn 下,首先创建目录:
sudo mkdir -p /var/svn
然后使用 svnadmin 命令创建一个名为 project1 的仓库:
sudo svnadmin create /var/svn/project1
创建完成后,修改仓库目录的所有权,确保 svn 用户有读写权限:
sudo chown -R svn:svn /var/svn/project1 sudo chmod -R 775 /var/svn/project1
配置 HTTPD 支持 SVN
要让 HTTPD 支持 SVN 访问,需要加载 mod_dav_svn 模块,首先编辑 HTTPD 的主配置文件:
sudo vi /etc/httpd/conf/httpd.conf
在文件末尾添加以下内容:
<Location /svn>
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "SVN Repository"
AuthUserFile /etc/svn/passwd
Require valid-user
</Location>
上述配置允许通过 HTTP 访问 /var/svn 下的所有仓库,并启用基本认证,保存文件后,重启 HTTPD 服务:
sudo systemctl restart httpd
创建 SVN 用户和密码
为了安全访问 SVN 仓库,需要创建认证用户,使用 htpasswd 命令生成密码文件,创建一个名为 user1 的用户:

sudo htpasswd -cm /etc/svn/passwd user1
系统会提示输入密码,如果需要添加更多用户,去掉 -c 参数(避免覆盖现有文件):
sudo htpasswd -m /etc/svn/passwd user2
配置防火墙和 SELinux
CentOS 默认启用防火墙和 SELinux,需要开放 HTTP 服务端口,执行以下命令:
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload
SELinux 处于 enforcing 模式,还需为 HTTPD 配置 SVN 访问权限:
sudo setsebool -P httpd_can_network_connect_db 1 sudo setsebool -P httpd_execmem 1
测试 SVN 访问
使用浏览器或 SVN 客户端访问 http://your_server_ip/svn/project1,输入创建的用户名和密码,如果成功,说明 SVN 仓库已可通过 HTTP 访问,也可以通过命令行测试:
svn co http://your_server_ip/svn/project1
常见问题与解决方案
在配置过程中,可能会遇到一些常见问题,如果访问 SVN 时提示“403 Forbidden”,可能是 SELinux 或权限问题,需检查文件所有权和 SELinux 策略,确保 mod_dav_svn 模块已正确加载,可通过 httpd -M 命令查看。
FAQs
Q1: 如何修改 SVN 仓库的访问权限?
A1: 可以通过编辑仓库的 conf/svnserve.conf 或 HTTPD 配置文件中的 AuthzSVNAccessFile 参数指定权限文件,然后使用 authz 文件精细控制用户或组的访问权限。
Q2: SVN 仓库如何备份?
A2: 可以使用 svnadmin hotcopy 命令创建仓库的热备份,svnadmin hotcopy /var/svn/project1 /backup/project1_backup,或直接压缩整个仓库目录进行备份。