第一步,打开Apache安装目录下的httpd.conf文件
找到下面的语句:
#LoadModule dav_module modules/mod_dav.so
将上面语句前面的#去掉
第二步,在这句后面追加,如下语句:
LoadModule dav_svn_module "{svn安装目录}/bin/mod_dav_svn.so"
LoadModule authz_svn_module "{svn安装目录}//bin/mod_authz_svn.so"
注:{svn安装目录}就是svn-win32-1.4.4.zip解压后你放的目录
{svn安装目录}下的
libdb44.dll
libeay32.dll
ssleay32.dll
libapr-1.dll
libaprutil-1.dll
libsvn_delta-1.dll
libsvn_fs-1.dll
libsvn_repos-1.dll
libsvn_subr-1.dll
文件拷贝到Apache的bin目录下
第三步,在这个文件的最后,追加如下语句:
<Location /svn>
DAV svn
SVNParentPath d:/svn
</Location>
第四步,创建仓库
根据apache的配置文件的设置建立目录:d:/svn,然后用svnadmin create d:/svn/test命令创建仓库,命令执行成功之后,会在d:/svn/test下面生成很多的文件和目录。
第五步,运行
重新启动Apache Server
在浏览器中输入网址:
http://localhost/svn/test/
这时候,看到页面显示:
Revision 0: /
Powered by Subversion version 1.3.2 (r19776).
安装成功,接下来将进行权限设置。
另:
将svn-win32-1.4.4/bin目录下的mod_dav_svn.so和mod_authz_svn.so复制到C:/Apache Group/Apache2/modules目录下。
l 将svn-win32-1.4.4/bin目录下的所有DLL文件复制到C:/Apache Group/Apache2/bin目录下。注意在复制DLL文件时最好停掉Apache。
l 用文本编辑器打开C:/Apache Group/Apache2/conf/httpd.conf文件找到以下两行
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
去掉前面的#,然后所有LoadModule的后面添加下面两行
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
然后重起Apache
4. 建库
假设所有库的根目录是F:/svn,并且要建一个名为testrepos的库,打开DOS窗口,进入到F:/svn目录下,然后输入svnadmin create f:/svn/testrepos
命令执行完后f:/svn/testrepos目录下会生成一些目录和文件。然后在C:/Apache Group/Apache2/conf/httpd.conf文件的最后添加下面内容,并重起Apache
<Location /svn>
DAV svn
SVNParentPath f:/svn
</Location>
5. 测试
打开DOS窗口,进入一个临时目录F:/temp下
svn co http://localhost/svn/testrepos
正确执行后会显示"Checked out revision 0."的信息。
6. 导入
在一个临时文件夹(比如C:/temp)下建立如目录
trunk
branches
tags
在DOS命令行下进入C:/temp目录,然后执行
svn import . http://localhost/svn/testrepos -m "Initial repository"
执行成功的话会提示提交后的修订版本为1。
7. 关于库的建立
建议为会每一个项目建立一个库,例如:
F:/svn/project1
F:/svn/project2
再为每个库建立如下结构(Subversion官方手册建议的目录结构)
F:/svn/project1/trunk 这个目录用来存放正在进行开发的项目代码
F:/svn/project1/branches 这个目录用来存放正在开发中的版本分支
F:/svn/project1/tags 这个目录用来存放不再变动的分支
三、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
新建用户 htpasswd -m D:/Subversion/apache_authz new_username
-c 表示创建文件,-m表示对密码用md5加密
然后,会提示输入两次密码,以后再加用户就不需要用-c了,直接用-m即可。
下面建立控制用户访问权限的文件svn_authz
在D:/Subversion中新建一个记事本文件,输入下面的内容:
[groups]
test-developers = zxm
everyone = @test-developers
[test:/] //这表示,仓库test的根目录下的访问权限
@test-developers = rw
[test:/test] //test仓库下test目录的访问权限
@test-developers = rw // 如果在前面加上@符号,则表示这是个群组权限设置
r 表示读权限
w 表示写权限
好,配置完成,重新启动Apache server
在浏览器地址栏中再次输入:http://localhost/svn/test/
这次要输入密码才能进入,赶快试试吧。
other links:
http://www.cnblogs.com/iaxes/articles/43184.html
http://alexclark.itpub.net/post/670/5647
Apache Http Server服务启动svnserve模块权限配置说明
1. Apache 提供了基本的全局粒度权限设置:
* 首先需要创建一个用户文件。Apache 提供了一个工具 htpasswd,用于生成用户文件,可以在 Apache 的安装目录下找到。具体使用方法如下:
htpasswd etc/svn/passwordfile username
如果 passwordfile 不存在,可以加上 -c 选项让 htpasswd 新建一个。创建好的文件内容是用户名加上密码的 MD5 密文。
* 接下来修改 httpd.conf,在 Location 标签中加入如下内容:
Java代码 复制代码
1. AuthType Basic
2. AuthName "svn repos"
3. AuthUserFile /etc/svn/passwordfile
4. Require valid-user
AuthType Basic
AuthName "svn repos"
AuthUserFile /etc/svn/passwordfile
Require valid-user
重新启动 Apache, 打开浏览器访问版本库。Apache 会提示你输入用户名和密码来认证登陆了。
现在只有 passwordfile 文件中设定的用户才可以访问版本库。也可以配置只有特定用户可以访问,替换上述 “Require valid-user” 为 “Require user tony robert” 将只有 tony 和 robert 可以访问该版本库。
有的时候也许不需要这样严格的访问控制,例如大多数开源项目允许匿名的读取操作,而只有认证用户才允许写操作。为了实现更为细致的权限认证,可以使用 Limit 和 LimitExcept 标签。例如:
Java代码 复制代码
1. <LIMITEXCEPT REPORT OPTIONS PROPFIND GET>
2. require valid-user
3. </LIMITEXCEPT>
<LIMITEXCEPT REPORT OPTIONS PROPFIND GET>
require valid-user
</LIMITEXCEPT>
如上配置将使匿名用户有读取权限,而限制只有 passwordfile 中配置的用户可以使用写操作。
2. 目录粒度权限访问设置:
使用 Apache 的 mod_authz_svn 模块对每个目录进行认证操作。
首先需要让 Apache 将 mod_authz_svn 模块加载进来。在 Subversion 的安装目录中找到 mod_auth_svn 模块,将其拷贝到 Apache 安装目录的 modules 子目录下。修改 httpd.conf 文件,找到
Java代码 复制代码
1. LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule dav_svn_module modules/mod_dav_svn.so
在其后面加上
Java代码 复制代码
1. LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
现在可以在 Location 标签中使用 authz 的功能了。一个基本的 authz 配置如下:
Java代码 复制代码
1. <LOCATION repos>
2. DAV svn
3. SVNPath /etc/svn/repos
4. AuthType Basic
5. AuthName "svn repos"
6. AuthUserFile /etc/svn/passwd
7. AuthzSVNAccessFile /etc/svn/accesspolicy
8. Satisfy Any
9. Require valid-user
10. </LOCATION>
<LOCATION repos>
DAV svn
SVNPath /etc/svn/repos
AuthType Basic
AuthName "svn repos"
AuthUserFile /etc/svn/passwd
AuthzSVNAccessFile /etc/svn/accesspolicy
Satisfy Any
Require valid-user
</LOCATION>
其中AuthUserFile和AuthzSVNAccessFile两个文件就是指向3章节中的 passwd和authz策略文件 指向的是 authz 的策略文件
使用 SVNParentPath 代替 SVNPath 来指定多个版本库的父目录时,其中所有的版本库都将按照这个策略文件配置。例如上例中 tony 将对所有版本库里的 /tags 目录具有读写权限。如果要对具体每个版本库配置,用如下的语法:
Java代码 复制代码
1. [groups]
2. 02 project1_committers = paulex richard
3. project2_committers = jimmy michel spark sean /
4. steven tony robert
5. [repos1:/]
6. * = r
7. @ project1_committer = rw
8. [repos2:/]
9. * = r
10. @ project2_committer = rw
[groups]
02 project1_committers = paulex richard
project2_committers = jimmy michel spark sean /
steven tony robert
[repos1:/]
* = r
@ project1_committer = rw
[repos2:/]
* = r
@ project2_committer = rw
这样项目1的 committer 组只能对 repos1 版本库下的文件具有写权限而不能修改版本库 repos2,同样项目2的 commiter 也不能修改 repos1 版本库的文件。
svn apache 安装 权限设置
最新推荐文章于 2022-06-25 15:53:03 发布