资源描述
SVN服务端配置管理使用指导
作者
确认
批准
姓名
潘涛
许娟萍
林澜
日期
2007-12-24
2007-12-25
2007-12-27
版权所有,©北京福富软件技术股份有限公司福州分公司
电信信息化部
修订历史记录
版号
改号
日期
作者
修订要点
A
0
2007-12-24
潘涛
新做成
目录
1 概述 4
2 SVN简介 4
3 SVN安装指南 4
3.1 相关软件 4
3.2 软件安装配置 5
3.2.1 安装配置SVN服务器 5
3.2.2 安装配置apache服务器 5
3.2.3 安装配置修改密码的cgi程序 7
4 SVN库目录结构 9
4.1 部门SVN工作目录 9
4.2 部门SVN备份目录 11
5 创建配置SVN工作库 11
5.1 使用tortoiseSVN建SVN空库 11
5.2 在Apache中配置SVN工作库 12
6 创建配置SVN备份库 13
6.1 使用tortoiseSVN建SVN空库 13
6.2 在Apache中配置SVN备份库 13
7 SVN用户管理 14
8 SVN库权限配置 15
1 概述
软件配置管理是项目运作的一个支撑平台,它将项目所有成员的工作协同起来,实现高效的团队沟通,使工作成果及时共享。为进一步规范配置管理,提高软件协同开发的工作效率,电信信息化部引入开源软件Subversion(以下简称SVN)作为统一的版本管理工具,本文主要对SVN服务端配置管理进行指导性说明。
本指导书适用于电信信息化部的各产品部及南京分公司。
2 SVN简介
SVN全名Subversion,是一种开放源码的全新版本控制系统。SVN支持客户端通过http,https,专用的SVN协议,以及SVN+ssh来访问,库目录可以不用以目录写共享的方式让客户端直接访问。可以有效的进行权限控制,支持客户端设置代理,能有效保证数据源安全性以及数据传输安全性。
对于我们的应用,将采用https的方法访问SVN库,使用的web服务器需要是apache。
3 SVN安装指南
3.1 相关软件
· SVN server:SVN1.4.5,for windows,是目前最新版本
File:svn-win32-1.4.5.zip
下载地址: http://subversion.tigris.org/project_packages.html
· SVN client:TortoiseSVN 1.4.5,是目前最新版本
下载地址: http://tortoisesvn.tigris.org/
· Apache server:apache2.2.4加SSL支持,for windows
File: httpd-2.2.4-win32-x86-ssl.zip
下载地址:
用户通过网页修改密码的cgi程序:passwd.cgi
3.2 软件安装配置
以下以软件安装在D:\svn目录为例,SVN server安装目录为d:\svn\svn-win32-1.4.5, apache的安装目录为D:\svn\Apache2。tortoiseSVN安装路径可以任意指定。
3.2.1 安装配置SVN服务器
将SVN1.4.5解压在d:\svn\svn-win32-1.4.5下,安装TortoiseSVN。因为采用apache来访问SVN库,因此SVN服务器的主要作用仅为apache提供必要的动态库。服务端上对SVN库的直接操作则通过tortoiseSVN来进行。
设置相关的环境变量:
1)增加svn的bin目录到path环境变量中
set path= d:\svn\svn-win32-1.4.5\bin;%path%
2)设置APR_ICONV_PATH
set APR_ICONV_PATH= d:\svn\svn-win32-1.4.5\iconv
3.2.2 安装配置apache服务器
将apache服务器安装在d:\svn\Apache2目录下。然后进行配置。
1) 将svn 服务器bin目录下的mod_dav_svn.so、mod_authz_svn.so录复制到apache的modules目录下。
2) 修改d:\svn\Apache2\conf\http.conf
· 修改apache的安装目录
将原先配置文件里头Apache的目录替换为本次的apache的安装目录。配置文件里头缺省是c:\apache2,我们此次安装目录是d:\svn\Apache2,将c:\apache2全部替换为d:\svn\Apache2。
· 修改apache导入的模块,导入DAV,SVN相关模块
去除下面两行行头的注释号’#’,使apache导入这两个模块:
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so
在Load模块最后增加如下两行:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
· 修改conf\httpd.conf配置文件,使其包含ssl配置文件httpd-ssl.conf。
在httpd.conf里头,有如下配置
……
# Secure (SSL/TLS) connections
#Include conf/extra/httpd-ssl.conf
…….
去除#Include conf/extra/httpd-ssl.conf前的注释号,将其改为
Include conf/extra/httpd-ssl.conf
3) 修改conf\extra\ httpd-ssl.conf文件
· https缺省监听端口是443,调整为4443,相关内容如下:
Listen 4443
<VirtualHost _default_:4443>
· 修改apache的相关目录,将其替换为apache的安装目录
DocumentRoot " d:/svn/Apache2/htdocs"
ErrorLog d:/svn/Apache2/logs/error_log
TransferLog d:/svn/Apache2/logs/access_log
· 修改SSL相关证书密钥文件路径
# Server Certificate:
SSLCertificateFile d:/svn/Apache2/conf/server.crt
# Server Private Key:
SSLCertificateKeyFile d:/svn/Apache2/conf/server.key
SSL要求有Server Certificate和Server Private Key。需要在相应目录下生成需要的认证和key文件。
4) 将apache的bin目录添加到系统的path变量中
5) 创建名为“svn-apache”的apache服务
敲入命令:httpd –n svn-apache –k install,即创建了名为“svn-apache”的apache服务。然后可以通过windows服务管理程序来起停该服务。连接到https://127.0.0.1:4443/检查缺省网页是否能够正常显示。
3.2.3 安装配置修改密码的cgi程序
Passwd.cgi需要放在apache的cgi-bin目录下,可以根据需要更改名字,其对应的配置文件是其名字加上.ini后缀。一个cgi及其配置为一组合,可以修改一个密码文件。多个部门,需要有多套的cgi及对应的ini文件。
该文件同时需要旧版(2.0版)的apache的动态链接库libapr.dll、libapriconv.dll、libaprutil.dll。这三个文件需要也放在cgi-bin目录下。
Ini文件格式样例如下:
[path]
authuserfile=F:/svn_data/ddrv/ddrv_passwd
logfile=osspass.log
[setup]
passminlen=6
[html]
title=修改开发推进部用户SubVersion密码
description=修改开发推进部用户SubVersion密码
yourname = 用户名
oldpasswd = 旧密码
newpasswd1 = 新密码
newpasswd2 = 验证新密码
btn_change = 修 改
btn_reset = 重 置
changepassok=成功修改密码
changepassfailed=修改密码失败
oldpasserror=旧密码错误
servererror=服务器错误
passmustgreater=密码位数必须大于
twopassnotmatched=两密码不一致
entername=请输入用户名
back=返回
通常需要修改的是上面的蓝色字体部分。
Authuserfile是需要修改的密码文件的路径
Logfile是log记录。
Passminlen规定密码的最短长度。
Title、description是页面上看到的窗口标题以及页面标题。
4 SVN库目录结构
4.1 部门SVN工作目录
以下以电信产品三部为例,目录结构如下:
oss为电信三部门用户目录,其下有 repos、manage password 、oss_share三个目录,以及oss_passwd文件,具体说明如下:
l repos(目录)
repos目录下面存放SVN库,一个SVN库对应repos下的一个目录。部门用户目录下面可以有多个SVN库目录,可以根据项目的需要来建SVN库。一般一个库包含一个项目或者多个相关项目。
电信产品三部目录repos结构样例如下:
l 部门名_passwd(文件)
部门用户密码文件,直接在部门目录下,上图没有列出。一个部门仅有一个passwd文件。该部门所有的SVN库共享使用该文件。对应于oss部门其文件为 oss/oss_passwd。
l manage passwd(目录)
管理用户密码的管理工具目录,其下有简化的脚本命令,用来维护部门用户密码文件,可以增加删除用户,以及修改密码。
l 部门名_share(目录)
该目录通过网络共享,部门维护人员可以通过网络共享可以直接访问。其下有两个目录,svnaccess、backup。
a)svnaccess(目录)
项目的权限配置文件。每个项目在svnaccess目录下对应一个权限配置文件,文件名称为 项目名_access。
电信产品三部样例如下:
b)backup(目录)
存放备份脚本以及备份日志。
备份脚本:svn_部门名_backup.bat,一个备份脚本同步该部门所有的SVN库。
备份日志:backup.log
电信产品三部样例如下:
目录用户权限:
用户
权限
部门用户
完全权限
开发推进部用户
只读
system
完全权限
4.2 部门SVN备份目录
备份目录的一个部门用户目录下,就一个repos目录,以及一个部门用户密码文件。repos目录下面放备份的SVN库,和工作用的SVN库一一对应。
密码文件里仅需要两个帐号:syncuser、reader。同步的时候使用syncuser帐号进行同步,reader帐号用于用户读取备份库。
目录用户权限:
用户
权限
部门用户
完全权限
开发推进部用户
只读
system
完全权限
5 创建配置SVN工作库
5.1 使用tortoiseSVN建SVN空库
在部门用户的repos目录下,建立新的SVN库目录。点中新建的目录,点击右键菜单,选择TortoiseSVN->create repository here,然后弹出一个对话框,指定SVN存储格式,保持缺省的FSFS类型,即创建完成。如下图:
5.2 在Apache中配置SVN工作库
对于工作库,每个SVN库需要在apache的conf中增加一个配置段。添加在conf文件的最后:
<Location /oss/xnglxt>
DAV svn
SVNPath F:/svn_data/oss/repos/xnglxt
AuthType Basic
AuthName "oss fj_jzgj repositories"
AuthUserFile F:/svn_data/oss/oss_passwd
AuthzSVNAccessFile F:/svn_data/oss/svnaccess/xnglxt_access
Require valid-user
</Location>
· Location /oss/xnglxt 表示相对的URL路径是/svn ,也就是客户端用http(s)://IP:4443//oss/xnglxt/来访问。
· SVNPath 是指SVN库的目录,本例中SVN目录为F:/svn_data/oss/repos/xnglxt,
· AuthUserFile passwd是该库使用的用户密码文件,一个部门只需要一个用户密码文件。用户密码管理详见
· AuthzSVNAccessFile 是该库的目录权限控制文件,一个工作库需要配置一个权限文件。
修改apache的conf文件,需要重启svn-apache服务才能生效。
6 创建配置SVN备份库
6.1 使用tortoiseSVN建SVN空库
建库方法同SVN工作库。还需要在库的hook目录下增加两个脚本文件,pre-revprop-change.bat和start-commit.bat。这两个脚本文件限制只有syncuser这个用户才可以向备份库提交数据。这两个文件内容不需要修改,直接复制到相应库的hook目录下即可。
6.2 在Apache中配置SVN备份库
SVN备份库在配置文件里头只需要为一个部门配置一个配置段。不需要为每个备份库单独配置。
<Location /svn_backup/mss/>
DAV svn
SVNListParentPath on
SVNParentPath h:/svn_backup_data/mss/repos
AuthType Basic
AuthName "MSS backup repositories"
AuthUserFile h:/svn_backup_data/mss/mss_passwd
Require valid-user
</Location>
对于备份库,用户文件可以仅有两个用户,一个syncuser,用于同步写库。一个reader,用于读库。不需要权限配置文件。
SVNParentPath是指定备份库总的目录。该目录下的目录对应每一个实际的备份库。只要在库总的目录下建好备份库,该库即可使用。
SVNListParentPath on允许浏览备份库总的目录,从而可以看到每个部门当前的备份库情况。
因此,在初次配置好conf文件后,此后再增加一个部门的备份库,不需要调整conf文件的内容,也不需要重启apache服务。
7 SVN用户管理
用户管理实际上是管理svn conf中指定的AuthUserFilepasswd文件,修改该文件内容不需要重启apache服务。
1)使用manage password目录下的简化脚本
Manage password目录下面存放管理用户密码文件的简化命令,其实是对apache的htpasswd的封装,指定了密码文件以及参数选项。
l c.bat:
初始化运行环境,进行命令行状态,设置工作目录。如果运行manage password下面的脚本来管理用户,则需要首先执行c.bat脚本,并此后在这个命令行窗口中进行后继操作。
l addu.bat
增加用户,不在命令行指定密码,由后继提示输入。
用法:addu 用户名
l addd.bat
增加用户,在命令行直接指定密码。
用法:addd 用户名 密码
l updateu.bat
修改用户密码,不在命令行指定密码,由后继提示输入。
用法:updateu 用户名
l resetu:
修改用户密码,在命令行直接指定密码。
用法:updateu 用户名 密码
l delu:
删除用户
用法:delu 用户名
2)使用apache原始的htpasswd命令
增加用户:D:\svn\Apache2\bin\htpasswd 密码文件路径 用户名
删除用户:D:\svn\Apache2\bin\htpasswd -D 密码文件路径 用户名
重置用户密码:D:\svn\Apache2\bin\htpasswd 密码文件路径 用户名
8 SVN库权限配置
权限配置是配置svn conf文件里svn库对应的文件:AuthzSVNAccessFile。
SVN权限配置文件有如下特点:
1) 如果有中文,该文件必须以utf-8 nobom的编码保存,可以使用ultraedit 11.20。
2) 可以定义组
格式如下:
[groups]
admin = zhangcg,wangfang,ddrv,lindsh
hnclientteam = luodh,wangsh,linyu5,licm
在[groups]段内定义了两个组,admin和hnclientteam。组内的成员是相应用户密码文件中定义的用户。
3) 给目录设置权限
格式:
[目录名]
用户名=权限
@组名=权限
如果是给组配置权限,需要在组名前面加@。
权限为r,w,rw,以及空。r只读,w只写,rw可读写,空是没有权限。
样例如下:
[groups]
admin = zhangcg,wangfang,ddrv,lindsh
hnclientteam = luodh,wangsh,linyu5,licm
[/]
@admin = rw
[/海南集中告警/开发库/代码/开发目录/公共模块]
@admin = rw
huangxp = rw
* = r
展开阅读全文