linux下搭建SVN服务器完全手册.docx
- 文档编号:10373446
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:14
- 大小:344.77KB
linux下搭建SVN服务器完全手册.docx
《linux下搭建SVN服务器完全手册.docx》由会员分享,可在线阅读,更多相关《linux下搭建SVN服务器完全手册.docx(14页珍藏版)》请在冰豆网上搜索。
linux下搭建SVN服务器完全手册
系统环境
RHEL5.4最小化安装(关iptables,关selinux)+ssh+yum
一,安装必须的软件包.
yuminstallsubversion(SVN效劳器)
mysql-server(用于codestriker)
dmod_dav_svnmod_perl(用于支持WEB方式管理SVN效劳器)
sendmail(用于配置用户提交代码后发邮件提醒)
wgetgcc-c++makeunzipperl*(必备软件包)
ntsysvvim-enhanced(可选)
二,根本的SVN效劳器配置
1,新建一个目录用于存储SVN所有文件
#mkdir/home/svn
2,新建一个版本仓库
#svnadmincreate/home/svn/project
3,初始化版本仓库中的目录
#mkdirprojectproject/serverproject/clientproject/test(建立临时目录)
#svnimportproject/file:
///home/svn/project-m"初始化SVN目录"
#rm-rfproject(删除临时建立的目录)
4,添加用户
要添加SVN用户非常简单,只需在/home/svn/project/conf/passwd文件添加一个形如“username=password"的条目就可以了.为了测试,我添加了如下内容:
[users]
#harry=harryssecret
#sally=sallyssecret
pm=pm_pw
server_group=server_pw
client_group=client_pw
test_group=test_pw
5,修改用户访问策略
/home/svn/project/conf/authz记录用户的访问策略,以下是参考:
[groups]
project_p=pm
project_s=server_group
project_c=client_group
project_t=test_group
[project:
/]
@project_p=rw
*=
[project:
/server]
@project_p=rw
@project_s=rw
*=
[project:
/client]
@project_p=rw
@project_c=rw
*=
[project:
/doc]
@project_p=rw
@project_s=rw
@project_c=rw
@project_t=rw
*=
以上信息表示,只有pm有根目录的读写权,server_group能访问server目录,client_group能访问client目录,所有人都可以访问doc目录.
6,修改svnserve.conf文件,让用户和策略配置升效.
svnserve.conf内容如下:
[general]
anon-access=none
auth-access=write
password-db=/home/svn/project/conf/passwd
authz-db=/home/svn/project/conf/authz
7,启动效劳器
#svnserve-d-r/home/svn
8,测试效劳器
Authenticationrealm:
//192.168.60.10: 3690>92731041-2dae-4c23-97fd-9e1ed7f0d18d Passwordfor'root': Authenticationrealm: //192.168.60.10: 3690>92731041-2dae-4c23-97fd-9e1ed7f0d18d Username: server_group Passwordfor'server_group': svn: Authorizationfailed(server_group没用根目录的访问权) Authenticationrealm: //192.168.60.10: 3690>92731041-2dae-4c23-97fd-9e1ed7f0d18d Passwordfor'root': Authenticationrealm: //192.168.60.10: 3690>92731041-2dae-4c23-97fd-9e1ed7f0d18d Username: pm Passwordfor'pm': Aproject/test Aproject/server Aproject/client Checkedoutrevision1.(测试提取成功) #cdproject/server #svncommitmain.c-m"测试一下我的C程序,看什么看,不行啊? ? " Transmittingfiledata. Committedrevision2.(测试提交成功) 三,配置SVN效劳器的支持 1,转换SVN效劳器的密码 由于SVN效劳器的密码是明文的,效劳器不与支持,所以需要转换成支持的格式。 我写了一个Perl脚本完成这个工作. 脚本内容如下: #cd/home/svn/project/conf/ #! /usr/bin/perl #writebyhuabo,2021-11-20 usewarnings; usestrict; #openthesvnpasswdfile open(FILE,"passwd")ordie("Cannotopenthepasswdfile! ! ! \n"); #cleartheapachepasswdfile open(OUT_FILE,">webpasswd")ordie("Cannotopenthewebpasswdfile! ! ! \n"); close(OUT_FILE); #begin foreach( if($_=~m/^[^#].*=/){ $_=~s/=//; `htpasswd-bwebpasswd$_`; } } #./PtoWP.pl(先给该脚本加可执行权限,然后执行以转换密码) Addingpasswordforuserpm Addingpasswordforuserserver_group Addingpasswordforuserclient_group Addingpasswordforusertest_group 现在目录下会多一个webpasswd文件。 2,修改d.conf,添加关于SVN效劳器的内容 编辑/etc/d/conf/d.conf,在最后添加如下信息: DAVsvn SVNPath/home/svn/project/ AuthTypeBasic AuthName"svnforproject" AuthUserFile/home/svn/project/conf/webpasswd AuthzSVNAccessFile/home/svn/project/conf/authz Satisfyall Requirevalid-user 3,启动D效劳器 #servicedrestart Stoppingd: [FAILED] Startingd: [OK] 测试结果如下列图所示: (测试成功) 四,配置邮件提醒支持 1,安装Perl模块Module: : Build #./Build #./Buildtest #./Buildinstall #cd.. 2,安装Perl模块Authen: : SASL #maketest #makeinstall #cd.. 3,安装Perl模块Net: : SMTP_auth #maketest #makeinstall #cd.. 4,安装Perl模块SVN: : Notify #./Build #./Buildtest #./Buildinstall #cd.. 5,启动邮件效劳器 #servicesendmailrestart Shuttingdownsendmail: [FAILED] Startingsendmail: [OK] Startingsm-client: [OK] 6,配置自动发邮件脚本 修改post-commit脚本,以支持邮件通知功能. #cd/home/svn/project/hooks/ #vimpost-commit 内容如下: #! /bin/sh REPOS="$1" REV="$2" /usr/bin/svnnotify--repos-path"$1"--revision"$2"--tocaodaijun@pica--fromcaodaijun@feinno--handler"HTML: : ColorDiff"--with-diff--smtplocalhost--smtp-userroot--smtp-pass5202114318-c"UTF-8"-gzh_CN-oraw--svnlook/usr/bin/svnlook--subject-prefix'[SVNUpdate]' (to参数代表接收邮件的地址,可以有多个,当你有多个老大的时候,这就很重要了,: 〕。 from参数是虚拟的,代表你的发送地址,一般情况下,这个参数不重要,但如果接收者的邮件效劳器有反垃圾邮件的功能,需要判定源地址的话,这个参数是否合法就显得很重要了) 再给该脚本添加可执行权限 #chmod+xpost-commit 7,再次提交时,就会给指定邮件地址发信了。 如下列图所示: 五,其它常用配置 1,强制写log脚本 配置pre-commit文件,要求用户每次更新文件都必须写log. #cd/home/svn/project/hooks/ #vimpre-commit 文件内容如下: #! /bin/sh REPOS="$1" TXN="$2" SVNLOOK=/usr/bin/svnlook LOGMSG=`$SVNLOOKlog-t"$TXN""$REPOS"|grep"[a-zA-Z0-9]"|wc-c` if["$LOGMSG"-lt5(要求的log长度,依实际需要修改)]; then echo-e"\nEmptylogmessagenotallowed.Commitaborted! "1>&2 exit1 fi 配置完成后,给本件加上可执行权限。 再提交代码时,就必须按要求写注释了,: 〕 2,可修改log脚本 配置pre-revprop-change文件,此文件在showlog中修改log时会运行,得到修改的权限,否那么会报错: DAVrequestfailed;it'spossiblethattherepository'spre-revprop-changehookeitherfailedorisnon-existent.Atleastonepropertychangefailed;repositoryisunchanged #cd/home/svn/project/hooks/ #vimpre-revprop-change 文件内容如下: REPOS="$1" REV="$2" USER="$3" PROPNAME="$4" if["$PROPNAME"="svn: log"];thenexit0;fi exit1 配置完后加可执行权限升效。 六,备份管理 svn效劳器的定期备份是很重要的,最简单的方式是定时备份仓库目录。 1,新建备份目录 #mkdir/opt/project_backup 2,编写备份脚本 #cd/home/svn/ 内容如下: #! /bin/bash #writebyhuabo,2021-11-20 cd/home/svn now=`/bin/date+%Y%m%d` /bin/tarczvf"project_backup_$now.tar.gz"project/&&rm-rf/opt/project_backup/*&&/bin/mvproject_backup_*.tar.gz/opt/project_backup/ if[$? ==0] then result="OK! ! " else result="False! ! " fi #sendmailtoadministrator /bin/mailcaodaijun@pica-s"project_backup_$now"< Result: `/bin/echo$result` MESSAGE 给该脚本添加可执行权限。 3,设定每天定时执行该脚本. #crontab-e 输入如下内容: 表示每天晚上23点运行此脚本。 经过以上三步操作,就可以自动备份SVN资料了,且不管备份是否成功,都会给用户发送邮件信息。 七,用svnstat分析SVN数据. 1,安装JAVA svnstat是JAVA应用程序,需要先安装JAVA环境。 安装: 2,下载svnstat 3,更新代码 #pwd /root Aproject/test Aproject/server Aproject/client Checkedoutrevision5. 4,生成svnstat数据 #java-classpathSvnStat-all.jarde.agentlab.svnstat.SvnStat-jarSvnStat-all.jar-r/root/project.log-d/var/www/html/ 5,用浏览器登录即可看到许多统计出来的图表。 大致如下列图所示: (俺的测试代码很少,生成的图不成样子,拿官方的图来充当一下,: 〕) 八,用statsvn分析SVN数据 1,下载statsvn 2,生成statsvn数据 #mkdir/var/www/html/statsvn #java-jarstatsvn.jar-verbose-output-dir/var/www/html/statsvn//root/project.log/root/project 3,用浏览器测测试效果如下列图: 九,配置codestriker. 1.安装codestriker依赖的perl包. #perl-MCPAN-e'install"Template"' #mkdir/var/www/codestriker #cd/var/www/codestriker #servicemysqldrestart #mysql-urootmysql 执行: CREATEDATABASEcodestrikerdbCHARACTERSETutf8; GRANTSELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE,DROP,REFERENCESONcodestrikerdb.*TOcodestriker@localhostIDENTIFIEDBY'cspasswd'; FLUSHPRIVILEGES; quit 注意以下几点(详细可查看codestriker的安装文档) b.svn的数据仓库要配对,我的如下: @valid_repositories= ( 'svn: file: ///home/svn/project', ) #cdbin/ 在最后面加上如下内容: SetHandlerperl-script PerlHandlerModPerl: : Registry Options+ExecCGI AllowOverrideNone Allowfromall #servicedrestart 8.在浏览器中输入: //192.168.60.10/codestriker/codestriker.pl即可访问,如下列图:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 搭建 SVN 服务器 完全 手册