Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4489335
  • 博文数量: 192
  • 博客积分: 10014
  • 博客等级: 上将
  • 技术积分: 8232
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-21 00:22
文章分类

全部博文(192)

文章存档

2011年(4)

2009年(14)

2008年(174)

我的朋友

分类: 项目管理

2009-03-30 20:40:07

原文转自:
 
因为我已经在我的机器上安装了apache,而且apache的安装方法网上一堆,所以我就不介绍怎么安装apache.
先下载最新版本的svn:
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100
选择下载svn-win32-1.5.4.zip,这是一个给apache2.2.x专用的版本

下载后把程序解压到apache的安装目录上(你也可以安装到你想安装的目录下)
我的apache是安装在D:\wapm\local\apach2,把svn解压到D:\wapm\local\svn

先建一个版本库
打开cmd,转到D盘下

\wapm\local\svn\bin\svnadmin create \wapm\local\svn\repository\test --fs-type fsfs

在d:\wapm\local\svn\repository\test下建立一个版本库。另外--fs-type是定义版本库的存储方法。而fsfs是文件存储方式,另还有一种方法是:bdb,这种方法是数据库存储方式,不过网上有人说svn有放弃使用bdb的趋势。

现在开始配置apache了
把文件以下文件从D:\wapm\local\svn\bin复制到D:\wapm\local\apache2\bin,这一步是apach2.2.X才需要这样做的。如果不复制将会出现:Cannot load D:/wapm/local/apache2/modules/mod_dav_svn.so into server

引用

intl3_svn.dll
libdb44.dll
libsvn_delta-1.dll
libsvn_fs-1.dll
libsvn_repos-1.dll
libsvn_subr-1.dll


然后两把复制以下的文件从D:\wapm\local\svn\bin复制到D:\wapm\local\apache2\modules下
引用

mod_dav_svn.so
mod_authz_svn.so

其中mod_dav_svn.so是包含apache应该怎么处理svn的相关操作
而mod_authz_svn.so是包含apache怎么去判断权限的方法
另外需要确保存在于D:\wapm\local\apache2\modules
引用

mod_dav.so
mod_dav_fs.so


对于个人开发可以不用加载mod_authz_svn.so.但对于团队开发最好就加上。管理方便些

开始配置apache处理svn
打开httpd.conf,把以下的代码前的#号除掉,如果没有以下的代码可以自己加上

#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so

另外再以下代码下再加上

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

到了这里只是把svn需要的程序加载进去,但apache还不知道怎么去处理svn

建立密码访问密码和访问权限
如果是认为不需要访问密码,可以跳过一步
在命令行里运行以下代码

cd \wapm\local\apache2\
bin\htpasswd -c svn Tim

解释一下,第一句是进入到apache2目录里
第二句是使用htpasswd 生成一个apache能读的密码文件。svn是要我要生成的用户密码文件。Tim是用户名
运行完第二句会提示你输入Tim用户的密码。输完后你可以在D:\wapm\local\apache2\下找到一个svn的文件,
如果你需要更多的用户可以运行以下行动相同的命令,但不用再加上“ -c ”具体用法可以通过htpasswd -h来查看
建立访问权限
打开记事本,写入以下代码,保存到 D:\wapm\local\svn\repository\svnaccessfile

[groups]
designer = Tim,Jack
guests = guest
[/]
@designer = rw
@guests = r
#如果游客不需要密码,可以写成" * = r"



需要再加上以下代码


    DAV svn
    SVNParentPath /wapm/local/svn/repository
    SVNListParentPath on
    #AuthType Basic
    #AuthName "Subversion repositories"
    #AuthUserFile /wapm/local/apache2/svn
  #AuthzSVNAccessFile /wapm/local/svn/repository/svnaccessfile
    #Require valid-user
    #SVNPathAuthz on


注:如果需要使用访问权限,把以上代码里的#号去掉
引用


意味着可以通过像这样的URL()来访问Subversion版本库

DAV svn
告诉Apache哪个模块负责服务像那样的URL--在这里就是Subversion模块

SVNListParentPath on
在Subversion 1.3及更高版本中,这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库

SVNParentPath /wapm/local/svn/repository
告诉Subversion在目录D:\SVN下寻找版本库

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

AuthName "Subversion repositories"
当一个验证对话框弹出时,告诉用户这个验证是用来做什么的

AuthUserFile /wapm/local/apache2/svn
指定D:\passwd用为密码文件用来验证用户的用户名及密码

AuthzSVNAccessFile D:\svnaccessfile
指定D:\svnaccessfile来限定各个用户或组在版本库中目录的访问权限

Require valid-user
限定用户只有输入正确的用户名及密码后才能访问这个路径

重启apache
可以通访问到版本库

2008-11-26    svn 访问时出现403问题
引用

今天在公司里再配置svn的访问权限时,当我打开/时提示了我输入密码,但我输入完后竟然显示403错误,
我估计是apache上没有设置好访问权限。所以就增加了以下的代码


        Options FollowSymLinks
        AllowOverride all
        Order allow,deny
        Allow from all
        Satisfy all
阅读(3171) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~