一、安装
安装 Apache 2.2 安装 Subversion 1.5.5
找到 Subversion 安装目录下的以下文件:
bin/mod_authz_svn.so bin/mod_dav_svn.so
复制到 Apache 安装目录下 modules 目录中
bin/intl3_svn.dll bin/libdb*.dll
复制到 Apache 安装目录下 bin 目录中(这里似乎并不是必须的,我猜想这里或许是为了支持 Berkeley DB 而所作的操作,但我并不打算深入研究下去)
二、环境
假设 Subversion 安装在 D:\SVN\Subversion 目录下 假设创建 D:\SVN\Repositories\ 目录作为版本库总目录 假设在 D:\SVN\Repositories\ 中创建目录iSLeeBlog,并在其中创建版本库,假设已经配置好用户授权,那么应该可以通过 svn://localhost/iSLeeBlog 访问版本库。 假设统一将Apache的SVN项目配置文件放在 D:\SVN\conf 目录下 假设Apache的默认端口号为8080
三、配置Subversion版本库管理服务器
找到创建的版本库目录下的配置文件,例如:D:\SVN\Repositories\iSLeeBlog\conf\
将 passwd 文件改名为 passwd.svn(也可以不改名,这里是为了结构更清晰)
用文本编辑器修改 svnserve.conf 文件,找到以下两行
#password-db = passwd ... #authz-db = authz
修改为:
password-db = passwd.svn ... authz-db = authz
这里 authz 就是授权文件的名称,在 Subversion 和 Apache 中可以使用相同的授权文件,但无法使用相同的 passwd 文件,因为 Apache 是以加密方式存储密码,而 Subversion 使用明文储存密码,所以上面将 Subversion 生成的 passwd 文件改名,说明其仅用在 Subversion 下。
思考:这里可以使用相同的账号文件吗?显然,我对 Apache 的配置还是不太熟悉,两个账号文件需要同步维护比较麻烦,如果您知道如何解决,请您帮助我,谢谢。
如何配置授权文件不再详述,请自行查看授权文件中自带的注释,已经解释的非常清晰。
四、配置Apache服务器
找到 Apache 安装目录下 conf/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
使用 Apache 安装目录下的 bin/htpasswd.exe 可执行文件生成授权文件
第一次生成,使用 -cb 参数:
htpasswd -cb [filename] [username] [password]
例如:
htpasswd -cb passwd.apache islee 123
添加新用户,使用 -b 参数:
htpasswd -b passwd.apache another 456
将生成的 passwd.apache 文件移动到 D:\SVN\Repositories\iSLeeBlog\conf 目录下
a) 配置单项目
在Apache的conf/httpd.conf文件,在末尾添加以下内容
#配置虚拟目录 <location /svn/iSLeeBlog> #引用远程访问模块 DAV svn
#版本库路径 SVNPath D:\SVN\Repositories\iSLeeBlog
#授权文件 AuthzSVNAccessFile D:\SVN\Repositories\iSLeeBlog\conf\authz
#所有用户都需要身份验证 Satisfy Any Require valid-user
#验证方式 AuthType Basic
#项目的名称 AuthName "iSLee's Blog Project"
#用户文件 AuthUserFile D:\SVN\Repositories\iSLeeBlog\conf\passwd.apache </location>
b) 配置多项目
在 httpd.conf 文件末尾增加一下一句,作用是引用指定目录下的所有 project 文件
Include D:\SVN\conf\*.project
然后在指定目录,这里是 D:\SVN\conf 中创建单个项目配置文件 iSLeeBlog.project 文本文件
iSLeeBlog.project 文件中的内容同“a) 配置单项目”节中的内容完全相同,新的项目之需要继续创建 project 文件,并根据需要更改虚拟目录路径以及授权文件名称即可。
配置以后需要重启 Apache 服务器。
五、访问
如果在局域网中,那么可以输入“svn://localhost/iSLeeBlog”即可访问版本库。
如果远程访问Apache服务器,那么可以在浏览器或客户端软件中输入“http://yourdomain or IP/svn/iSLeeBlog”即可访问iSLeeBlog项目。
六、备注
Subversion 的客户端 TortoiseSVN 是一个很棒的工具,虽然它与本文无关,但多看它附带的帮助文档,你将获益匪浅
以上文档由 iSLee 编写维护,最后更新日期:2009年3月6日
附,svn服务器配置:
1 下载服务器端 2 安装服务器端 3 创建一个版本库,命令:svnadmin create 新版本库路径 4 修改用户名和口令。进入新版本库所在目录, 找到conf目录下的svnserve.conf,将其中 # password-db = passwd 的#去掉。 找到conf目录下的passwd文件,将其中# harry = harryssecret 和 # sally = sallyssecret 改成自己的用户名和密码。=前面是用户名,=后面是密码,用户名前面不要有空格。 5 启动SVN服务器 方式一:命令行方式: svnserve.exe -d -r 版本库路径 方式二:服务方式:sc create svnserve binpath= "SVN的BIN目录\svnserve.exe --service --root 版本库路径" displayname= "Subversion" depend= tcpip start= auto 如sc create svnserve binpath= "e:\svn\bin\svnserve.exe --service --root e:\svn\repos" displayname= "svn" depend= tcpip start= auto,注意:版本库路径后面不要带\。 其中sc命令不是windows自带的,是微软.net sdk中的一个工具。
至此SVN服务器已经能运行,SVN服务器的访问地址为 svn://服务器名或IP地址
示例:authz 文件
# 以[*/]标记的为项目路径 # rw 表示读写 # r 表示只读 # *= 禁止所有用户访问,*代表所有用户,权限为空代表没有任何权限 # 可以为一个目录赋予多个组或多个用户
# 定义repos储存库根目录的访问权限 [repos:/] @axtic=rw #定义组axtic下面的用户拥有读写权限 azheng=rw #定义用户azheng有读写权限 10yue=rw #定义用户10yue有读写权限 dougen=rw #定义用户dougen有读写权限
#定义test储存库下test目录的访问权限 #[test:/test] #user=r
#下面是用户组的配置,左边是组名,右边是隶属于改组的用户,多个用户以逗号(“,”)隔开。 #组名可以由字母数字下划线构成 [groups] axtic=azheng,10yue,dougen
|