您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > linux下搭建SVN服务器完全手册
系统环境RHEL5.4最小化安装(关iptables,关selinux)+ssh+yum一,安装必须的软件包.yuminstallsubversion(SVN服务器)mysql-server(用于codestriker)httpdmod_dav_svnmod_perl(用于支持WEB方式管理SVN服务器)sendmail(用于配置用户提交代码后发邮件提醒)wgetgcc-c++makeunzipperl*(必备软件包)ntsysvvim-enhanced(可选)二,基本的SVN服务器配置1,新建一个目录用于存储SVN所有文件#mkdir/home/svn2,新建一个版本仓库#svnadmincreate/home/svn/project3,初始化版本仓库中的目录#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=sallyssecretpm=pm_pwserver_group=server_pwclient_group=client_pwtest_group=test_pw5,修改用户访问策略/home/svn/project/conf/authz记录用户的访问策略,以下是参考:[groups]project_p=pmproject_s=server_groupproject_c=client_groupproject_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=noneauth-access=writepassword-db=/home/svn/project/conf/passwdauthz-db=/home/svn/project/conf/authz7,启动服务器#svnserve-d-r/home/svn8,测试服务器#svncosvn://192.168.60.10/projectAuthenticationrealm:svn://192.168.60.10:369092731041-2dae-4c23-97fd-9e1ed7f0d18dPasswordfor'root':Authenticationrealm:svn://192.168.60.10:369092731041-2dae-4c23-97fd-9e1ed7f0d18dUsername:server_groupPasswordfor'server_group':svn:Authorizationfailed(server_group没用根目录的访问权)#svncosvn://192.168.60.10/projectAuthenticationrealm:svn://192.168.60.10:369092731041-2dae-4c23-97fd-9e1ed7f0d18dPasswordfor'root':Authenticationrealm:svn://192.168.60.10:369092731041-2dae-4c23-97fd-9e1ed7f0d18dUsername:pmPasswordfor'pm':Aproject/testAproject/serverAproject/clientCheckedoutrevision1.(测试提取成功)#cdproject/server#vimmain.c#svnaddmain.c#svncommitmain.c-m测试一下我的C程序,看什么看,不行啊??Addingmain.cTransmittingfiledata.Committedrevision2.(测试提交成功)三,配置SVN服务器的HTTP支持1,转换SVN服务器的密码由于SVN服务器的密码是明文的,HTTP服务器不与支持,所以需要转换成HTTP支持的格式。我写了一个Perl脚本完成这个工作.脚本内容如下:#cd/home/svn/project/conf/#catPtoWP.pl#!/usr/bin/perl#writebyhuabo,2009-11-20usewarnings;usestrict;#openthesvnpasswdfileopen(FILE,passwd)ordie(Cannotopenthepasswdfile!!!\n);#cleartheapachepasswdfileopen(OUT_FILE,webpasswd)ordie(Cannotopenthewebpasswdfile!!!\n);close(OUT_FILE);#beginforeach(FILE){if($_=~m/^[^#].*=/){$_=~s/=//;`htpasswd-bwebpasswd$_`;}}#./PtoWP.pl(先给该脚本加可执行权限,然后执行以转换密码)AddingpasswordforuserpmAddingpasswordforuserserver_groupAddingpasswordforuserclient_groupAddingpasswordforusertest_group现在目录下会多一个webpasswd文件。2,修改httpd.conf,添加关于SVN服务器的内容编辑/etc/httpd/conf/httpd.conf,在最后添加如下信息:Location/projectDAVsvnSVNPath/home/svn/project/AuthTypeBasicAuthNamesvnforprojectAuthUserFile/home/svn/project/conf/webpasswdAuthzSVNAccessFile/home/svn/project/conf/authzSatisfyallRequirevalid-user/Location3,启动HTTPD服务器#servicehttpdrestartStoppinghttpd:[FAILED]Startinghttpd:[OK]4,用浏览器访问测试测试结果如下图所示:(测试成功)四,配置邮件提醒支持1,安装Perl模块Module::Build#wget,安装Perl模块Authen::SASL#wget,安装Perl模块Net::SMTP_auth#wget,安装Perl模块SVN::Notify#wget,启动邮件服务器#servicesendmailrestartShuttingdownsendmail:[FAILED]Startingsendmail:[OK]Startingsm-client:[OK]6,配置自动发邮件脚本修改post-commit脚本,以支持邮件通知功能.#cd/home/svn/project/hooks/#vimpost-commit内容如下:#!/bin/shREPOS=$1REV=$2/usr/bin/svnnotify--repos-path$1--revision$2--tocaodaijun@pica.com--fromcaodaijun@feinno.com--handlerHTML::ColorDiff--with-diff--smtplocalhost--smtp-userroot--smtp-pass5201314318-cUTF-8-gzh_CN-oraw--svnlook/usr/bin/svnlook--subject-prefix'[SVNUpdate]'(to参数代表接收邮件的地址,可以有多个,当你有多个老大的时候,这就很重要了,:)。from参数是虚拟的,代表你的发送地址,一般情况下,这个参数不重要,但如果接收者的邮件服务器有反垃圾邮件的功能,需要判定源地址的话,这个参数是否合法就显得很重要了)再给该脚本添加可执行权限#chmod+xpost-commit7,再次提交时,就会给指定邮件地址发信了。如下图所示:五,其它常用配置1,强制写log脚本配置pre-commit文件,要求用户每次更新文件都必须写log.#cd/home/svn/project/hooks/#vimpre-commit文件内容如下:#!/bin/shREPOS=$1TXN=$2SVNLOOK=/usr/bin/svnlookLOGMSG=`$SVNLOOKlog-t$TXN$REPOS|grep[a-zA-Z0-9]|wc-c`if[$LOGMSG-lt5(要求的log长度,依实际需要修改)];thenecho-e\nEmptylogmessagenotallowed.Commitaborted!1&2exit1fi配置完成后,给本件加上可执行权限。再提交代码时,就必须按要求写注释了,:)2,可修改log脚本配置pre-revprop-change文件,此文件在showlog中修改log时会运行,得到修改的权限,否则会报错:DAVrequestfailed;it'spossiblethatth
本文标题:linux下搭建SVN服务器完全手册
链接地址:https://www.777doc.com/doc-1579601 .html