Windows下搭建Subversion 服务器.docx

上传人:b****5 文档编号:8238764 上传时间:2023-01-30 格式:DOCX 页数:17 大小:33.40KB
下载 相关 举报
Windows下搭建Subversion 服务器.docx_第1页
第1页 / 共17页
Windows下搭建Subversion 服务器.docx_第2页
第2页 / 共17页
Windows下搭建Subversion 服务器.docx_第3页
第3页 / 共17页
Windows下搭建Subversion 服务器.docx_第4页
第4页 / 共17页
Windows下搭建Subversion 服务器.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

Windows下搭建Subversion 服务器.docx

《Windows下搭建Subversion 服务器.docx》由会员分享,可在线阅读,更多相关《Windows下搭建Subversion 服务器.docx(17页珍藏版)》请在冰豆网上搜索。

Windows下搭建Subversion 服务器.docx

Windows下搭建Subversion服务器

使用svn搭建服务器,客户端使用

Windows下搭建Subversion服务器

一、准备工作

1、获取Subversion服务器程序

到官方网站(http:

//subversion.tigris.org/)下载最新的服务器安装程序。

目前最新的是1.5版本,具体下载地址在:

http:

//subversion.tigris.org/servlets/ProjectDocumentList?

folderID=8100&expandFolder=8100&folderID=91

2、获取TortoiseSVN客户端程序从官方网站获取最新的TortoiseSVN。

TortoiseSVN是一个客户端程序,用来与subvers服务器端通讯。

Subversion自带一个客户端程序svn.exe,但TortoiseSVN更好操作,提高效率。

二、安装服务器端和客户端

安装Subversion(以下简称SVN)的服务器端和客户端。

下载下来的服务器端是个zip压缩包,直接解压缩即可,比如我解压到E:

/subversion。

客户端安装文件是个exe可执行文件,直接运行按提示安装即可,客户端安装完成后提示重启。

三、建立版本库(Repository)

运行Subversion服务器需要首先要建立一个版本库(Repository)。

版本库可以看作是服务器上集中存放和管理数据的地方。

开始建立版本库。

首先建立e:

/svn空文件夹作为所有版本库的根目录。

然后,进入命令行并切换到subversion的bin目录。

输入如下命令:

svnadmincreateE:

/svn/SVNRoot

此命令在E:

/svn下建立一个版本库SVNRoot。

SVNRoot下面会自动生成一些文件夹和文件。

我们也可以使用TortoiseSVN图形化的完成这一步:

先建立空目录E:

/svn/SVNRoot,注意一定是要空的。

然后在repos1文件夹上“右键->TortoiseSVN->CreateRepositoryhere...”,然后可以选择版本库模式,这里使用默认的FSFS即可,然后就创建了一系列文件夹和文件,同命令行建立的一样。

 

四、运行独立服务器

此时subversion服务还没有开始,只是通过它的命令建立了版本库。

继续在刚才的命令窗口输入:

svnserve.exe--daemon

svnserve将会在端口3690等待请求,--daemon(两个短横线)选项告诉svnserve以守护进程方式运行,这样在手动终止之前不会退出。

注意不要关闭命令行窗口,关闭窗口会把svnserve停止。

为了验证svnserve正常工作,使用TortoiseSVN->Repo-browser来查看版本库。

在弹出的URL对话框中输入:

svn:

//localhost/svn/SVNRoot

点OK按钮后就可以看见repos1版本库的目录树结构了,只不过这时SVNRoot是个空库。

你也可以使用--root选项设置根位置来限制服务器的访问目录,从而增加安全性和节约输入svnserveURL的时间:

svnserve.exe--daemon--rootdrive:

/path/to/repository

以前面的测试作为例,svnserve将会运行为:

svnserve.exe--daemon--roote:

/svn

然后TortoiseSVN中的版本库浏览器URL缩减为:

svn:

//localhost/SVNRoot

五、配置用户和权限

用文本编辑器打开E:

/svn/SVNRoot/conf目录,修改svnserve.conf:

将:

#password-db=passwd

改为:

password-db=passwd

即去掉前面的#注释符,注意前面不能有空格。

然后修改同目录的passwd文件,增加一个帐号:

将:

[users]

#harry=harryssecret

#sally=sallyssecret

增加帐号:

[users]

#harry=harryssecret

#sally=sallyssecret

test=test

六、初始化导入

下面就是将我们的数据(项目)导入到这个版本库,以后就由版本库管理我们的数据。

我们的任何改动都回被版本库记录下来,甚至我们自己丢失、改错数据时版本库也能帮我们找回数据。

比如,我在d:

/wwwroot下有个guestbook文件夹,里面存放的是我编写的留言簿程序。

在此文件夹上“右键->TortoiseSVN->Import...”,在弹出对话框的“URLofrepository”输入“svn:

//localhost/SVNRoot/guestbook”。

在“Importmessage”输入“导入整个留言簿”作为注释。

点OK后要求输入帐号。

我们在用户名和密码处都输入test。

完成后guestbook中的内容全部导入到了svn:

//localhost/svn/SVNRoot/guestbook。

我们看到在e:

/svn/repos1没有任何变化,连个guestbook文件夹都没有建立,唯一的变化就是e:

/svn/SVNRoot容量变大了。

实际上我们源guestbook中的内容已经导入repos1版本库了,源guestbook文件夹可以删除了。

需要注意的是,这一步操作可以完全在另一台安装了TortoiseSVN的客户机上进行。

例如运行svnserve的主机的IP是133.96.121.22,则URL部分输入的内容就是“svn:

//133.96.121.22”。

好的

七、基本操作流程

1、取出(checkout)

取出版本库到一个工作拷贝:

来到任意空目录下,比如在f分区建立一个空文件夹f:

/work。

“右键->SVNCheckout”。

在“URLofrepository”中输入“svn:

//localhost/svn/SVNRoot/guestbook”,这样我们就得到了一份guestbook中内容的工作拷贝。

2、存入(checkin)/提交(commit)

在工作拷贝中作出修改并提交:

在guestbook工作拷贝中随便打开一个文件,作出修改,然后“右键->SVNCommit...”。

这样我们就把修改提交到了版本库,版本库根据情况存储我们提交的数据。

在修改过的文件上“右键->TortoiseSVN->ShowLog”,可以看到对这个文件所有的提交。

在不同的revision条目上“右键->Comparewithworkingcopy”,我们可以比较工作拷贝的文件和所选revision版本的区别。

 

花了一天时间,走了不少弯路,解决N多错误,终于全部完成了,记下安装过程中遇到的各种问题,希望对初步使用svn的TX们有所帮助。

关于svn的介绍此处略过,直接进入正题。

svn服务的开启有两种方式,

∙自带的svnserve服务(访问地址类似于svn:

//192.168.80.18/repos/)

∙与Apache配合使用 (访问地址类似于http:

//192.168.80.18:

8077/repos/)

下面先进入第一种的配置:

1安装,解压缩下载的svn压缩包到对应文件夹(建议路径不要有空格与中文)

2建立版本库,首先建立f:

\svn空文件夹作为所有版本库的根目录。

然后,进入命令行并切换到安装subversion的bin目录(建议将此目录设为path)。

输入如下命令:

svnadmincreatef:

\svn\repos

3运行服务进程

在bin目录下输入:

svnserve-d-rf:

\svn

注:

-d参数效果同于--daemon

   -r参数效果同于--root

svnserve将会在端口3690等待请求,

   --daemon(两个短横线)选项告诉svnserve以守护进程方式运行,这样在手动终止之前不会退出。

不要关闭命令行窗口,关闭窗口会把svnserve停止。

   --root选项设置根位置来限制服务器的访问目录,从而增加安全性和节约输入svnserveURL的时间

   如果不加root参数,服务url为:

svn:

//localhost/svn/repos

   而如果加上root参数,服务url为:

svn:

//localhost/repos

   此处的启动配置会影响服务url,如果输入url错误,会导致访问的时候出现异常

4为了验证svnserve正常工作,使用TortoiseSVN->Repo-browser来查看版本库。

在弹出的URL对话框中输入:

 svn:

//localhost/repos

 点OK按钮后就可以看见repo1版本库的目录树结构了,只不过这时repo1是个空库。

可能出现的问题:

   Error:

Can'tconnecttohost'':

由于目标机器积极拒绝,无法连接。

   解决:

首先测试svn的3690端口是否打开:

telnetlocalhost3690

   如果不成功说明服务没有被正常启动,请参考前面步骤

   可以将svn服务添加到系统服务中去,步骤如下:

这样可以避免每次重启后需要手动运行命令的烦恼

   1在subversion的安装路径下,找到bin文件夹

   2新建一个setupservice.bat文件,内容为:

Java代码

 

1.    sc create svnserve binpath= "Subversion安装路径\bin\svnserve.exe --service -r f:

\svn" depend= Tcpip start= auto  

2.sc start svnserve  

3.pause  

sccreatesvnservebinpath="Subversion安装路径\bin\svnserve.exe--service-rf:

\svn"depend=Tcpipstart=auto

scstartsvnserve

pause

   这里有个需要注意的问题:

“start=auto"等号后面要加上一空格

   3运行,这时在服务里可找到一个名为svnserve的服务。

   在cmd命令行下查看打开的端口:

netstat-ano就看到3690端口打开了

   Error:

Norepositoryfoundin'svn:

//localhost/svn/repos/jmxDemo' 

   解决:

Java代码

 

1.A.测试1:

  

2.   ①运行svnserve -d -r f:

\svn\repos\jmxDemo //指定jmxDemo根目录为服务的根目录  

3.   ②运行svn:

//localhost,可以正常访问修改jmxDemo  

4.   ③运行svn:

//localhost/jmxDemo,出现:

'svn:

//localhost/jmxDemo' non-existent in  

5.  

6.B.测试2:

  

7.   ①运行svnserve -d -r f:

\svn\repos //指定jmxDemo上层目录为服务的根目录  

8.   ②运行svn:

//localhost/jmxDemo,可以正常访问修改Repository  

9.   ③运行svn:

//localhost,出现:

Error * No repository found in 'svn:

//localhost'   

10.   

11.C.结论:

  

12.   ①SVN服务启动时指定的根目录不同,会影响相同URL的访问结果  

13.   ②SVN在访问指定路径时会从服务的根目录下去寻找,即基于我们启动服务时指定的根目录  

14.   ③svn:

//localhost指向默认的jmxDemo,svn:

//localhost/jmxDemo指向jmxDemo  

15.   ④测试情况一的步骤③失败是因为我们已经把路径直接指向了jmxDemo的根目录  

16.   ⑤测试情况二的步骤③失败是因为我们只是把路径指向了jmxDemo的上层目录  

A.测试1:

①运行svnserve-d-rf:

\svn\repos\jmxDemo//指定jmxDemo根目录为服务的根目录

②运行svn:

//localhost,可以正常访问修改jmxDemo

③运行svn:

//localhost/jmxDemo,出现:

'svn:

//localhost/jmxDemo'non-existentin

B.测试2:

①运行svnserve-d-rf:

\svn\repos//指定jmxDemo上层目录为服务的根目录

②运行svn:

//localhost/jmxDemo,可以正常访问修改Repository

③运行svn:

//localhost,出现:

Error*Norepositoryfoundin'svn:

//localhost'

C.结论:

①SVN服务启动时指定的根目录不同,会影响相同URL的访问结果

②SVN在访问指定路径时会从服务的根目录下去寻找,即基于我们启动服务时指定的根目录

③svn:

//localhost指向默认的jmxDemo,svn:

//localhost/jmxDemo指向jmxDemo

④测试情况一的步骤③失败是因为我们已经把路径直接指向了jmxDemo的根目录

⑤测试情况二的步骤③失败是因为我们只是把路径指向了jmxDemo的上层目录

   解决如下:

   svn:

//localhost/repos/jmxDemo

   而不是svn:

//localhost/svn/repos/jmxDemo

5配置权限

 打开建立的版本库文件夹/conf编辑server.conf添加如下几行:

Java代码

 

1.[general]  

2.password-db = passwd.conf  

3.anon-access = none  

4.auth-access = write  

5.authz-db = authz.conf  

[general]

password-db=passwd.conf

anon-access=none

auth-access=write

authz-db=authz.conf

 保证文件中只有这几行是不被注释的

 在当前文件夹新建authz.conf与passwd.conf文件

 编辑passwd.conf文件,添加内容:

Java代码

 

1.[users]  

2.cjy = cjy  

[users]

cjy=cjy

 注意整个串前后都不要有空格

 编辑authz.conf文件,添加内容:

Java代码

 

1.[/]  

2.cjy = rw  

[/]

cjy=rw

 

6导入文件夹

 重启服务,在需要导入的文件夹上右键--TortoiseSVN->Import输入url:

svn:

//localhost/repos/文件夹名

 此处文件夹名需要被加上,不然会把文件夹下的所有文件弄到repos文件夹下,数据乱了

 输入用户名密码:

cjy

 导入的时候可能出现的问题:

   Error:

Authorizationfailed

   解决:

权限问题

这个问题弄了蛮久,一直以为是拼写url的问题,找了半天没找到,然后确认问题是权限配置错误,查了半天也没看出来,后来弄清楚,是因为导入涉及到在根下写东西,所以必须要有根下的w权限,添加如下配置后问题解决:

Java代码

 

1.[/]  

2.cjy = rw  

[/]

cjy=rw

注意:

版本库与导入项目最好不要重名,如果重名:

比如把arm下的东东导入到了这个版本库:

svn:

//localhost/arm。

而配置权限的时候,[arm:

/]这才代表工程的根目录,即:

svn:

//localhost/arm

要想配到权限到目录下,就得这么写:

[arm:

/arm/],不然出错,且问题不容易排出

7checkout之,svn:

//localhost/repos/文件夹名注意大小写区分,不然可能也会出现Error:

Authorizationfailed错误

OK,至此svn自带服务配置完成,可以进行其他测试如update,commit等。

都不会再出现问题。

下面说明Apache配合svn提供httpsvn服务。

下面进入第二种配置:

1、安装Apache,Apache的安装文件时一个msi文件可以直接双击运行(建议路径不要有空格与汉字)

2、从Subversion安装目录的bin子目录将intl3_svn.dll、libdb44.dll拷贝到Apache安装目录的bin文件夹

3、从Subversion安装目录的bin子目录将mod_authz_svn.so、mod_dav_svn.so拷贝到Apache的模块目录(Apache安装目录的   modules文件夹)此步可省,配置的时候通过绝对路径的方式指定也可以

4、修改Apache的配置文件httpd.conf,使用LoadModule来加载mod_dav_svn模块。

Java代码

 

1.LoadModule dav_module modules/mod_dav.so  

2.LoadModule dav_fs_module modules/mod_dav_fs.so  

3.  

4.LoadModule dav_svn_module "svn安装目录/bin/mod_dav_svn.so"  

5.LoadModule authz_svn_module "svn安装目录/bin/mod_authz_svn.so"  

LoadModuledav_modulemodules/mod_dav.so

LoadModuledav_fs_modulemodules/mod_dav_fs.so

LoadModuledav_svn_module"svn安装目录/bin/mod_dav_svn.so"

LoadModuleauthz_svn_module"svn安装目录/bin/mod_authz_svn.so"

注:

如果拷贝了so文件到模块目录了,可以将上面两个的路径改成modules/mod_dav_svn.so的形式,否则请使用正确的绝对路径

请确认文件中未注释的数据只有以上四句

  确定用来作为Subversion版本库的目录

  在配置文件最后添加如下几行:

Java代码

 

1.  

2.DAV svn  

3.SVNPath f:

/svn/repos  

4.  

DAVsvn

SVNPathf:

/svn/repos

  这个配置告诉Apache首先需要启用dav_module,然后加载dav_svn_module。

版本库对外的URL是:

  http:

//localhost:

8077/svn,所有的Subversion版本库在物理上位于f:

/svn/repos。

  配置完毕后重新启动Apache,打开浏览器,输入http:

//localhost:

8077/svn

   将会看到成功画面:

  svn-Revision10:

/arm

  ..

  diary/

  ref/

  temp/

  --------------------------------------------------------------------------------

  PoweredbySubversionversion1.6.0(r36650).

  这表示Apache的dav_svn模块已经可以正常工作了(现在已经可以通过http的方式获取svn中的内容了)。

  

5、测试通过之后,进行权限配置

5.1、基本HTTP认证

最简单的客户端认证方式是通过HTTP基本认证机制,简单的使用用户名和密码来验证一个用户的身份。

Apache提供了一个htpasswd工具来管理一个用户文件,这个文件包含用户名和加密后的密码,这些就是你希望赋予Subversion特别权限的用户。

htpasswd可以在Apache的bin安装目录下找到。

具体使用方法如下:

创建用户文件:

htpasswd-cmF:

\svn\repos\conf\passwordfilecjy

添加新用户(-m表示以MD5加密密码):

htpasswd[-m]F:

\svn\repos\conf\passwordfiledmm

这个地方如果加上c,会把以前的覆盖掉

更改用户密码:

htpasswd[-m]F:

\svn\repos\conf\passwordfilecjy

删除用户(要用大写的D):

htpasswd–DF:

\svn\repos\conf\passwordfilecjy

接下来修改httpd.conf,在Location标签中加入如下内容:

Java代码

 

1.AuthType Basic  

2.AuthName "svn repos"  

3.AuthUserFile F:

\svn\repos\conf\passwordfile  

4.Require valid-user  

AuthTypeBasic

AuthName"svnrepos"

AuthUserFileF:

\svn\repos\conf\passwordfile

Requirevalid-user

说明:

AuthTypeBasic:

启用基本的验证,比如用户名/密码对。

AuthName"svnrepos":

当一个认证对话框弹出时,出现在认证对话框中的信息。

(最好用英文,TortoiseSV

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1