通过Apache HTTP Server部署SVN

server/2025/3/16 5:18:10/

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 svnSVNPath /var/svn/repos       # 版本库路径AuthType BasicAuthName "SVN Repository"AuthUserFile /etc/svn/passwd  # 用户认证文件Require valid-userAuthzSVNAccessFile /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_svnmod_authz_svn是否启用。
  • 路径不匹配:Apache配置中的路径需与实际存储路径一致。

http://www.ppmy.cn/server/175328.html

相关文章

opencv-显示图片

安装软件 sudo apt install python3 //确保虚拟机只有python3 ln -sf /usr/bin/python3.6 /usr/bin/python sudo apt install python3-pip pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple pip install opencv-contrib-python -i https://pypi.tuna…

C# 使用Markdown2Pdf把md文件转换为pdf文件

NuGet安装Markdown2Pdf库&#xff0c;可以把格式简单markdown文件转换为pdf。但该库用了Puppeteer Sharp&#xff0c;因此会在运行过程中提示指定Chrome浏览器路径或自动下载Chrome浏览器。 代码如下&#xff1a; using Markdown2Pdf;var converter new Markdown2PdfConverte…

pytorch中的基础数据集

数据是深度学习核心之一pytorch基础数据集介绍加载/读取/显示/使用代码演示与解释 常见的数据集Pascal VOC/COCO DataLoader DataLoader( dataset, 含义&#xff1a;指定要加载的数据集&#xff0c;它必须是 torch.utils.data.Dataset 类的子类实例。Dataset 类定义了如何获…

PyTorch多机训练Loss不一致问题排查指南:基于算子级一致性验证

比较二次训练过程中所有算子的误差,定位存在一致性问题的pytorch算子 一.背景二.技术方案1.核心思路2.关键技术点 三.代码 一.背景 在分布式训练场景中&#xff0c;观察到以下现象&#xff1a; 相同超参配置下&#xff0c;多次训练的Loss曲线存在显著差异&#xff08;波动幅度…

移远通信联合德壹发布全球首款搭载端侧大模型的AI具身理疗机器人

在汹涌澎湃的人工智能浪潮中&#xff0c;具身智能正从实验室构想迈向现实应用。移远通信凭借突破性的端侧AI整体解决方案&#xff0c;为AI机器人强势赋能&#xff0c;助力其实现跨行业拓展&#xff0c;从工业制造到服务接待&#xff0c;再到医疗康养&#xff0c;不断改写各行业…

Qt信号与槽

1.信号与槽概述 在Qt中&#xff0c;用户和控件的每一次交互过程称为一个事件。比如“用户点击按钮”是一个事件&#xff0c;“用户关闭窗口”也是一个事件。 每个事件都会发出一个信号。例如用户点击按钮会发出“按钮被点击”的信号&#xff0c;用户关闭窗口会发出“窗口被关闭…

Android7上移植I2C-tools

一&#xff0c;下载源码 cd hardware/libhardware/tests git clone https://git.kernel.org/pub/scm/utils/i2c-tools/i2c-tools.git 二&#xff0c; 在 i2c-tools 目录添加 Android.mk 编译文件 LOCAL_PATH: $(call my-dir)################### i2c-tools ###############…

HCIA-11.以太网链路聚合与交换机堆叠、集群

链路聚合背景 拓扑组网时为了高可用&#xff0c;需要网络的冗余备份。但增加冗余容易后会出现环路&#xff0c;所以我们部署了STP协议来破除环路。 但是&#xff0c;根据实际业务的需要&#xff0c;为网络不停的增加冗余是现实需要的一部分。 那么&#xff0c;为了让网络冗余…