当前位置:首页 > 问答 > 正文

SVN服务器|CentOS 6.3环境下SVN服务器的安装与配置方法

在CentOS 6.3上搭建SVN服务器:手把手教你搞定版本控制

场景引入

"老张,咱们项目组的代码现在到处乱放,每个人电脑上版本都不一样,昨天小王的修改把小李的代码覆盖了,现在整个项目都跑不起来!"——如果你也遇到过这种开发团队的版本管理混乱问题,是时候搭建一个SVN服务器了,今天我就以CentOS 6.3系统为例,带你一步步完成SVN服务器的安装与配置,让你的团队告别代码管理噩梦。

准备工作

在开始之前,我们需要确保几件事:

  1. 一台安装了CentOS 6.3的服务器(物理机或虚拟机都行)
  2. 确保你有root权限或者sudo权限
  3. 服务器能正常连接网络(因为要安装软件包)

第一步:安装必要的软件包

打开终端,我们先来安装SVN服务端和相关组件:

# 更新系统软件包
yum update -y
# 安装SVN服务端和Apache模块(如果你想通过HTTP访问的话)
yum install -y subversion mod_dav_svn

安装完成后,我们可以检查一下版本确认安装成功:

svnserve --version

如果看到类似"svnserve, version 1.6.11"这样的输出,说明安装成功了。

第二步:创建SVN仓库

现在我们来创建一个SVN仓库,假设我们要为"myproject"项目创建仓库:

# 创建SVN根目录(你可以根据实际情况选择其他位置)
mkdir -p /var/svn
# 创建项目仓库
svnadmin create /var/svn/myproject

创建完成后,进入仓库的conf目录,这里有几个重要文件需要配置:

cd /var/svn/myproject/conf

你会看到三个关键文件:

  • authz:权限配置文件
  • passwd:用户密码文件
  • svnserve.conf:SVN服务主配置文件

第三步:配置用户和权限

配置用户密码

编辑passwd文件:

vi passwd

在[users]部分添加用户,格式是"用户名=密码",

[users]
zhangsan = 123456
lisi = abcdef
wangwu = 654321

配置权限

编辑authz文件:

vi authz

设置用户组和权限,

SVN服务器|CentOS 6.3环境下SVN服务器的安装与配置方法

[groups]
developers = zhangsan,lisi
manager = wangwu
[/]
@manager = rw
@developers = rw
* = r

这样配置后,manager组的成员有读写权限,developers组的成员也有读写权限,其他用户只有读权限。

配置SVN服务

编辑svnserve.conf文件:

vi svnserve.conf

找到并修改以下配置(注意去掉前面的#号):

[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = My Project Repository

第四步:启动SVN服务

配置完成后,我们可以启动SVN服务了:

svnserve -d -r /var/svn

如果想开机自动启动,可以把它加入rc.local:

echo "svnserve -d -r /var/svn" >> /etc/rc.local
chmod +x /etc/rc.local

第五步:防火墙配置

如果你的CentOS开启了防火墙,需要开放SVN默认的3690端口:

iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
service iptables save
service iptables restart

第六步:客户端测试

现在可以在客户端测试连接了,在Windows上可以使用TortoiseSVN,Linux/Mac可以使用命令行:

svn checkout svn://你的服务器IP/myproject

系统会提示输入用户名密码,使用我们之前设置的用户登录即可。

可选:配置HTTP访问(通过Apache)

如果你想通过HTTP访问SVN,可以继续以下配置:

首先确保Apache已安装并运行:

yum install -y httpd
service httpd start
chkconfig httpd on

创建HTTP访问的仓库目录:

mkdir -p /var/www/svn
svnadmin create /var/www/svn/myproject
chown -R apache:apache /var/www/svn/myproject

配置Apache:

编辑Apache的SVN配置文件:

SVN服务器|CentOS 6.3环境下SVN服务器的安装与配置方法

vi /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
<Location /svn>
   DAV svn
   SVNParentPath /var/www/svn
   AuthType Basic
   AuthName "Subversion Repository"
   AuthUserFile /var/www/svn/passwd
   Require valid-user
</Location>

创建HTTP访问的用户密码:

htpasswd -cm /var/www/svn/passwd zhangsan
htpasswd -m /var/www/svn/passwd lisi

重启Apache服务:

service httpd restart

现在可以通过http://你的服务器IP/svn/myproject 访问SVN仓库了。

常见问题解决

  1. 权限问题:如果遇到权限错误,确保仓库目录的权限正确:

    chown -R apache:apache /var/www/svn/myproject
  2. 连接被拒绝:检查防火墙是否开放了3690端口(SVN)或80端口(HTTP)

  3. 认证失败:确认passwd文件中的用户名密码正确,且svnserve.conf配置正确

  4. 仓库锁定:如果仓库被锁定,可以尝试:

    svn cleanup

维护建议

  1. 定期备份你的SVN仓库:

    svnadmin dump /var/svn/myproject > /backup/myproject_backup.dump
  2. 考虑设置自动备份脚本

  3. 对于重要项目,可以考虑设置SVN的钩子脚本,在提交时自动执行某些操作

通过以上步骤,你应该已经在CentOS 6.3上成功搭建了SVN服务器,现在你的团队可以开始使用这个中央代码仓库进行协作开发了,虽然现在Git很流行,但SVN依然在很多传统企业中使用,特别是对于那些不需要分布式版本控制的场景。

良好的版本控制习惯比工具本身更重要,建议制定团队的代码提交规范,比如提交时必须填写有意义的日志信息,定期打标签等,这样才能真正发挥版本控制的作用。

发表评论