Apache SVN 搭建 SVN 服务器
准备工作
在搭建 Apache SVN 服务器之前,需确保系统环境满足要求并完成必要的准备工作,本文以 Linux(CentOS 7)为例,Windows 系统可通过类似步骤或使用集成工具(如 VisualSVN)实现。

系统环境要求
- 操作系统:CentOS 7.x / Ubuntu 18.04+
- 软件依赖:Apache HTTP Server、Subversion(SVN)、mod_dav_svn 模块
- 硬件资源:至少 1GB 内存,10GB 可用存储空间(根据仓库大小调整)
安装依赖软件
通过包管理器安装 Apache 和 SVN:
# CentOS/RHEL yum install -y httpd subversion mod_dav_svn # Ubuntu/Debian apt update && apt install -y apache2 subversion libapache2-svn
安装完成后,启动 Apache 服务并设置开机自启:
systemctl start httpd systemctl enable httpd
创建 SVN 仓库
SVN 仓库是存储版本控制数据的核心,需合理规划目录结构并配置访问权限。
创建仓库目录
mkdir -p /var/svn/repos svnadmin create /var/svn/repos/project1
配置仓库权限
设置仓库目录属主为 Apache 运行用户(apache 或 www-data),并调整权限:
chown -R apache:apache /var/svn/repos chmod -R 755 /var/svn/repos
仓库配置文件说明
仓库目录下会生成 conf 子目录,包含三个关键文件:
svnserve.conf:SVN 服务器核心配置(若通过 Apache 访问,此文件可忽略)passwd:用户密码文件authz:权限控制文件
配置 Apache 访问 SVN
通过 Apache 的 mod_dav_svn 模块,可将 SVN 仓库集成到 Web 服务器中,支持 HTTP/HTTPS 协议访问。
编辑 Apache 配置文件
创建 SVN 专用配置文件 /etc/httpd/conf.d/svn.conf(CentOS)或 /etc/apache2/mods-enabled/dav_svn.conf(Ubuntu):

<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath /var/svn/repos
AuthType Basic
AuthName "SVN Repository"
AuthUserFile /etc/svn/passwd
AuthzSVNAccessFile /etc/svn/authz
Require valid-user
</Location>
创建用户认证文件
使用 htpasswd 命令创建用户并设置密码:
# 创建用户文件(首次运行会自动生成) htpasswd -cm /etc/svn/passwd user1 # 添加更多用户(-c 表示不覆盖已有文件) htpasswd -m /etc/svn/passwd user2
配置权限控制文件
编辑 /etc/svn/authz,定义用户和组的访问权限:
[groups] admin = user1 dev = user1, user2 [/] @admin = rw * = r [/project1] @dev = rw * = r
重启 Apache 服务
systemctl restart httpd
验证 SVN 服务器
完成配置后,需通过客户端工具验证服务器是否正常工作。
命令行验证
使用 svn 命令测试检出仓库:
svn co http://localhost/svn/project1
输入用户名和密码后,若成功下载仓库文件,说明配置正确。
图形客户端验证
推荐使用 TortoiseSVN(Windows)或 RapidSVN(Linux)连接服务器,输入 URL 和认证信息即可访问。
高级配置优化
为提升服务器安全性和性能,可进行以下优化:
启用 HTTPS 加密
通过配置 SSL 证书,确保数据传输安全,以 CentOS 为例:

# 安装 mod_ssl yum install -y mod_ssl # 生成自签名证书(生产环境需使用权威证书) openssl req -new -x509 -nodes -out /etc/pki/tls/certs/svn.crt -keyout /etc/pki/tls/private/svn.key # 修改 SSL 配置 vim /etc/httpd/conf.d/ssl.conf
在 VirtualHost 中添加 SVN 配置:
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/svn.crt
SSLCertificateKeyFile /etc/pki/tls/private/svn.key
<Location /svn>
DAV svn
SVNParentPath /var/svn/repos
AuthType Basic
AuthName "Secure SVN"
AuthUserFile /etc/svn/passwd
AuthzSVNAccessFile /etc/svn/authz
Require valid-user
</Location>
</VirtualHost>
重启 Apache 服务后,可通过 https://localhost/svn 访问。
优化仓库性能
- 增量备份:使用
svnadmin hotcopy定期备份仓库 - 日志管理:配置 Apache 日志轮转,避免日志文件过大
- 访问控制:通过
LimitExcept限制非必要操作(如svn commit仅允许特定 IP)
常见问题排查
权限错误
若提示 403 Forbidden,检查:
- 仓库目录权限是否为
755 - Apache 用户是否对仓库有读写权限
authz文件路径是否正确
连接超时
若客户端访问缓慢,可调整 Apache 超时配置:
<IfModule mod_dav_svn.c>
Timeout 600
DAVMinTimeout 300
</IfModule>
仓库损坏
使用 svnadmin verify 检查仓库完整性,损坏时可尝试修复:
svnadmin verify /var/svn/repos/project1 svnadmin recover /var/svn/repos/project1
通过 Apache 和 Subversion 搭建 SVN 服务器,可为企业或团队提供稳定的版本控制服务,关键步骤包括环境准备、仓库创建、Apache 配置、权限管理和安全优化,实际部署中需根据需求调整参数,并结合备份策略确保数据安全,对于中小型团队,此方案兼具易用性和扩展性,可有效提升协作效率。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/17238.html

