SVN服务器安装配置(Windows、Linux)

==============Windows安装SVN======================

环境说明:
----------------------------------------------------
windows 2003
svn-win32-1.5.6.zip 解压版

安装
----------------------------------------------------
解压svn-win32-1.5.6.zip,到d:\svn\svn-win32-1.5.6下,安装就完成了。
可选配置环境变量,配置一下吧,在环境变量path中加入D:\svn\svn-win32-1.5.6\bin;

创建版本库

----------------------------------------------------
进入CMD, 输入svnadmin create d:\svn\库名称 ,就创建好了。
d:\svn\库名称\conf是配置文件可添加用户与权限。

遇到问题:

----------------------------------------------------
svnserve.conf:12: Option expected的问题解决方法
为什么会出现这个错误呢,就是因为subversion读取配置文件svnserve.conf时,无法识别有前置空格的配置文件,如:
[general]
### These options control access to the repository for unauthenticated
### and authenticated users.  Valid values are "write", "read",
### and "none".  The sample settings below are the defaults.
anon-access = read
   auth-access = write
像上面的配置文件中,anon-access是顶行的,没问题,而auth-access就存在前置空格,会导致这个错误。

SVN客户端取消记住用户名的方法

---------------------------------------------------
以前为了省事,记住了svn的用户名和密码,现在在同一个服务器上用另外一个用户名取文件,一直提示没有权限,鼠标右键看了一遍也没发现有取消用户名的地方,百度了一下,只能用下面方法搞定。

打开C:\Documents and Settings\用户名\Application Data\Subversion\auth\svn.simple,找出以前记住密码那个文件删掉,然后重新更新即会弹出输入用户名密码的界面,输入用户名密码搞定。

Windows下SVN权限配置说明(一个目录下多库)
----------------------------------------------------
1、        本文档适用于对Subvesion的自带服务svnserve进行权限配置,全部在authz文件中完成。

2、        如果要对含有中文的目录或文件进行管理或分配时,需要将该文件保存为UTF-8格式,微软的记事本保存为UTF-8格式无效,所以不要用。可用如UltraEdit或EditPlus等软件完成,保存时,格式应选择UTF-8 NO BOM。

3、        权限分配时,应遵守从根目录到子目录、从设置最广泛权限到最精细权限、从只读权限到读写权限设置原则,即从根目录开始设置最广泛的访问权限,然后逐步设置下属子目录的访问权限。提示:目录的访问权限既可以分配给组,也可以分配指定用户。
现举例进行说明:
启动服务:服务应指向所有版本库的根目录,本例中为D:\SVN,命令如下:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN" displayname= "SVNService" depend= Tcpip start= auto
项目情况:D盘根目录下有一个文件夹SVN,在该文件夹中有jsyxv3、svntest两个版本库(可以有更多个),这些版本库共享使用同一个权限配置文件,目录结构如下:
D:\SVN
|---jsyxv3        (项目一,子目录略)
|---svntest        (项目二,子目录略)
|---authz        (共享的权限配置文件)
|---passwd        (共享的密码文件)

#=====配置开始=====
#分组:
[groups]
group_admin = wws,aaa,bbb
group_user1 = sj,ccc
group_user2 = sy,dd,eeee
group_user3 = lxt
group_user4 = ss

#设置对根(即SVN)目录下,所有版本库的访问权限
[/]
* = r                #所有登录用户默认权限为只读
@group_admin = rw   #可以分配给组,该组有读写权限
wws = rw            #也可以像这样分配给指定用户

#以下将对各版本库的及其目录进行权限分配
[jsyxv3:/]            #设置对jsyxv3版本库中,所有项目的访问权限
* =                 #未授权用户没有任何权限
@group_user1 = rw

[jsyxv3:/程序管理]    #设置对jsyxv3版本库中程序管理目录的访问权限
* =                 #未授权用户没有任何权限
@group_user2 = rw

[jsyxv3:/项目管理]    #设置对jsyxv3版本库中项目管理目录的访问权限
* =                 #未授权用户没有任何权限
@group_user3 = rw

[svntest:/]            #设置对svntest版本库中,所有项目的访问权限
* =                 #未授权用户没有任何权限
@group_user1 = rw

[svntest:/程序管理]    #设置对svntest版本库中程序管理目录的访问权限
* =                 #未授权用户没有任何权限
@group_user2 = rw
@group_user3 = rw

[svntest:/项目管理]    #设置对svntest版本库中项目管理目录的访问权限
* =                 #未授权用户没有任何权限
@group_user4 = rw
#=====配置结束=====

4、        最后重要提示:
4.1启动的服务与客户端检出的关系:
4.1.1         如果启动的服务指向一个具体的版本库,如红字部分描述:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN/svntest" displayname= "SVNService" depend= Tcpip start= auto
则客户端检出的地址应为:svn://192.168.0.1/
4.1.2         如果启动的服务指向的是多个版本库的父目录,如红字部分描述:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN" displayname= "SVNService" depend= Tcpip start= auto
则客户端检出的地址应为:svn://192.168.0.1/svntest
4.2如果权限管理完成时,对各版本库还未完成导入工作,请记得使用对SVN目录有读写权限的用户身份进行操作,否则有可能会提示操作失败(因为权限不够)。

 ==============Linux安装SVN======================

一、安装Subversion
yum install subversion进行自动安装

二、安装Apache
yum install httpd

三、创建数据仓库
1.创建数据仓库的目录
mkdir  -p /var/subversion/repos  #-p的意思是说如果没有父目录建之
2.创建数据仓库
命令格式:svnadmin create d:\svn\库名称
svnadmin create /var/subversion/repos      将自动生成几个文件和目录: /conf、/db、/hooks

四、启动SVN
以Daemon方式运行
svnserve -d -r /var/subversion/repos ,默认端口3690,默认情况下可匿名访问

注:未加入开机自启动。

五、检查端口
netstat -ntlp|grep 3690

六、配置
在进行源代码管理时,为了安全起见,需要对用户的权限进行控制。
主要通过三个配置文件来实现:svnservice.conf、passwd、authz。
第一个文件指明是否需要进行访问控制。
第二个文件存放用户帐号信息。
第三个文件存放用户的访问权限。
1.打开svnserve.conf文件,

    auth-access=write前面的#号去掉,使受权用户可以进行“写”操作。

    anon-access = none # 使非授权用户无法访问。
2.把password-db=passwd前面的#号去掉,表明密码文件为当前目录下的passwd文件
3.把auth-db=authz前面的#号去掉,表明用户访问权限文件为当前目录下的authz文件
4.打开passwd文件,在末行添加需要的帐号,比如:test=123456
5.打开authz文件,在[/]一行下面添加test=rw,表明数据仓库的根目录下的所有目录,test都可进行读写操作
6.再添加一行*=r,表明其他帐号可以进行只读操作
7.在该文件中还可以为用户分组,添加到[groups]下面,比如:admin=sinboy,others=u1,u2
8.还可以对根目录下的子目录进行具体的权限控制,只需要添加相应目录,比如:
    [/web]
    u1=rw
    *=
    表明web子目录只允许u1帐号进行读写操作,禁止其他帐号访问
 
它的缺点是:
1.对外提供服务时,有可能受到防火墙的阻隔,造成服务无法访问
2.并且它的密码文件是明文显示,没有进行MD5加密,存在安全隐患
3.只能启动一个数据仓库,如果想要创建多个数据仓库,必须启动多个svnserve服务进程

猜你喜欢

转载自elf8848.iteye.com/blog/553684