CENTOS6.8安装配置svn

来源:互联网 发布:00截断原理 php 编辑:程序博客网 时间:2024/05/22 13:42

环境 :centos6.8svn1.6.11

安装svn本来是很简单的事,但由于安装好windows客户端访问出现服务器没有应答的问题,困顿了一段时间,所以记录下问题。

安装svn

官网提供的安装方法:

#yum install subversion mod_dav_svn

我的安装方法:

#检查是否安装了SVN# rpm -qa subversion#卸载旧版本SVN# yum remove subversion#安装SVN,输入官网提供的命令:# yum install subversion mod_dav_svn#若安装有问题,尝试将mod_auth_mysql安上(yum install mod_auth_mysql)#确认已安装了svn模块# cd /etc/httpd/modules# ls | grep svnmod_authz_svn.somod_dav_svn.so

安装完成后查看信息,如图,到此版本控制器安装完成。
查看svn版本信息

最后一句,Cyrus SASL认证可用,说明在配置svn时可选用此认证方法,后文见。

配置仓库

#服务器上创建svn版本仓库:#mkdir /svndata #svnadmin create /svndata#我在服务器上创建了一个svndata目录,作为版本库,目录自己指定。

命令执行完成后,在该目录下将会生成conf、db、hooks、locks等文件夹和format、README.txt文件。版本仓库的配置全在conf文件夹中,进入conf文件夹,有三个文件:authz | passwd | svnserve.conf。

编辑authz文件

为访问次仓库的人分配权限。文件中可以为每个人单独定义,一行定义一个;可以分配到组中,比如开发人员全部定义到一个组(coder)中
#vim authz

  1. 单独定义
    noel=rwnoel用户具有读些权限

  2. 分组定义,以[groups]代表节点开始。定义了三类人员,一类是程序员,一类是办公人员,还有一个老板。每个组的人用逗号分隔。

[groups]coder=noel,harry,joestaff=jin,sallyother=boss

然后为人员分配访问权限,可以组分配权限,可以单独为每个人分配权限。
Boss可以访问整个仓库,切具有读些权限,职员jin也具有读写权限访问整个仓库。匿名用户使用&指定。

[/]@other=wrjin=wr&jim=r

程序员们只能访问仓库中的code文件夹,且其他人没有权限

[/code]@coder=wr*=

以上权限分配方法记得灵活使用,权限有r=读,w=写,无权限为空。

编辑passwd文件

用于存放用户登录svn使用的密码。
格式是 用户名=密码,一个用户一行

编辑svnserve.conf文件

这是访问SVN的控制文件,此配置文件只对于通过svn://访问的方式有效,http:// | file://等方式访问无效。每个配置指令配置文件都有说明。
我的设置如下,仅供参考:

[general]anon-access=none 匿名无法访问auth-access=write 认证的用户具有写权限authz-db=authz 授权的访问者,就是之前配置的authz文件password-db=passwd 指定访问者的密码存放位置,就是之前修改的passwd文件[sasl]#use-sasl=true

Sasl配置节点是可选节点,如果想用Cyrus SASL认证,svn的Cysus SASL就要可用,默认不使用此认证,即使配置了,svn不支持,那么此配置也会被忽略。
到此,svn版本仓库的配置完成,接下来就要启动服务供authz文件中的用户访问。

配置防火墙

#vim /etc/sysconfig/iptables

加入内容,因为svn提供的默认访问端口就是3690:

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

或者直接使用命令,将防火墙规则追加到规则表:

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

保存重启防火墙:

#service iptables restart

启动和停止svn服务:

svnserve -d -r /svndata  #指定仓库位置,并启动后后台运行svn服务Killall svnserve  #停止svn服务

查看svn的状态:

ps -ef|grep svn|grep -v grep#输出类似结果:root 12538 1 0 14:40 ? 00:00:00 svnserve -d -r /svndatanetstat -ln |grep 3690#输出类似结果:tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN

到此,可以通过svn客户端访问仓库了。

出现的问题

在做了以上配置后,windows svn客户端访问输出:

svn Error: Can't connect to host *.*.*.*': 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败

解决思路:
1、 查看服务器端的svn状态
ps -ef|grep svn|grep -v grep 查看svn是否在运行
2、 检查svn服务端,端口是否在监听
netstat -ln |grep 3690
3、 如果没有监听,或在启动的时候指定访问端口:
svnserve -d -r /svndata –listen-port 3690
4、 检查防火墙是否开放3690端口
5、 客户端能否正确链接对应端口
telnet IP 3690
我通过telnet发现输出信息:telnet: connect to address *.*.*.*: No route to host
然后执行如下命令,删除表链中的所有规则:
iptables -F


参考链接:
1、http://blog.163.com/modingfa_002/blog/static/1109254662010021112412843/
2、https://my.oschina.net/junn/blog/164041


Cyrus SASL 是 SASL(Simple Authentication Security Layer简单认证安全层,功能主要是用于SMTP认证) 的一个实现:
1、 wiki
2、开源社区

0 0
原创粉丝点击