RHEL 环境下 Subversion 服务器部署与配置
1. 更新系统
首先确保系统软件包是最新的:
sudo yum update -y
2. 安装Apache和Subversion
2.1 安装Apache HTTP服务器和Subversion
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