深入剖析:Subversion1.5.5和Apache2.2.9在Windows下的完美结合
Subversion相信大家都不会陌生,现在已经发布了多个版本,本文就来说一下Subversion1.5.5与Apache2.2.9结合用法,希望本文能教会你更多东西。
初步实现了Apache2.2.9+Subversion1.5.5在windows下的配置与权限设置
1.安装Apache2.2.9(http://httpd.apache.org/download.cgi)
选择:Win32Binarywithoutcrypto(nomod_ssl)(MSIInstaller):apache_2.2.9-win32-x86-no_ssl-r2.msi[PGP][MD5]在安装过程输入信息前两项NetworkDomain和ServerName中都输入localhost,下面那个email就随便了,如果机器安装了iis并且启动中,要先把iis服务停掉。否则会和apache的监听端口冲突的。
2.下载SVN1.5(如果是1.4.6版本则有exe二进制安装文件,而1.5目前只有source版,解压下来即可用)
(我安装的是Subversion1.5.5http://subversion.tigris.org/fil...svn-win32-1.5.5.zip)
(先安装了之前的版本:1.4.6,然后弄1.5.5的拷过去覆盖安装的目录文件)
将\svn安装路径\bin中的文件mod_dav_svn.so和mod_authz_svn.so,将它们拷贝到Apache的modules目录,复制%SVN_HOME%\bin\libdb44.dll、libeay32.dll、以及ssleay32.dll到%APACHE_HOME%\bin然后,使用记事本之类的文本编辑器编辑Apache的配置文件\conf\httd.conf做如下修改:
去掉以下行的注释(将开头的#删除):
#LoadModuledav_fs_modulemodules/mod_dav_fs.so
#LoadModuledav_modulemodules/mod_dav.so
在LoadModule节的最后添加以下两行:
LoadModuledav_svn_modulemodules/mod_dav_svn.so
LoadModuleauthz_svn_modulemodules/mod_authz_svn.so
完成以上步骤也就完成了Apache2.2.9+svn1.5的基本配置
现在关闭Apache服务器,再重启,会发现Apache控制台的状态栏出现Subversion的信息
如:Apache/2.2.9(Win32)SVN/1.5DAV/2
这就说明已经成功的将Subversion集成到了Apache当中
3.下载并安装TortoiseSVN(http://tortoisesvn.tigris.org/)(我安装的是Subversion1.5.5版本)根据向导安装好后,创建版本库E:\svnroot\delete(库名),右键->TortoiseSVN->CreateRepositoryhere...“,然后可以选择版本库模式,这里使用默认即可,然后就创建了一系列目录和文件。
4.修改Apache的配置文件
在Apache的配置文件\conf\httd.conf文件的尾部添加
DAVsvn
SVNPathE:/svnroot/delete
AuthzSVNAccessFileE:/svnroot/delete/conf/access.auth
SatisfyAny
Requirevalid-user
AuthTypeBasic
AuthName"Subversionrepositories"
AuthUserFileE:/svnroot/delete/conf/users.auth
Requirevalid-user
设置解释意思是Subversion版本库的URL是http://MyServer/svn/DAVsvn告诉Apache是哪个模块响应那个URL的请求-此刻是Subversion模块。SVNListParentPathon对于Subversion1.3,Subversion1.5.5或者更高版本,这个指示表示显示所有VNParentPath下的版本库。SVNParentPath告诉Subversion需要查看的版本库位于SVN之下AuthTypeBasic激活基本认证,就是用户名/密码AuthName"Subversion repositories"用来说明何时弹出要求用户输入认证信息的认证对话框AuthUserFilepasswd指定使用的认证密码文件AuthzSVNAccessFile位置Subversion版本库的访问控制文件的路径Requirevalid-user指定只有输入了正确的用户/密码的用户可以访问URL.
接下来我们创建认证所需的两个文件:用户文件users.auth和权限文件access.auth,users.auth可以用Apache安装目录下bin目录中的htpasswd.exe程序生成,具体生成方法如下:
我的Apache安装路径是:D:\ProgramFiles\ApacheSoftwareFoundation\Apache2.2\
打开命令窗口,进入到D:\ProgramFiles\ApacheSoftwareFoundation\Apache2.2\bin,
在命令行中使用如下命令:htpasswdCcbusers.authsvnadmin(用户名)svnadmin(密码)回车就可以了,命令行中的参数-c表示创建一个文件,第一次运行创建好了,再添加别的用户的时候就不要再使用这个参数了,如我再添加yanyan用户htpasswdCbusers.authyanyanyanyan这样建立的用户密码默认使用的MD5加密,你打开文件以后看到的可能就是如下格式:
svnadmin:7Z/80Al6$WTqVrBgshc/Bxi6YYkUga1$apr1$
yanyan:kNrG459T$qfAZ7MpgpFcdd2xp25gST1$apr1$
到此我们就添加好了svnadmin,yanyan两个用户,他们的密码分别为svnadmin和yanyan配置认证权限文件access.auth可以和users.auth文件在同一目录下建立access.auth文件即可,然后填入如下内容
[groups]
admin=svnadmin#管理用户组
dev=yanyan,svnadmin#开发用户组
[/]
*=r#设定所有用户对根目录有读权限,即浏览权限
[/aaa]
@admin=rw#设定管理组成员对aaa目录有读和写权限
@dev=#设定dev组成员对aaa目录没有任何权限
[/bbb]
@admin=#设定管理组成员对bbb目录没有任何权限
@dev=rw#设定dev组成员对bbb目录有读和写权限
[/ccc]
@admin=#设定管理组成员对ccc目录没有任何权限
@dev=#设定dev组成员对ccc目录没有任何权限
到此我们为不同用户分组定义了权限,大家可以使用不同的用户
进行browse/import/checkout试验
访问路径为http://localhost/svn或者http://ip/svn/...
--------------------------------
◆配置多仓库的用户权限
◆首先在建立一个仓库delete2
◆在E:\svnroot目录下创建delete2子目录
◆然后执行svnservecreateE:\svnroot\delete2建立仓库delete2
修改打开Apache安装目录下conf目录中的httpd.conf文件,将光标移到问文件的最末端
加入的代码修改如下:
DAVsvn
SVNParentPathE:/svnroot
AuthzSVNAccessFileE:/svnroot/access.auth(权限文件)
SatisfyAny
Requirevalid-user
AuthTypeBasic
AuthName"Subversionrepositories"
AuthUserFileE:/svnroot/users.auth(用户和密码文件)
Requirevalid-user
◆认证用户文件users.auth不需要做任何修改
◆认证权限文件access.auth修改如下:
[groups]
admin=svnadmin#管理用户组
dev=yanyan,svnadmin#开发用户组
[delete1:/]
*=r
[delete1:/aaa]
@admin=rw#设定管理组成员对aaa目录有读和写权限
@dev=#设定dev组成员对aaa目录没有任何权限
[delete1:/bbb]
@admin=#设定管理组成员对bbb目录没有任何权限
@dev=rw#设定dev组成员对bbb目录有读和写权限
[delete1:/ccc]
@admin=#设定管理组成员对ccc目录没有任何权限
@dev=#设定dev组成员对ccc目录没有任何权限
[delete2:/]
@svnadmin=#设定dev1组成员对delete2仓库没有任何权限
@dev=#设定dev2组成员对delete2仓库没有任何权限