1、安装Apache HTTP Server
yum install -y httpd # CentOS/RHEL
2、安装Subversion及相关模块
yum install -y subversion mod_dav_svn mod_authz_svn
mod_dav_svn
:Apache与SVN集成模块mod_authz_svn
:权限管理模块
3、创建版本库
mkdir -p /var/svn/repos # 创建存储目录
svnadmin create /var/svn/repos --fs-type fsfs
chown -R apache:apache /var/svn/repos # 权限归属Apache用户
4、配置用户认证文件
htpasswd -c /etc/svn/passwd admin # 创建用户admin并设置密码
文件路径需与后续Apache配置匹配。
5、启用SVN模块
编辑Apache配置文件(路径因系统而异,如/etc/httpd/conf/httpd.conf
):
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
6、添加SVN仓库访问配置
在配置文件中追加以下内容:
<Location /svn>
DAV svn
SVNPath /var/svn/repos # 版本库路径
AuthType Basic
AuthName "SVN Repository"
AuthUserFile /etc/svn/passwd # 用户认证文件
Require valid-user
AuthzSVNAccessFile /etc/svn/authz # 权限控制文件
</Location>
/svn
为访问路径,可通过浏览器访问。
7、配置权限文件(/etc/svn/authz)
[groups]
dev = user1,user2
admin = admin
[/]
@admin = rw
@dev = r
* =
* =
表示匿名用户无权限。
8、重启Apache服务
systemctl restart httpd # CentOS/RHEL
9、防火墙与SELinux配置
firewall-cmd --permanent --add-service=http --add-service=https
firewall-cmd --reload
setenforce 0 # 临时关闭SELinux(生产环境需调整策略)
10、访问测试
- 浏览器访问:
http://服务器IP/svn
- SVN客户端操作:svn checkout http://服务器IP/svn
11、HTTPS加密
使用OpenSSL生成证书并配置Apache的SSL模块。
12、多版本库管理
用SVNParentPath替代SVNPath,指向版本库父目录:
SVNParentPath /var/svn
13、自动同步钩子
在版本库的hooks目录下配置post-commit脚本,实现提交后自动同步。
常见问题
- 权限拒绝错误:确保
/var/svn
目录权限为apache:apache
。 - 模块未加载:检查
mod_dav_svn
和mod_authz_svn
是否启用。 - 路径不匹配:Apache配置中的路径需与实际存储路径一致。