安装和配置Subversion版本控制系统
在CentOS系统中添加SVN项目,首先需要确保Subversion服务已正确安装和配置,Subversion(简称SVN)是一个开源的版本控制系统,广泛用于管理文件和目录的变更历史,以下是详细的步骤,帮助你在CentOS上完成SVN的安装和基本配置。

安装Subversion服务
通过yum包管理器安装Subversion,打开终端,执行以下命令:
sudo yum install subversion -y
安装完成后,验证SVN是否成功安装,运行以下命令检查版本:
svnserve --version
如果显示版本信息,说明安装成功,创建SVN仓库目录,通常选择/var/svn作为默认路径:
sudo mkdir -p /var/svn
然后使用svnadmin命令创建一个新的仓库,例如myproject:
sudo svnadmin create /var/svn/myproject
配置SVN仓库权限
SVN仓库的权限通过conf目录下的三个文件管理:svnserve.conf、passwd和authz,首先编辑svnserve.conf,启用匿名用户访问控制和认证:
sudo vim /var/svn/myproject/conf/svnserve.conf
[general] anon-access = none auth-access = write password-db = passwd authz-db = authz realm = My Project Repository
anon-access = none禁止匿名访问,auth-access = write允许认证用户读写。
配置用户密码,编辑passwd文件:
sudo vim /var/svn/myproject/conf/passwd
添加用户和密码,格式为username = password,
[users] admin = password123 user1 = mypassword
设置访问权限控制
使用authz文件管理用户或组的访问权限,编辑该文件:

sudo vim /var/svn/myproject/conf/authz
定义权限规则,
[groups] admins = admin developers = user1 [/] @admins = rw * = r
这里,@admins组的成员对根目录有读写权限,其他用户()只读权限,可根据实际需求调整规则。
启动SVN服务
配置完成后,启动SVN服务并设置开机自启,运行以下命令:
sudo svnserve -d -r /var/svn
参数-d表示以守护进程模式运行,-r指定仓库根目录,验证服务是否启动:
ps aux | grep svnserve
若显示进程信息,则服务运行正常。
防火墙与SELinux配置
默认情况下,CentOS的防火墙可能阻止SVN服务的3690端口,需要开放该端口并配置SELinux策略。
开放防火墙端口
执行以下命令开放SVN端口:
sudo firewall-cmd --permanent --add-port=3690/tcp sudo firewall-cmd --reload
配置SELinux
SELinux的强制访问控制(MAC)可能阻止SVN服务,临时关闭SELinux进行测试:
sudo setenforce 0
若测试通过,永久修改配置文件:

sudo vim /etc/selinux/config
将SELINUX=enforcing改为SELINUX=permissive。
访问和管理SVN项目
使用SVN客户端检出项目
在另一台机器上,使用SVN客户端检出项目,通过以下命令检出myproject:
svn checkout svn://server_ip/myproject
输入配置的用户名和密码后,即可下载项目文件。
管理SVN仓库
添加新用户或修改权限时,直接编辑passwd和authz文件,然后重启SVN服务使配置生效:
sudo pkill svnserve sudo svnserve -d -r /var/svn
常见问题与解决方案
FAQs
-
问题:SVN服务启动失败,提示“权限被拒绝”怎么办?
解答:这通常是由于仓库目录权限不正确导致的,确保运行SVN服务的用户(如apache或root)对仓库目录有读写权限,执行以下命令修复:sudo chown -R root:root /var/svn sudo chmod -R 755 /var/svn
-
问题:如何通过HTTP协议访问SVN仓库?
解答:默认情况下,SVN通过svn://协议访问,若需HTTP支持,需安装Apache并配置mod_dav_svn模块,步骤如下:- 安装Apache和SVN模块:
sudo yum install httpd mod_dav_svn -y
- 创建SVN位置别名:
sudo vim /etc/httpd/conf.d/subversion.conf
<Location /svn> DAV svn SVNParentPath /var/svn AuthType Basic AuthName "SVN Repository" AuthUserFile /etc/svn-auth-users Require valid-user </Location>
- 重启Apache服务:
sudo systemctl restart httpd
- 此时可通过
http://server_ip/svn/myproject访问仓库。
- 安装Apache和SVN模块: