上节我们讲到SVN入门介绍中客户端的使用,本节向大家讲解一下SVN入门中服务器端的配置,在这里和大家分享一下,希望通过本节的学习,大家能够对SVN服务器端的配置方法有所了解。
二、服务器端的配置
Web服务器部署可以有三种选择,配置由简单到复杂排列为
·svnserve
·svnserveoverSSH
·Apache+mod_dav_svn模块
下面从最简单的入手,介绍svnserve。
[更新]Windows下服务器端的配置可以使用VisualSVNServer进行傻瓜化安装。
官方网站:http://www.visualsvn.com/
参考链接:VisualSVN系列介绍(有详细的安装过程介绍,这里就不转述了)
2.1&2.2配置svnserve
svnserve是一个轻型的服务器,可以同客户端通过在TCP/IP基础上的自定义有状态协议通讯,客户端通过使用开头为svn://或者svn+ssh://svnserve的URL来访问一个svnserve服务器。SVN入门介绍Linux下svnserver如何配置。
2.1Linux下的svnserve配置
2.1.0同样地,使用命令$sudoapt-getinstallsubversion
2.1.1svnserve作为独立守护进程,监听请求
$svnserve-d
$#svnserveisnowrunning,listeningonport3690
——可以使用--listen-port=[端口号]来指定端口,或者--listen-host=[主机名]来指定主机名
假定已经建立一个版本库位于/usr/local/repositories/project路径(版本库的建立稍后提及),此时客户端可以使用svn://[主机]/usr/local/repositories/project来进行访问
——可以使用-r选项来限制只输出指定路径下的版本库,从而使客户端访问更为简洁:
$svnserve-d-r/usr/local/repositories
则客户端只要使用svn://[主机]/project就可以访问
2.1.2通过inetd使用svnserve
$svnserve-i
——此时svnserve会尝试使用自定义协议通过stdin和stdout来与subversion客户端通话,默认端口为3690。可以在/etc/services添加如下几行:
svn3690/tcp#subversion
svn3690/udp#subversion
——如果是使用经典的类Unix的inetd守护进程,可以在/etc/inetd.conf添加如下行,则如果有客户连接来到端口3690,inetd会产生一个svnserve进程来做服务
svnstreamtcpnowaitsvnowner/usr/bin/svnservesvnserve-i。下面看一下SVN入门介绍中如何设置svnserve的内置认证。
2.1.3设置svnserve的内置认证
编辑版本库目录的conf/svnserve.conf文件:
1)设置匿名访问
[general]
anon-access=none#无权限
anon-access=read#只读
anon-access=write#打开匿名的写访问,但这样很危险,不能控制谁来修改版本库
2)使用用户和密码
2.1)定义保存用户名和密码的文件和一个认证域
[general]
password-db=<userfile>#指出保存用户和密码列表的文件,可以是绝对或相对路径
realm=examplerealm#定义认证域
anon-access=read
auth-access=write
2.2)然后在userfile文件中指明用户名和密码:(格式为“用户名=密码”)
[users]
harry=foopassword
sall=barpassword。下面SVN入门介绍一下Windows下的svnserve配置。
2.2Windows下的svnserve配置
2.2.0安装svnserve
1)从http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91得到***版本的Subversion
(如果之前已经安装了subversion,svnserve已经在服务器上运行,需要先停止服务)
2)安装subversion,然后进入subversion的安装目录,找到bin目录下的文件svnserve.exe,int13_svn.dll,libapr.dll,libapriconv.dll,libapriutil.dll,libdb*.dll,libeay32.dll和ssleay32.dll,将它们复制到服务器目录下(如C:\svnserve)。
2.2.1以守护方式运行svnserve
在命令行窗口输入svnserve.exe--daemon,则svnserve将会在端口3690等待请求,--daemon选项告诉svnserve以守护进程方式运行,这样在手动终止之前不会退出。这种方式的不便之处是需要保持命令行窗口不关闭。
2.2.2svnserve作为windows服务
svnserve作为windows服务时,在后台运行,可以在启动时自动执行,并且可以使用同其他windows服务一致的管理界面启动和停止服务。
需要使用命令行工具sc.exe定义新的服务(createsvnserve),在windows启动时指明svnserve的调用:
C:\>sccreatesvnserve
binpath="\"c:\svnserve\svnserve.exe\"--service--rootc:\repos"
displayname="Subversion"
depend=tcpip
start=auto
——注意为了回避目录名中的空格等字符,将整个binpath值放在双引号中;另外,sc的命令行很特殊。在key=value对中,key与=之间不能有空格,但是在value之前,必须有空格。
定义了服务之后,就可以使用GUI工具(如服务管理面板)进行停止、启动和查询,也可以通过命令行的方式进行:
C:\>netstopsvn
C:\>netstartsvn
C:\>scdeletesvn(需要确定先停止了服务)
2.2.3设置svnserve的内置认证
同上Linux配置文件即可。SVN入门介绍Windows下如何设置svnserver内置认证。
2.3&2.4配置svnserve+ssh
2.3Linux下的svnserve+ssh配置
2.3.0介绍与安装ssh
通过此方法,svnserve不会作为守护进程启动,而是SSH来启动svnserve,以SSH授权用户进行。
$sudoapt-getinstallssh
2.3.1创建帐户
$sudoadduser<username>#为参与项目开发的成员建立用户帐户
$sudoaddgroup<groupname>#建立用户组
$sudoaddgroup<username><groupname>#将用户帐户添加进用户组
2.3.2为成员生成密钥对
首先必须切换为<username>的用户登陆Linux:
$sudo<username>
$(提示输入密码)
$cd~/
$whoami
<username>$ssh-kegen-b1024-tdsa-N<passphrase>-f<filename>#使用DSA加密,也可以改为RSA加密
——这时产生两个文件:私钥<username>key和公钥<username>key.pub
然后创建目录/home/<username>/.ssh,把公钥拷贝到该目录下:
$cp<username>key.pub/home/<username>/.ssh/authrized_keys#文件名必须为authorized_keys。请期待下节关于SVN入门介绍。
【编辑推荐】