CENTOS6.8安装配置svn

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012431412/article/details/53378527

环境 :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 svn
mod_authz_svn.so
mod_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,joe
staff=jin,sally
other=boss

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

[/]
@other=wr
jin=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 /svndata
netstat -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、开源社区

猜你喜欢

转载自blog.csdn.net/u012431412/article/details/53378527
今日推荐