通过Apache HTTP Server部署SVN

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、访问测试

11、HTTPS加密

使用OpenSSL生成证书并配置Apache的SSL模块。

12、多版本库管理

用SVNParentPath替代SVNPath,指向版本库父目录:

复制代码
SVNParentPath /var/svn

13、自动同步钩子

在版本库的hooks目录下配置post-commit脚本,实现提交后自动同步。

常见问题

  • 权限拒绝错误 :确保/var/svn目录权限为apache:apache
  • 模块未加载 :检查mod_dav_svnmod_authz_svn是否启用。
  • 路径不匹配:Apache配置中的路径需与实际存储路径一致。
相关推荐
梦想画家12 小时前
Apache Kafka实时数据流处理实战指南
分布式·kafka·apache
向上的车轮13 小时前
SVN与GIT的区别,分别使用与哪些管理场景?
git·svn
lang2015092818 小时前
Apache Ignite 的 JDBC Client Driver(JDBC 客户端驱动)
apache·ignite
白鹭2 天前
基于LNMP架构的分布式个人博客搭建
linux·运维·服务器·网络·分布式·apache
猫头虎2 天前
GitHub下载教程:2025年最新详解从GitHub上传、下载文件、子目录与完整项目【图文教程】
git·svn·gitee·开源·github·gitea·gitcode
努力的小郑2 天前
亿级流量下的生死抉择:Apache BeanUtils vs MapStruct性能差距32倍!架构师选型指南
java·spring·apache
努力的小郑2 天前
BeanUtils拷贝大对决:Spring与Apache Commons的差异与妙用
java·spring·apache
自由鬼2 天前
Apache HTTP Server 2.4.49 的目录遍历漏洞CVE-2021-41773
网络协议·http·apache
lang201509282 天前
Apache Ignite 索引(Indexes)定义和使用
apache·ignite
百川2 天前
Apache文件解析漏洞
web安全·apache