svn+apace安装使用记录

公司想要实现能够通过web的方式来访问svn。所以让我研究研究,经过两周时间断断续续的研究整理。最终成功通过web方式访问svn

目的:

通过web方式访问svn

环境:

1.win7,32位下

2.apache2.2系列。httpd-2.2.25-win32-x86-no_ssl。。。

下载地址:

http://apache.fayea.com/apache-mirror//httpd/binaries/win32/

3.svn1.6系列。Setup-Subversion-1.6.6.msi

下载地址:

http://124.202.164.6/download/33608922/42937449/1/msi/235/237/1354761617643_749/Setup-Subversion-1.6.6.msi

步骤:

1.安装svn和apache和svn客户端(客户端我随便安装一个版本都没问题http://tortoisesvn.net/downloads.zh.html

2.安装完后

创建资源库cmd下。svnadmin create d:/svn

配置SVN服务

  在适合的地方新建一个文件夹,用于存放你的第一个SVN版本仓库。进入新建的文件夹,在空白地方右键选择“TortoiseSVN”--->“在此创建版本库”,则在该文件夹下会自动生成几个文件夹和若干个文件,我们不需要对这个文件夹再做其他操作了,如果各位感兴趣可以去查一下每个文件夹的用途。

  将SVN服务器配置成一个开机自动启动的服务,方便每次开机时可以自动开启此服务。打开CMD,进入到SVN服务器Subversion的bin目录下,执行如下命令:

  sc create subversion_service binpath= "c:\subversion\bin\svnserve.exe --service -r 你的版本仓库的目录" displayname= "Subversion Repository" depend= Tcpip

  (注意:以上命令在每个“=”符号之后都有一个空格,请各位博友看清楚哈)

  然后启动该服务,我们的SVN服务器就运行起来了。

3.整合操作

a.首先检查D:\Program Files\Apache Software Foundation\Apache2.2\modules目录下是否存在mod_authz_svn.so和mod_dav_svn.so两个文件,否则,将D:\Program Files\Subversion\bin目录下的mod_authz_svn.so和mod_dav_svn.so复制到D:\Program Files\Apache Software Foundation\Apache2.2\modules
b.其次检查D:\Program Files\Apache Software Foundation\Apache2.2\bin目录下是否存在libdb44.dll,libeay32.dll和ssleay32.dll三个文件,否则将D:\Program Files\Subversion\bin目录下的libdb44.dll,libeay32.dll和ssleay32.dll三个文件复制到D:\Program Files\Apache Software Foundation\Apache2.2\bin
c.修改D:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf配置文件,将#LoadModule dav_module modules/mod_dav.so和#LoadModule dav_fs_module modules/mod_dav_fs.so前面的#去掉,在复制LoadModule dav_svn_module modules/mod_dav_svn.so,LoadModule authz_svn_module modules/mod_authz_svn.so两行代码到LoadModule最后。在该文件的最后增加如下单库模式配置方法

  1. <Location/svn>
  2. DAV svn
  3. SVNPath F:/svn
  4. AuthType Basic
  5. AuthName "Subversion repositories"
  6. AuthUserFile "D:/Program Files/Apache Software Foundation/Apache2.2/conf-svn/passwd"
  7. Require valid-user
  8. </Location>

注意:SVNPath F:/svn是TortoiseSVN工具创建的Repository
e.密码生成,使用Apache自带的htpasswd工具,生成密码文件(需要创建D:\Program Files\Apache Software Foundation\Apache2.2\conf-svn目录)cmd命令模式中使用如下命令:D:\Program Files\Apache Software Foundation\Apache2.2\bin>htpasswd -cmb ../conf-svn/passwd test test创建了一个账号为test,密码也为test的账户。
4、保存httpd.conf文件,启动Apache,单库模式的访问地址:http://localhost/svn,第一次访问时提示输入用户名密码。使用htpasswd命令中设置的用户名 密码访问。
注意事项:今天晚上在自己电脑上重新用上面的方法在本本上装,装完后,启动,访问http://localhost/svn,输入账号密码后,却报Could not open the requested SVN filesystem异常,发现这个异常是因为TortoiseSVN的版本过高造成的,创建的资源库无法访问。
解决办法:cmd命令模式进入svn安装目录的bin目录中D:\Program Files\Subversion\bin>svnadmin create f:/svn。创建好资源库,再访问http://localhost/svn,OK。

5.扩展:svn权限设置

svn使用apache的权限管理对档案库及目录进行读写管理

修改上面第三步的内容为:

<Location /svn>

    DAV svn

    #SVNListParentPath on

    SVNParentPath d:/svn

    ### apache auth begin

    # how to authenticate a user

    AuthType Basic

    AuthName "Subversion repository"

    AuthUserFile D:/Subversion/apache_authz (保存用户名和密码,这个文件需要用Apache的htpasswd工具创建)

    Require valid-user

    ### apache auth end

    ### svn auth begin

    # our access control policy

    AuthzSVNAccessFile D:/Subversion/svn_authz  (保存用户访问的权限策略)

    # authentication if necessary

    Satisfy Any

    ### svn auth end

</Location>

用htpasswd工具创建apache_authz 文件,

建立保存用户名和密码的文件

  htpasswd -cm  D:/Subversion/apache_authz  username1

-c 表示创建文件,-m表示对密码用md5加密

然后,会提示输入两次密码,以后再加用户就不需要用-c了,直接用-m即可。

更改用户密码:

   htpasswd -m D:/Subversion/apache_authz  username1
       删除用户(要用大写的 D ):
          htpasswd –D D:/Subversion/apache_authz  username1

下面建立控制用户访问权限的文件svn_authz

在D:/Subversion中新建一个记事本文件,输入下面的内容:


    [groups]


     committers = paulex, richard
     developers = jimmy, michel, spark, sean

 

[myproject:/]                     //这表示,仓库myproject的根目录下的访问权限

@developers = rw

 

[myproject:/src]             //myproject仓库下src目录的访问权限

@developers = rw         // 如果在前面加上@符号,则表示这是个群组权限设置

 

r  表示读权限

w 表示写权限

AuthzSVNAccessFile 指向的是 authz 的策略文件,详细的权限控制可以在这个策略文件中指定。访问文件 accesspolicy.conf 的语法与svnserve.conf和 Apache 的配置文件非常相似,以(#)开头的行会被忽略;在它的简单形式里,每一小节命名一个版本库和一个里面的路径;认证用户名是在每个小节中的选项名;每个选项的值描述了用户访问版本库的级别:r(只读)或者rw(读写),如果用户没有提到或者值留空,访问是不允许的; * 表示所有用户,用它控制匿名用户的访问权限;@符号区分组和用户。

我自己的文件填写内容

[svn:/]                     //这表示,仓库myproject的根目录下的访问权

test = rw

6.遇到的问题:

首先,svn服务不能够创建,创建的规则一定要弄对,写错就不能创建

其次,svn和apache不匹配造成apache启动不起来(执行后启动不起来c.修改D:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf配置文件,将#LoadModule dav_module modules/mod_dav.so和#LoadModule dav_fs_module modules/mod_dav_fs.so前面的#去掉,在复制LoadModule dav_svn_module modules/mod_dav_svn.so,LoadModule authz_svn_module modules/mod_authz_svn.so两行代码到LoadModule最后。在该文件的最后增加如下单库模式配置方法)

结果:切记切记svn一定要和apache相匹配,不然会造成启动不起来,而且不能使用一键安装的apache(Wampserver2.4-x86.exe)

 

参考资料:

apache2.2+svn1.6+TortoiseSVN在windows环境搭建总结http://blog.wujiumei.com/2013/09/24/apache2-2svn1-6tortoisesvn%E5%9C%A8windows%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E6%80%BB%E7%BB%93/

APACHE实现SVN库WEB访问(XP SP2环境)http://blog.sina.com.cn/s/blog_6e5eacff0100opuh.html

Apache2.2.11和SVN1.6.1搭建svn版本控制平台(windows环境)http://blog.csdn.net/buffet518/article/details/4165870

Win7下搭建外网环境的SVN服务器http://www.cnblogs.com/crazypebble/archive/2011/07/30/2119258.html

svn如何安装,svn如何配置,svn安装配置http://jingyan.baidu.com/article/fec7a1e52ef3721190b4e7a1.html

posted on 2014-01-13 16:08  分不清马铃薯淀粉  阅读(343)  评论(0)    收藏  举报