您的位置:首页 > 运维架构 > Apache

svn1.6+apache2.2+ssl配置之Apache集成

2014-05-04 16:22 495 查看



软件准备

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端口是否被占用

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%下

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文件的结尾处添加以下配置行:

<Location /svn>

DAV svn

SVNParentPath D:\svn

AuthType Basic

AuthName "Subversion repositories"

AuthUserFile D:\svn\passwd

#AuthzSVNAccessFile D:\svnaccessfile

Require valid-user

</Location>

注释:1. SVNParentPath D:\svn 为svn的主目录,参加1.2中设置

2 .AuthUserFile D:\svn\passwd 密码存储文件,(下面要使用)

说明:

<Location /svn/>

意味着可以通过像这样的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,只有通过密码验证才能访问)。

下面表示允许匿名访问,对于读操作,不需要用户验证。

#<LimitExcept GET PROPFIND OPTIONS REPORT>

#Require valid-user

#</LimitExcept>

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:

<LimitExcept GET PROPFIND OPTIONS REPORT>

Require valid-user

</LimitExcept>

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 <ESC> key to exit. 3....

解决办法就是使用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 <ESC> key to exit. 16...

可以看到已经说明了是以上的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 <ESC> key to exit. 25...

把LoadModule dav_module modules/mod_dav.so 前的注释去掉

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: