Linux安装svn并添加用户权限

一 . 下载安装包

开始安装前我们先下载好需要安装的svn版本

1. subversion-1.6.17.tar.gz

2. subversion-deps-1.6.17.tar.gz

二:创建用户并解压安装包
在服务器中创建好一个svnroot用户,然后解压我们下载好的安装包 路径可以自己定 /home/svn/

1. tar -xzvf  subversion-deps-1.6.17.tar.gz

2. tar -xzvf  subversion-1.6.17.tar.gz

三:.添加环境变量

进入到/etc/profile 中, 添加如下:

exprot PATH=$PATH:/home/svnroot/subversion/bin

查看是否安装成功

/home/svnroot/subversion/bin/svnserve --version

//如果出现SVN的版本则证明安装成功

四:    创建仓库以及目录

mkdir  -p  /home/svnroot/svndata/repos1

加上参数P,是如果没有父目录则自动创建

注意: /home/svnroot/svndata在这里将是所有仓库的根目录,repos1是其中的一个仓库。

2. 创建仓库

svnadmin create  /home/svnroot/svndata/repos1

这里使用SVN将repos1建立为仓库。则在repos1文件夹里会生成一系列对于repos1仓库相应的配置文件

五:  配置仓库文件

1. 查看创建仓库后的文件

进入/svndata/repos1/conf,会发现有几个配置文件

2. 修改svnserve.conf

vi svnserve.conf

打开这个配置文件,可以看到很多配置项已经注释掉了,只需要按下面这几项修改就可以了

[general]

anon-access = none

auth-access = write

password-db = passwd

authz-db=authz

3. 目录控制文件authz (也可以叫权限控制文件)

vi authz

默认是没有配置的,要参照下面示例来配置

[groups]

usergroup= user

[repos1:/]

@userroup = rw

user= rw

上面的配置权限控制文件的配置格式如下:

[groups]

<用户组名> = <用户1>,<用户2>, ……

[<版本库>:/项目/目录]

@<用户组名> = <权限>

<用户名> = <权限>

其中,方框号内部分可以有多种写法:

/,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/home/svnadmin/svndata。这样,/就是表示对全部版本库设置权限。

repos1:/,表示对版本库1设置权限

repos2:/occi,表示对版本库2中的occi项目设置权限

repos2:/occi/aaa,,表示对版本库2中的occi项目的aaa目录设置权限

权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。

4. 修改用户密码文件passwd

vi passwd

默认也是没有配置任何用户的,可按下面配置示例配置

[users]

user= 123456

用户密码的配置格式:

[users]

<用户1> = <密码1>

<用户2> = <密码2>

注意:这里的配置文件,除了注释外每行都必须顶行,否则又会报错了。

六: 启动svn服务

svnserve -d -r /home/svnadmin/svndata

-d表示在后台运行,-r表示……

也可以用 service svnserver start来启动svn服务
注意:这里是/home/svnadmin/svndata,并非/home/svnadmin/svndata/repos1。这是SVN使所有仓库根目录都生效的命令,并非某个仓库。这里必须注意。

启动成功后, 就可以再windows下用你的svn工具连接了

七: SVN的错误:Error: Can’t connect to host ”: 由于目标机器积极拒绝,无法连接

安装完TSVN之后,checkout时报错,并且后来在cmd命令行下,测试svn的3690端口是否打开:telnet localhost 3690 ,结果也是不成功,后来发现少执行了一步操作。

正确的做法:安装完TSVN之后,在subversion的安装路径下,找到bin文件夹,需要完成下面几步操作:

1、在下面新建一个setupservice.bat文件,内容是

sc create svnserve binpath= "C:/Program Files/Subversion/bin/svnserve.exe --service -r d:/svnhome" depend= Tcpip start= auto
sc start svnserve
pause

保存

2、运行,这是在服务里可找到一个名为svnserve的服务。这样就不会报“由于目标机器积极拒绝,无法连接。”这个错了。

我后来找到了我是因为没有执行第二步,所以svnserve没有作为一个服务启动。

这是在cmd命令行下查看打开的端口:netstat -ano就看到3690端口打开了

3.Linux的防火墙配置文件iptables,一般位置为 /etc/sysconfig/,要想加入SVN端口(默认3690),可用编辑器或vi命令加入以下行(大家在这记着打开超级管理员权限):
#SVN

-A INPUT -i eth0 -p tcp -m tcp --dport 3690 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 3690 -j ACCEPT

然后重启防火墙,

service iptables restart