在CentOS操作系统上,通过apache服务器搭建Subversion(SVN)版本控制系统是一种常见且有效的方式,本文将详细讲解如何在CentOS上安装和配置Apache、SVN以及mod_dav_svn模块,并创建一个基本的SVN仓库,确保内容全面、逻辑清晰。
一、安装与配置Apache
1. 安装Apache服务器

使用yum包管理工具可以方便地安装Apache服务器:
- sudo yum install httpd y
2. 启动并启用Apache服务
安装完成后,启动Apache服务并设置其开机自启:
- sudo systemctl start httpd
- sudo systemctl enable httpd
3. 测试Apache安装
在浏览器中访问http://<yourserverip>/,如果看到Apache的默认欢迎页面,说明Apache安装成功。
二、安装与配置SVN及mod_dav_svn模块

1. 安装SVN
使用yum安装Subversion:
- sudo yum install subversion y
2. 检查SVN版本
安装完成后,可以通过以下命令检查SVN的版本:
- svnserve version
3. 安装mod_dav_svn模块
mod_dav_svn是Apache用来访问SVN仓库的模块,使用yum安装:

- sudo yum install mod_dav_svn y
4. 确认模块文件位置
确保mod_dav_svn.so和mod_authz_svn.so两个文件存在于以下目录:
- sudo find / name mod_dav_svn.so
- sudo find / name mod_authz_svn.so
三、创建SVN仓库并配置权限
1. 创建SVN仓库根目录
创建用于存储SVN仓库的根目录:
- sudo mkdir p /var/www/svn
2. 创建SVN项目仓库
使用svnadmin命令创建一个新的SVN仓库:
- sudo svnadmin create /var/www/svn/springhelloworld
3. 修改仓库权限
为了确保Apache能够访问这个仓库,需要修改其所有权:
- sudo chown R apache:apache /var/www/svn/springhelloworld/
4. 创建用户密码文件和权限控制文件
创建存放用户密码的文件:
- sudo touch /var/www/svn/passwd
添加用户(例如admin和guest):
- sudo htpasswd cm /var/www/svn/passwd admin
- sudo htpasswd /var/www/svn/passwd guest
查看用户密码文件的内容:
- sudo cat /var/www/svn/passwd
创建权限控制文件:
- sudo cp /var/www/svn/springhelloworld/conf/authz /var/www/svn/authz
编辑权限控制文件,设置不同用户的访问权限:
- sudo vi /var/www/svn/authz
添加如下内容:
- [groups]
- admin = rw
- guest = r
这表示admin用户具有读写权限,guest用户只有读权限。
四、配置Apache以支持SVN
1. 修改Apache配置文件
创建或编辑Apache的配置文件以支持SVN:
- sudo touch /etc/httpd/conf.d/subversion.conf
在文件中添加以下内容:
- <Location /svn>
- DAV svn
- SVNParentPath /var/www/svn
- AuthType Basic
- AuthName "Authorization SVN"
- AuthUserFile /var/www/svn/passwd
- AuthzSVNAccessFile /var/www/svn/authz
- Require validuser
- </Location>
2. 重启Apache服务
完成配置后,重启Apache使配置生效:
- sudo systemctl restart httpd
五、客户端访问SVN仓库
1. 使用浏览器访问SVN仓库
在浏览器中输入以下URL来访问SVN仓库:http://<yourserverip>/svn/springhelloworld,如果一切配置正确,应该能够看到仓库内容。
2. 使用SVN客户端访问SVN仓库
可以使用SVN客户端(如TortoiseSVN)进行更复杂的操作,如提交、更新等。
六、常见问题与解答(FAQs)
问题1:如何更改SVN仓库的访问权限?
答:要更改SVN仓库的访问权限,可以编辑/var/www/svn/authz
文件,根据需求修改用户的权限,要给名为newuser
的用户赋予读写权限,可以在[/]
部分添加一行:newuser = rw
,然后重启Apache服务使更改生效。
问题2:如何解决“403 Forbidden”错误?
答:“403 Forbidden”错误通常由权限不足引起,首先检查/var/www/svn
及其子目录的所有权是否为apache:apache
,然后确认/etc/httpd/conf.d/subversion.conf
中的路径和文件权限设置正确,检查防火墙设置,确保允许HTTP流量通过,如果问题依旧存在,可以查看Apache的错误日志以获取更多信息。