RHEL 环境下 Subversion 服务器部署与配置

RHEL 环境下 Subversion 服务器部署与配置

1. 更新系统

首先确保系统软件包是最新的:

复制代码
sudo yum update -y

2. 安装Apache和Subversion

2.1 安装Apache HTTP服务器和Subversion

使用以下命令安装 Apache、Subversion 及其与 Apache 集成的模块:

复制代码
sudo yum install -y httpd subversion mod_dav_svn

2.2 启动并设置Apache自启动

复制代码
sudo systemctl start httpd
sudo systemctl enable httpd

3. 创建SVN仓库

3.1 创建仓库的父目录

复制代码
sudo mkdir -p /var/svn

3.2 创建仓库

复制代码
sudo svnadmin create /var/svn/myrepo

3.3 设置文件权限

复制代码
sudo chown -R apache:apache /var/svn/myrepo
sudo chmod -R 755 /var/svn/myrepo

4. 配置Apache来支持SVN

4.1 编辑Apache配置文件

/etc/httpd/conf.d/ 目录下创建或编辑 subversion.conf 文件:

复制代码
sudo vi /etc/httpd/conf.d/subversion.conf

添加以下内容:

复制代码
# 加载Subversion模块
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
​
<Location /svn>
   DAV svn
   SVNParentPath /var/svn
   AuthType Basic
   AuthName "Subversion Repository"
   AuthUserFile /etc/svn-auth-users
   Require valid-user
</Location>

4.2 创建用户认证文件

复制代码
sudo htpasswd -cm /etc/svn-auth-users user1

4.3 配置防火墙

复制代码
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

4.4 重启Apache服务

复制代码
sudo systemctl restart httpd

5. 测试SVN服务器

5.1 通过Web浏览器测试

访问 http://<your-server-ip>/svn/myrepo

5.2 使用SVN客户端测试

复制代码
svn checkout http://<your-server-ip>/svn/myrepo

6. 配置SVN访问控制

编辑仓库的 authz 文件:

复制代码
sudo vi /var/svn/myrepo/conf/authz

示例内容:

复制代码
[groups]
developers = user1, user2

[/]
* = r
@developers = rw

7. 日志和故障排查

7.1 检查Apache日志

复制代码
sudo tail -f /var/log/httpd/error_log

7.2 检查SVN仓库日志

复制代码
sudo tail -f /var/svn/myrepo/logs/repository.log

8. 高级配置(可选)

8.1 配置SSL(启用HTTPS)

subversion.conf 中更改以下内容:

复制代码
<Location /svn>
   DAV svn
   SVNParentPath /var/svn
   SSLRequireSSL
   AuthType Basic
   AuthName "Subversion Repository"
   AuthUserFile /etc/svn-auth-users
   Require valid-user
</Location>

8.2 使用钩子(Hooks)

SVN支持钩子脚本,可以在仓库的 hooks 文件夹中找到相关模板。

8.3 备份和恢复SVN仓库

备份:

复制代码
svnadmin dump /var/svn/myrepo > /backup/myrepo-backup.dump

恢复:

复制代码
svnadmin load /var/svn/myrepo < /backup/myrepo-backup.dump