Win7下搭建SVN服务器端及客户端(2)

注意:遇到任何问题,先检查下是不是防火墙的问题!!!

 【本文根据 Virgil 提供的教程整理,】作为另一篇文章Win7下搭建SVN服务器端及客户端(图文教程)的补充


准备条件

Apache(xampp):http://www.apachefriends.org/zh_cn/xampp-windows.html#1787(注意下载exe版本,因为简单)

SVN服务器(Subversion):http://sourceforge.net/projects/win32svn/

SVN客户端(TortoiseSVN):http://tortoisesvn.net/downloads.html

SVN 中文语言包:http://tortoisesvn.net/downloads.html

花生壳(外网SVN使用):http://www.oray.com/peanuthull/download.php

 

补充:

1,64位的系统,32位和64位的SVN皆可使用,未发现兼容问题

2,32位的win8未经测试,不过应该不会有问题

 

整体步骤:

1,  安装Apache服务器、SVN服务器和客户端

2,  配置Apache服务器使其能够正常工作

3,  配置SVN服务器并关联到Apache

4,  设置权限

5,  外网设置

其中需要注意的是3和4,3关联到Apache需要细心,4设置权限是SVN工作的根本

 

详细步骤:

重要前提:

由于经常需要经常用到管理员权限,尤其是命令行,如果你的登陆用户名不是:Administrator,而是你自己设定的用户名。有一下两种操作供选择:

1,  在控制面板关闭UAC

2,  提升CMD的权限,方法为:在C:\windows\system32\cmd.exe,将cmd建立一个快捷方式,每次运行的时候,都要右键,以管理员身份运行。

这里我推荐操作2,UAC的存在对于系统来说大大提高了安全性,不建议关闭。以下每次用到CMD,都是执行了操作2,请知晓

 

一,安装

1,  下载Apache和SVN客户端、服务端、语言包后,一路安装即可,但是要注意,Apache的安装目录xampp要放在无特殊字符的目录下,基于这个原因,建议统一安装在C盘根目录,不要安装在ProgramFiles的目录里,以下所有目录以假设你安装在了C盘根目录

2,设置SVN语言为中文,方便操作


二,配置Apache

1,  打开C:/xampp/apache/conf/httpd.conf,找到下面两个字段,并修改

#Listen 80

Listen 8080

 

#ServerName localhost:80

ServerName localhost:8080

 

这里改了监听端口,因为太多的软件会占用80端口,会导致apache服务无法启动,ServerName暂时用localhost,以便测试


2,不要使用xampp这个来管理服务(没有特殊原因,个人推荐),用windows自带的服务管理器来管理。Win+R,输入services.msc,找到Apache,设置自动启动,并启动服务。


3,测试:打开浏览器,输入:localhost8080,如果弹出来Xampp的界面,说明Apache配置成功, 如果不成功,

(1), 请检查是否开启了杀毒软件或防火墙,全部关闭再次测试

(2), 请查看8080端口是否被占用,查看方法:cmd,输入:netstat–a –o 查看对应端口

 

三,配置SVN并关联Apache

1,  建立仓库,找个地方,新建一个文件夹,进去,右键,建立版本仓库,假设你的目录是:E:\work


2,  将SVN做成自动启动服务,管理员运行cmd,cd到Subversion的bin目录,执行如下命令:

sc create subversion_service binpath= "\"c:\subversion\bin\svnserve.exe\"--service -r E:\work " displayname= "Subversion Repository"depend= Tcpip  start= auto

注意,等号后面都是有空格的,前面没有空格


3,  关联Apache:

在C:\Subversion\bin,复制如下四个文件:

mod_dav_svn.so

mod_authz_svn.so

intl3_svn.dll

libdb44.dll

到C:\xampp\apache\modules

其中,第四个文件的数字可能有不同,取决于版本号


4,  修改配置文件:

记事本打开C:\xampp\apache\conf\httpd.conf,

找到LoadModule dav_module modules/mod_dav.so,去掉#

并在其下面添加:

        LoadModuledav_svn_module modules/mod_dav_svn.so

  LoadModule authz_svn_module modules/mod_authz_svn.so

这个是添加SVN的功能模组


5,  添加SVN的访问目录:还是C:\xampp\apache\conf\httpd.conf这个配置文件,在文件最后面,添加上

<Location/svn>

DAV svn

SVNPath E:\work

AuthTypeBasic

AuthName"Subversion repositories"

AuthUserFileF:\svnroot\passwords.auth

AuthzSVNAccessFileF:\svnroot\access.auth

Requirevalid-user

</Location>

注意严格按照这个格式来,下面介绍需要自行改为自己的地方:

SVNPath E:\work,这个是你的SVN版本库位置

AuthUserFile F:\svnroot\passwords.auth

AuthzSVNAccessFile F:\svnroot\access.auth

这两个是密码和权限获取的文件,请更改为你想存放的地方,并新建这两个文件

6,  测试:做了如上操作之后,打开浏览器,输入:localhost:8080/SVN,如果需要输入用户名密码,则说明成功了,下面进行权限的关键配置


四,设置权限

1,  打开E:\work\conf\svnserve.conf,这个是你的SVN工程的权限说明文件,找到anon-access = read

auth-access = write

这两个行,去掉#,开启读和写的权限

