Rumah > Artikel > pangkalan data > svn1.6+apache2.2配置之Apache集成
软件准备 : svn-win32-1.6.1.zip (http://subversion.tigris.org/files/documents/15/45600/svn-win32-1.6.1.zip) 和 apache_2.2.11-win32-x86-no_ssl.msi 注意版本要匹配,否则可能会报错误1和2(见 下面) 软 件安装: 1. 安装svn 1.1 直接解压下载的svn
软件准备 :
svn-win32-1.6.1.zip (http://subversion.tigris.org/files/documents/15/45600/svn-win32-1.6.1.zip ) 和apache_2.2.11-win32-x86-no_ssl.msi 注意版本要匹配,否则可能会报错误1 和2 (见 下面)
软 件安装:
1. 安装svn
1.1 直接解压下载的svn 压缩包 即可
1.2 (%svn% 为svn 的 主目录)使用%svn%/bin 下的svnadmin 命令创建工程:
svnadmin create d:/svn/myproject
注释:d:/svn 为svn 的 根目录,myproject 是我们的工程
2. 安装apache :
2.1 按照提示安装即可
2.2 关于80 端口是否被占用
2.2.1 使 用命令 netstat -ano|findstr ".*:80.*:.*" 即可查看80 端口是否被使用,一般安装iis 以及迅雷等
软件有可能把端口占用,如果80 被占用的话,最后一列的数字即为占用80 端口软件的pid ; 当然您可以把该软件关闭,也可以修改apache 的端口
2.2.2 (%apache% 为apache 的 主目录)修改apache 的端口可以修改%apache%/conf/httpd.conf
把里面的Listen 80 修改为:
Listen 81
这样您的apache 的端口就变成81 了,不会与80 冲 突啦,修改后端口再按照2.1 重新安装一次即可
2.3 在浏览器里输入http ://localhost:81 正 常显示说明安装成功。(81 是端口号)
3. 把svn 与apache 结 合
3.1 拷贝%svn% 下的文件到%apache% 下
3.1.1 把%svn%\bin\ 下 的 mod_dav_svn.so 和mod_authz_svn.so 到%apache%\ modules 目录下
3.1.2 把%svn%\bin\ 下的 九个dll 文件intl3_svn.dll,libapr-1.dll,libapriconv-1.dll,libaprutil-1.dll,libdb44.dll,libsvn_delta-1.dll,libsvn_fs-1.dll,libsvn_repos-1.dll,libsvn_subr-1.dll 拷 贝到%apache%\bin 目录下( 建议全部copy 过去,否则容易
报错误2 ,见下面)
3.2 修改%apache%/conf/httpd.conf 文 件
3.2.1 把在httpd 中找到以下2 行, 并把前面的注释符# 删除:
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
如果不删除容易报错误3 ,见下面
3.2.2 在LoadModule 结尾 处添加以下2 行:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
3.2.3 在http.conf 文件的结尾处添加以下配置行:
DAV svn
SVNParentPath D:\svn
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile D:\svn\passwd
#AuthzSVNAccessFile D:\svnaccessfile
Require valid-user
注释:1. SVNParentPath D:\svn 为svn 的主目录,参加1.2 中设置
2 .AuthUserFile D:\svn\passwd 密 码存储文件,(下面要使用)
说明:
意 味着可以通过像这样的URL(http://MyServer/svn) 来访问Subversion版本库
DAV svn
告 诉Apache哪个模块 负责服务像那样的URL--在这里就是Subversion模块
SVNListParentPath on
在Subversion 1.3及更高版本中,这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库
SVNParentPath F:\svnROOT
告 诉Subversion在目录F:\svnROOT下寻找版本库
AuthType Basic
启 用基本的验证,比如用户名/密码对
AuthName "Subversion repositories"
当 一个验证对话框弹出时,告诉用户这个验证是用来做什么的
AuthUserFile F:\svnROOT\htpasswd
指 定F:\svnROOT\htpasswd用为密码文件用来验证用户的用户名及密码
AuthzSVNAccessFile F:\svnROOT\authz
指 定F:\svnROOT\authz来限定各个用户或组在版本库中目录的访问权限
Require valid-user
限 定用户只有输入正确的用户名及密码后才能访问这个路径(此项表示,无论是IE还是Tortoise,只有通 过密码验证才能访问)。
下面表示允许匿名访问,对于读操作,不需要用户验证。
#
#Require valid-user
#
AuthUserFile和AuthzSVNAccessFile 的 工作原理是,先使用Apache用户机制进行验证,通过之后将请求提交给mod_authz _svn.so 进行认证,最后使用mod_dav _svn.so提供的功能。
3.3 创建passwd 文件 来管理svn 的访问权限
3.3.1 使用%apache%\bin\ htpasswd .exe 来创建密码
第一个用户的命令: htpasswd -c D:\svn\passwd %username%
第二个用户的命令: htpasswd D:\svn\passwd %username%
注释:1.-c 是创建新文,%username% 是 用户名,输入命令后还会提示输入密码二次。
2.D:\svn\passwd 为3.1.3 中设置的路径 文件
上面的配置仅仅是一个简单的示例。你还可以对Apache进行许许多多的配置。
1.如果你想让所有用户对版本库都有读的权限而只有特定的用户才有写的权限,你可以将这行
CODE:
Require valid-user
改为
CODE:
Require valid-user
2.上面的配置使用了passwd文件将你所有的版本库作为一个单元来限定访问权限。如果你想获得更多的控制,如限定某个用户可以访问版本库中的哪个目 录,可以把下面这行的#去掉:
CODE:
#AuthzSVNAccessFile D:\svnaccessfile
然后用文本编辑器创建一个Subversion授权文件。Apache将确保只有有效的用户可以访问你的/svn位置,然后将用户名传到 AuthzSVNAccessFile模块,这样可以依据Subversion授权文件得到更精细的权限控制。注意,路径将被指定为[库:路径]或者简单 的[路径]。如果你不明确指定一个库,访问规则将应用到由SVNParentPath指定的目录下所有的版本库中。一个授权文件例子可能像这样:
CODE:
[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
docs = bob, jane, mike
training = zak
# 为所有库指定默认访问规则
# 所有人可以读,管理员可以写,危险分子没有任何权限
[/]
* = r
@admin = rw
dangerman =
# 允许开发人员可以完全访问他们的项目版本库
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]
@devteam1 = rw
@devteam2 = rw
trevor = rw
# 文档编写人员对所有的docs目录有写权限
[/trunk/doc]
@docs = rw
# 培训人员可以完全访问培训版本库
[TrainingRepos:/]
@training = rw
Svn 与apache 结合容易产生的错误 :
1. httpd.exe: Syntax error on line 86 of D:/Program Files/Apache Software Fou
n/Apache2.2/conf/httpd.conf: API module structure 'dav_svn_module' in file
ogram Files/Apache Software Foundation/Apache2.2/modules/mod_dav_svn.so is
ed - expected signature 41503232 but saw 41503230 - perhaps this is not an
e module DSO, or was compiled for a different Apache version?
Note the errors or messages above, and press the
解决办法就是使用2.0 版本的apache
2. httpd.exe: Syntax error on line 86 of D:/Program Files/Apache Software Foundatio
n/Apache2.2/conf/httpd.conf: Cannot load D:/Program Files/Apache Software Founda
tion/Apache2.2/modules/mod_dav_svn.so into server: \xd5\xd2\xb2\xbb\xb5\xbd\xd6\
xb8\xb6\xa8\xb5\xc4\xb3\xcc\xd0\xf2\xa1\xa3
Note the errors or messages above, and press the
可以看到已经说明了是2.2.9 以上的apache
3. Syntax error on line 487 of D:/Program Files/Apache Software Foundation/Apache2.
2/conf/httpd.conf:
Invalid command 'DAV', perhaps misspelled or defined by a module not included in
the server configuration
Note the errors or messages above, and press the
把LoadModule dav_module modules/mod_dav.so 前 的注释去掉
转帖:http://hi.baidu.com/lubezhang/blog/item/bf7aa72ea2c7fa5b4ec226d2.html