Apache http server + Subversion 打造版本控制(windows)

如果事先知道版本控制服务器是window下的,建议用VisualSVN,配置很简单,没必要去捣鼓apache+subversion来费神。当然如果一定要学习下apache+svn(比如我),下面是我学习的一个过程总结,也参考了许多大侠的类似的帖子,但是还是花了将近两天时间才配出来,并对配置内容有一定的理解。
注:windows下的配置,主要是搞清楚配置的步骤,和每个步骤的大概意思。

废话不说了开始。


操作系统:windows  xp

软件环境:apache_2.2.14-win32-x86-openssl-0.9.8k.msi安装包、

               Subversion-1.6.6.msi 安装包、

               TortoiseSVN 1.6.7(用于客户端)
1.安装apache
  apache默认的端口是80端口,大家都知道这个端口很多程序使用的,如果修改,可以到  你的安装路径/Apache2.2\conf\httpd.conf    找到Listen 80    进行修改
  完成后运行 http://localhost:端口
  显示“It works!”,表示安装成功
2.安装Subversion
  按提示操作,一路"next"

3.组装apache和subversion

    在C:\Program Files\Subversion\bin\目录下复制下面两个文件  
     mod_authz_svn.so 
     mod_dav_svn.so 
     粘帖到C:\Program Files\Apache Software Foundation\Apache2.2\modules
  然后我们再打开C:\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  
    注意不要随意改变顺序。可能出现其它错误。
    这样apache和svn基本上就联系起来了,当然,下面还有一个关于库的管理的配置。

4.建立svn库
   利用命令行:svnadmin create E:\svnroot\myproject (区分大小写),也可以利用tortoiseSVN来建库。
   建完后,大家会发现\myproject 下会多出一些文件来,特别是\myproject\conf下有svnserve.conf、authz、passwd有三个文件,这个svn的权限控制文件,如果是纯的svn,这里是需要配置的,如果是apache+svn,这里的三个文件几乎可以不要,因为我们有apache有配置自己的权限控制文件,下面有讲解。

5.把库配置给apache来代管

    下面我们要设置SVN的版本库目录,以使我们的apache能知道访问 不同的URL的时候,它去哪里寻找这个URL所对应的SVN目录.  
在httpd.conf文件中,增加如下内容:  
<Location /svn/myproject>  
DAV svn  
SVNPath E:/svnroot/myproject   (是你库的路径)
 
AuthzSVNAccessFile E:/svnroot/myproject/conf/access.auth  
Satisfy Any  
Require valid-user  
 
AuthType Basic  
AuthName "Subversion repositories" 
AuthUserFile  E:/svnroot/myproject/conf/users.auth  
Require valid-user

上面是一个单库模式的Demo,这样,这里涉及到两个文件access.auth、users.auth,文件名不是固定的,主要是配置的时候要路径指对。users.auth配置用户  access.auth配置允许用户访问的路径,下面会对这两个文件进行解释。
users.auth介绍,看下面命令
命令行模式下,到apache安装目录下的bin目录下 操作如下  
C:\Program Files\Apache Software Foundation\Apache2.2\bin>htpasswd -cb users.auth admin admin    

为admin用户设置好密码,创建第一个用户时创建文件,添加第二个用户则不用创建,具体命令参数有细微区别,请注意-cb  

C:\Program Files\Apache Software Foundation\Apache2.2\bin>htpasswd -b users.auth tom 123456 
 
此时把C:\Program Files\Apache Software Foundation\Apache2.2\bin 目录下的 users.auth 复制粘贴到 E:\svnroot\myproject\conf 目录下 ,不用多解释,大家大概可以明白,这里创建了两个用户admin(密码:admin)、tom(密码:123456)
我们打开users.auth文件,可以看见内容:
admin:$apr1$CS5eF5c5$xpESjPnD9TSLrmJZVBhs80
tom:$apr1$ckg8mclH$jlP/L.LENqtdvfie2rSHK0
这是加密过的,E:\svnroot\myproject\conf 这个路径就是上面提到过的svn权限管理路径,这就是我为什么说apache有自己的权限配置,原因就在这里,事情还没完,我们在E:\svnroot\myproject\conf 下面还要建立一个路径访问权限控制文件
我们再建一个文件,叫access.auth,这个文件是设置访问权限的,里面内容如下:  
[myproject:/]  
admin = rw  
[myproject:/module1]  
tom=rw  
admin=rw

rm表示可读可写,这表示,myproject下面的所有子目录admin都是有权限读写的,但是tom只有权限读写此项目下面的module1目录,这个各自的访问权限就分的更细致了.这里面还有其他的设置,比如分组等,它和svn自带的/conf下的authz文件的配置大致相同,可以参考其例子.

重新启动apache服务,通过http://localhost:端口号/svn/myproject/  
看见:"myproject - Revision 0: /  "字样表示成功

6.向svn提交代码

  在cmd命令行里输入:  svn import E:\test\file:///E:/svnroot/myproject/ -m "test import"  
注意:  
1.(E:\test\ ) 是你要部署的项目  
2.(file:///E:/svnroot/myproject/)这是你建立版本控制的仓库路径  
--- 里面的 / 千万注意别写成 \  ,否则会操作失败。---  

或者通过tortoiseSVN的"Import"

刷新 http://localhost:端口号/svn/myproject/
可以看见类似的版本信息,如下:
myproject - Revision 1 /
.classpath
.cvsignore
.project
.settings/
.tomcatplugin
web/
work/

ok,如果看到这些就表示成功了.

apache2.0和2.2的配置方法据说不太一样,我还没有试过,所以说一下,帖子的本义是帮助有缘人少走弯路,如果因为我没说明白给网友带来麻烦就不好了。所以上面的内容仅供参考,不过,至少我这里是成功过了。

参考的比较好的帖子:http://www.iteye.com/topic/577704

你可能感兴趣的:(apache,windows,SVN,配置管理,subversion)