您的位置:首页 > 运维架构 > Linux

Linux下SVN服务器配置(转载及自己实践的经验)

2014-02-10 12:59 211 查看
由于实验室要做项目,于是要在服务器上配置svn,通过不断地根据网上的配置说明以及自己实践,决定重新总结一下配置svn的过程。

一、配置SVN

这个基本上是照瓢画葫芦,http://www.ha97.com/4467.html

必须软件包

#yum install subversion mysql-serverhttpd mod_dav_svn mod_perl sendmail wget gcc-c++ make unzip perl* ntsysv
vim-enhanced

1. 新建一个目录用于存储SVN所有文件

# mkdir /home/svn

2. 新建一个版本仓库

# svnadmin create /home/svn/project

3. 初始化版本仓库中的目录

# mkdir project project/server project/client project/test (建立临时目录)

# svn import project/ file:///home/svn/project -message “初始化SVN目录”

# rm -rf project (删除临时建立的目录)

4. 添加用户

要添加SVN用户非常简单,只需在/home/svn/project/conf/passwd文件添加一个形如“username=password”的条目就可以了。

[users]

# harry = harryssecret

# sally = sallyssecret

pm = pm_pw

server_group = server_pw

client_group = client_pw

test_group = test_pw

5. 修改用户访问策略

/home/svn/project/conf/authz记录用户的访问策略,以下是参考:

[groups]

project_p = pm

project_s = server1,server2,server3

project_c = client1,client2,client3

project_t = test1,test1,test1

[project:/]

@project_p = rw

* =

[project:/server]

@project_p = rw

@project_s = rw

* =

[project:/client]

@project_p = rw

@project_c = rw

* =

[project:/doc]

@project_p = rw

@project_s = r

@project_c = r

@project_t = r

* =

说明:以上信息表示,只有project_p用户组有根目录的读写权。r表示对该目录有读权限,w表示对该目录有写权限,rw表示对该目录有读写权限。最后一行的* =表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。

6. 修改svnserve.conf文件,让用户和策略配置升效.

svnserve.conf内容如下:

[general]

anon-access = none

auth-access = write

password-db = /home/svn/project/conf/passwd

authz-db = /home/svn/project/conf/authz

7. 启动服务器

# svnserve -d -r /home/svn

注意:如果修改了svn配置,需要重启svn服务,步骤如下:

# ps -aux|grep svnserve

# kill -9 ID号

# svnserve -d -r /home/svn

*这里需要说明的是,有时候会出现一些诡异的问题,可以killall svnserve或者netstat -ntlp直接去看占用3690端口的线程,kill掉即可

8. 测试服务器

#svn co svn://ip/project

# cd project/server

# vim main.c

# svn add main.c

# svn commit main.c -m "test"

*依然需要说明一点,这只是在服务器上的测试,要真正在其他主机上能够check out, commit,还要去防火墙设置,当然可以直接关闭防火墙,即service iptables stop。更好的做法是去防火墙配置文件中,

vi /etc/sysconfig/iptables



-A INPUT -j REJECT --reject-withicmp-host-prohibited

-A FORWARD -j REJECT --reject-withicmp-host-prohibited

之前输入(因为这两句的意义为在INPUT表和FORWARD表中拒绝所有其他不符合上述任何一条规则的数据包。并且发送一条host prohibited的消息给被拒绝的主机。

-A INPUT -m state --state NEW -m tcp -p tcp--dport 3690 -j ACCEPT

然后重启防火墙

service iptables restart

具体防火墙说明见http://wiki.centos.org/HowTos/Network/IPTables

二、配置SVN服务器的HTTP支持

1. 转换SVN服务器的密码

由于SVN服务器的密码是明文的,HTTP服务器不与支持,所以需要转换成HTTP支持的格式。使用原文中的Perl脚本完成这个工作.

脚本内容如下:

# cd /home/svn/project/conf/

# vim PtoWP.pl

#!/usr/bin/perl

# write by huabo, 2009-11-20

 

use warnings;

use strict;

 

#open the svn passwd file

open (FILE, "passwd") or die("Cannot open the passwd file!!!n");

 

#clear the apache passwd file

open (OUT_FILE, ">webpasswd")or die ("Cannot open the webpasswd file!!!n");

close (OUT_FILE);

 

#begin

foreach (<FILE>) {

if($_ =~ m/^[^#].*=/) {

$_ =~ s/=//;

`htpasswd -b webpasswd $_`;

}

}

# chmod +x PtoWP.pl

# ./PtoWP.pl

Adding password for user pm

Adding password for user server_group

Adding password for user client_group

Adding password for user test_group

现在目录下会多一个webpasswd文件。

2. 修改httpd.conf,添加关于SVN服务器的内容

编辑/etc/httpd/conf/httpd.conf,在最后添加如下信息:

<Location /project>

DAV svn

SVNPath /home/svn/project/

AuthType Basic

AuthName "svn for project"

AuthUserFile /home/svn/project/conf/webpasswd

AuthzSVNAccessFile /home/svn/project/conf/authz

Satisfy all

Require valid-user

</Location>

3. 修改svn目录的属主为apache帐号:chown -R apache.apache/home/svn/project/

4. 重启Web服务器:

# /etc/init.d/httpd restart

Stopping httpd: [FAILED]

Starting httpd: [ OK ]

5. 用浏览器访问http://ip/project/server/测试
*如果服务器没有设置过httpd需要去防火墙里设置80端口,具体和之前一样。

其他的目前还用不到。按原文做如果有问题应该还是服务器的某些配置有问题。个人笔记本上用win7 TortoiseSVN可以顺利连接并check out。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: