Linux下的SVN服务器搭建

鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人

本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此总结

/******开始*********/

系统环境:Centos 6.5

第一步:通过yum命令安装svnserve,命令如下:

yum -y install subversion

此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停止命令运行(需虚拟机联网)

若需查看svn安装位置,可以用以下命令:

rpm -ql subversion

第二步:创建版本库目录(此仅为目录,为后面创建版本库提供存放位置)

选择在var路径下创建版本库,当前处于根目录下,一次性创建如下:

mkdir /var/svn/svnrepos

第三步:创建svn版本库

在第二步建立的路径基础上,创建版本库,命令如下:

svnadmin create /var/svn/svnrepos/xxxx   (xxxx为你预期的版本库名称,可自定义)

例: svnadmin create  /var/svn/svnrepos/public

创建成功后,进入xxx目录下

cd /var/svn/svnrepos/xxxx

进入目录,可以看见如下文件信息:

第四步:配置修改

进入已经创建好的版本库目录下,也就是前文说创建的xxxx

进入conf

cd /var/svn/svnrepos/xxxx/conf

conf目录下,一共存放三份重要的配置文件,如下:

 

authz:负责账号权限的管理,控制账号是否读写权限

passwd:负责账号和密码的用户名单管理

svnserve.conf:svn服务器配置文件

细节修改如下:(希望大家严格按照以下信息,不用参考网络上其他资料)

修改authz文件信息,如下:

>vi authz

在文件内容的末尾,添加如下:

 

只需在末尾添加,无需在文件其他部分修改和添加任何东西(请忽略groups被我马赛克的地方,那其实也是条无用的记录,我忘记删掉而已),末尾内容如下:

[\]

账号1 = rw

账号2 = rw

。。。。。

( 设置哪些用户可以访问哪些目录,向authz文件追加以下内容:

[/] zhoulf=rw  //给该用户访问所有库的权限

 

[public:/project]  //public库的根目录权限

zhoulf=rw

/ 表示根目录及以下,根目录是svnserve启动时指定的,我们指定的是/var/svn;/ 就是指对全部版本库都具有权限

xxx = rw 表示赋予此账号可读写的权限

xxx = r 则表示“那些人只能读,不能写” 

PS:

* 权限配置文件中出现的用户名必须已在用户配置文件中定义。

* 对权限配置文件的修改立即生效,不必重启svn。

* 请注意[]中的斜杠,一定是反斜杠 )

修改passwd文件信息

>vi passwd

账号密码文件无需做修改,也是直接将账号和密码信息追加到文件中即可,注意格式为:

账号 = 密码

例如:admin = 123456

修改svnserve.conf(重要)

vi svnserve.conf

原始文件内容,都被注释掉的,我们只需要去掉4条指定内容前注释即可,如下:

 

大多数网络资料,都会让大家将authz-db = authz这条给去掉注释,经过我本人多次被坑经验,此条去掉后,虽然svn服务器可以连接,但一直会提示“认证失败”,注释掉即可正常

还有多数资料会让大家在realm = My First Repository处填写服务器ip,经过测试,填写后并无什么用处,所以大家去掉注释即可,无需做任何修改

到此,配置已经全部完成,账号信息已经添加成功

第五步:防火墙开启

多数情况下服务器安装完成,配置完成后,无法连接svn服务器,均是防火墙问题,大家按照如下3条命令逐一执行即可

打开防火墙配置文件, 添加端口,才可供远程访问

    vim /etc/sysconfig/iptables

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

重启防火墙

service iptables restart

 

六:启动svn服务器

在跟目录下,执行如下命令:

svnserve -d -r /var/svn/svnrepos

启动成功后,可用ps -aux查看服务启动是否成功

killall svnserve //停止

查看SVN进程

[root@localhost /]# ps -ef|grep svn|grep -v grep

root      13465      1  0 01:23 ?        00:00:00 svnserve -d -r /var/svn/svnrepos

检测SVN端口

[root@localhost /]# netstat -ln |grep 3690

tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN  

七:客户端访问svn服务器

在windows客户端,输入地址:svn://192.168.2.204/public   (iP地址为你linux的ip,xxxx为前文创建的版本库名称,3690为svn默认端口)

弹出输入用户名和密码,输入即可访问

到此,Linux下svn服务器搭建就总结完毕,感谢大家的阅读

如果此文有帮助到你,请帮忙推广

(原创,转载请注明来源,翻版必究)

注意:

如果启动访问后提示:

    Malformed file

svn: Unable to connect to a repository at URL 'svn://192.168.2.204/public'

svn: /var/svn/svnrepos/public/conf/svnserve.conf:12: Option expected

 错误原因:在刚才去掉注释#号没有将前面空格删除。svnserve.conf文件19行anon-access属性前有个空格,去掉前面的空格再次访问又报“认证失败”,检查了一下配置文件,发 现authz文件的[groups]没有指定访问资源路径,在[groups]下面增加了"[/]"(访问所有资源,也可以指定文件夹,如[/svn/资 料]),问题终于解决了。

经验分享之SVN禁止删除和强制注释操作的钩子脚本pre-commit

【操作步骤】

1、找到需要加权限的版本库中hooks目录下的pre-commit.tmpl文件,将其重命名,将后缀去掉,为pre-commit脚本文件。如果没有该文件,则新建脚本pre-commit。

cp -i pre-commit.tmpl ./pre-commit

2、修改pre-commit文件内容

原来的内容都注释掉,即在没有“#”的代码前加“#”,然后添加下面的内容:

#!/bin/sh

REPOS="$1"

TXN="$2"

# Make sure that the log message contains some text.

SVNLOOK=/usr/bin/svnlook

if [ -z `$SVNLOOK log -t "$TXN" "$REPOS" |grep "[a-zA-Z0-9]"` ];then  

        echo "nLog message cann't be empty! you must input more than 5 chars as comment!." >&2  

    exit 1  

fi  

USER=`$SVNLOOK author -t $TXN $REPOS`  

ADMINLIST=admin  

if  [ "`echo $ADMINLIST|grep -w $USER|wc -l`" -eq 0 ];then  

    if [ `$SVNLOOK changed -t $TXN $REPOS |grep "^D "|wc -l` -gt 0 ];then  

        echo "You Don't have the pemmision of delete!Please contact your administrator!" >&2           

        exit 1  

    fi  

fi  

exit 0  

SVNLOOK=/usr/bin/svnlook   #此处根据你的系统变量而定,你可以通过which svnlook来确定

ADMINLIST=admin,helijie  表示只有admin和helijie这两个用户有删除文件的权限,如果还有其他人,只需用逗号隔开,当然,这些用户名需要在conf下的passwd文件中进行配置

3、给钩子脚本执行权限   chmod 755 pre-commit,不需要重启

4、测试

没有输入注释:

删除:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值