Svn———搭建及配置
一、Svn介绍
subversion(简称svn)是近几年崛起的版本管理软件,是cvs的接班人,目前绝大多数开源软件都使用svn作为代码版本管理软件。Subversion支持linux和windows,但较多安装在linux下。
svn服务器常用的有两种运行方式:独立和基于apache (也可基于nginx等web服务)
svn客户端是tortoisesvn
作用:
在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序。由源代码库管理员统一管理这些源程序。每个用户在使用源代码库之前,首先要把源代码库里的项目文件下载到本地,然后开发人员可以在本地修改,然后用svn命令进行提交。而不同的部门也可以上传些资料提供本部门的人员上传下载,类似于ftp,网盘之类的功能。
二、Svn搭建
搭建有两种模式;一种是独立的svn服务,另一种是基于web的svn服务,例如Apache、nginx等。而web模式的svn是基于独立服务器之上建立的
1.)推荐简单点的yum安装,就不用在考虑各种依赖关系了。
yum install -y subversion ,安装完之后查看下:rpm -ql subversion ,如图所示,代表安装成功:
2.)Svn配置
单版本库:
1.首先创建版本库目录:mkdir -p /opt/svn/ "目录可以随意创建指定"。
2.创建版本库:svnadmin create /opt/svn/zt,创建好之后会在zt版本库中生成如图所示的几个文件 "库名可以随意创建指定"。
3.进入到conf中会有三个配置文件:
authz:权限配置文件
passwd:密码文件
svnserve.conf:版本库配置文件“进入版本库配置文件,打开下面的几个注释,注意得顶头写”
anon-access = read #匿名用户可读 auth-access = write #授权用户可写 password-db = passwd #使用哪个文件作为账号文件 authz-db = authz #使用哪个文件作为权限文件 realm = /opt/svn/zt # 认证空间名,版本库所在目录
3.)上诉配置完成之后启动版本库:svnserve -d -r /opt/svn/zt
4.)多版本库:
版本库的创立与上述一样,但是不推荐使用多版本库,因其要实现的功能单版本库也可以做到,而且管理维护相比较难。
如果想在独立svn服务器上运行多个版本库需要为其指定端口。
svnserve --listen-port 3691 -d -r /opt/svn/zt/
svnserve --listen-port 3692 -d -r /opt/svn/repos/
svnserve -d -r /opt/svn/
重启完各个版本库之后再把整个版本库目录启动
5.)客户端访问
下载tortoisesvn,安装完成后,选择文件夹右击checkout,然后进行svn的访问,如图所示:
独立svn的访问:svn://ipaddress:/svn/*** or svn://ipaddress、svn://ipaddress/****
基于web的访问(端口可改):http://ipaddress:80/svn/*** or http://ipaddress、http://ipaddress/****
关于svn的访问格式是不确定的,得多试试,有时候第一种访问格式好使但是再次使用或者在其他机器上进行操作的时候就突然不行了,不知道是为什么。
三、基于apache的svn安装与配置
ps -ef |grep httpd查询apache是否存在 ,反之需yum -y install mod_dav_svn httpd
mod_dav_svn :是Apache的svn模块(可基于yum安装Apache后,进行yum安装mod_dav_svn而不需要其他操作)
1.) 查看svn验证模块 : ls /etc/httpd/modules/ | grep svn
mod_authz_svn.so mod_dav_svn.so
2.) 相关配置文件若不存在可建立:vim /etc/httpd/conf.d/subversion.conf
SVNPath 定义单版本库
SVNParentpath 定义多版本库,当存在多个版本库时此路径定义为all版本库目录;“权限与密码配置文件可能需要指定在版本库目录中,也可能不需要。”
注意“可与独立svn同用authz文件,但是不可同用passwd文件”
3.)创建访问用户(第一创建需要加 -c,代表新建的第一个用户),但是别对已有的密码文件执行此命令,否则会清空所有的信息仅保留方才创建的用户。
htpasswd -c /opt/svn/passwd abc
之后创建用户的命令:htpasswd -b /opt/svn/passwd abcd
删除用户:htpasswd -D passwd abc
4.).赋予权限问题
仅使用Apache模式如下,若与独立svn共用需指定相应组或者属主
chown -R apache.apache /opt/svn/版本库
chmod -R 777 /opt/svn/
5.)authz配置文件讲解
[groups] #在这里设置组,=前是组名,=后面是用户,多用户时可用“,”分开 admin = zt test = abc,user [/] #版本库的根目录,表示对此库有某种权限的配置 @admin = rw * = r #所有用户 [/Documents] #版本库根目录下的子目录 @test = rw [Documents/other] 不加@代表单个用户,加@代表组 user = r
注意赋权时的层次,权限冲突也会照成整个服务器崩掉,而且版本库路径在authz中不可以有乱码否则也不行
创建完成之后只需要重启httpd 就好了service httpd restart
error分析
造成error:Unable to connect to a repository at URL的可能:
1、)svn整体路劲权限、auth中的用户权限
2、)svn所有配置文件中的某个配置项前有空格
3、)独立svn与websvn创建密码的方式不一致,将密码文件混淆使用
不断的循环弹出登录框:
1.)清楚客户端账户缓存、或删除客户端账户文件保存目录
2.)账户不存在或密码错误
3.)server端密码文件清空“注意:在创建用户时加-C,会默认清空密码文件”
注意点:
账户不加入权限认证文件中将具有任何权限
在测试权限的时候千万要注意R/读,W/写的意义,当根目录*=r时,某目录中即使没有设置相应用户的权限,该用户依然可以访问下载。