2,  打开你刚才新建的access.auth,写上:

[groups]

 

[/]

harry =rw

你只需要把harry更改为你的用户名即可,这里是将这个用户名更改为r读和w写的权限

[groups]下面为空的意思是,现在不分组(开发啊、测试啊等等)

[/]表示SVN所有的工程目录,这个用户都有这个权限

 

3,  开始设置密码,密码设置分为两种,加密和不加密

A, 不加密,最简单的,直接打开之前新建的passwords.auth,

输入:harry=123,这是将harry这个用户的密码设为123,

B, 加密,推荐加密方法:cd到apache的bin目录, C:\xampp\apache\bin\

htpasswd -c F:\svnroot\passwords.auth harrysvnroot的这个目录是你之前的设置的目录,harry是你要设的用户名

如果你要设置第二个及之后的用户的密码,在设置其它用户密码的时候,把-c这个参数去掉,只在第一次设置密码的时候需要加上-c这个参数

之后,你会在passwords.auth这个目录看到你的用户名的密文密码

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

这一步经常出现的的问题

svn认证失败的问题:

Commit failed (details follow):  

Unable to connect to a repository at URL'svn://localhost'  

认证失败  

 

conf文件下的svnserve.conf,将 

     # password-db =passwd 

     除去行前的#和空格,注意必须去掉空格   

  www.2cto.com  

passwd 

   [users] 

      harry = harryssecret 

      sally =sallyssecret 

 

除去行前的#和空格,注意必须去掉空格.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

测试:任意地方右键,打开版本库浏览器,输入地址:http://localhost:8080/svn,输入你设置的用户名和密码,能够进入成功,看到文件,那么,恭喜你,成功了。

至此,局域网的服务器搭建成功了,局域网其它用户访问的话,输入的把localhost替换成你的IP即可。如果需要外网访问你的服务器,继续向下看。

 

五,外网设置

这里提供的方案是花生壳

1,  Google搜索花生壳,下载安装,注册,登陆,好了,你可以看到自己的域名,把上述设置里,所有的localhost,替换成的你申请到的域名即可

2,  配置路由器的映射,这个比较麻烦,有如下几种情况:

A, 普通的modem,拨号上网,非路由器的,就不需要设置了

B, Modem加路由器,modem拨号,然后你连的是路由器,这个好办,在路由器里设置转发规则,也就是所谓的虚拟主机,设置端口8080,填上你自己的局域网IP,好了,映射完成

C, 电信光纤,这个麻烦很多,因为这个是modem和路由器一体的,我尝试用超级密码登陆,设置转发规则,但是失败了。一般的光线modem后面有的用户名和密码权限很低,超级密码:用户名是admin,密码有的是gpon,有的是epon,我在里面设置了转发规则之后,没有生效,就放弃了,接下来开始繁琐的设置

1,找到设置PPOE上网的地方,删除这条

2,新建模式:桥接,名字就用默认就好了,选择端口,有四个,除了端口2,其它都可以

3,路由器插上你刚才选的端口,登陆路由器,wan参数里填上上网账号和密码,

4,路由器里设置转发规则,填上你此时的局域网IP。

     设置完成,浏览器输入试一下。


六,权限的高级设置

    在D:\svnroot目录下建立两个svn1和svn2,多版本仓库的方式。

    修改打开Apache安装目录下conf目录中的httpd.conf文件,将光标移到文件的最末端

    加入的代码修改如下:

 

<Location/svn>

DAV svn

#这里将SVNPath修改为SVNParentPath,当前目录svnroot,为父目录,仓库svn1和svn2在这个父目录下

SVNParentPathD:/svnroot 

AuthTypeBasic

AuthName"Subversion Repository"

AuthUserFile"F:/svnroot/passwords.auth"

AuthzSVNAccessFile"F:/svnroot/access.auth"

Requirevalid-user

</Location>

 

 

  * 认证用户文件passwords.auth不需要做任何修改

  * 认证权限文件access.auth修改如下:

[groups]

dev1 =tom,cat #开发用户组1

dev2 =hello   #开发用户组2

 

[svn1:/]

* = r

 

[svn1:/aaa]

@dev1 =rw   #设定dev1组成员对svn1仓库下的aaa目录有读和写权限

@dev2=      #设定dev2组成员对svn1仓库下的aaa目录没有任何权限

 

[svn1:/bbb]

@dev1=      #设定dev1组成员对svn1仓库下的bbb目录没有任何权限

@dev2 =rw   #设定dev2组成员对svn1仓库下的bbb目录有读和写权限

 

[svn1:/ccc]

@dev1=      #设定dev1组成员对svn1仓库下的ccc目录没有任何权限

@dev2=       #设定dev2组成员对svn1仓库下的ccc目录没有任何权限

 

[svn2:/]

@dev1=      #设定dev1组成员对svn2仓库没有任何权限

@dev2=       #设定dev2组成员对svn2仓库没有任何权限

 

    到此我们为不同用户分组对不同仓库定义了权限,大家可以使用不同的用户

    进行browse/import/checkout试验

 

    仓库1访问路径为http://localhost/svn/svn1

    仓库2访问路径为http://localhost/svn/svn2

 

     对父目录http://localhost/svn/,任何用户都没有任何访问权限

最后,如果需要更高级的管理方式,直接google

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值