- 浏览: 942501 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (385)
- 搜索引擎学习 (62)
- 算法 (1)
- 数据库 (15)
- web开发 (38)
- solr开发 (17)
- nutch 1.2 系统学习 (8)
- cms (1)
- 系统架构 (11)
- linux 与 unix 编程 (16)
- android (15)
- maven (1)
- 关注物流 (1)
- 网址收集 (1)
- 分布式,集群 (1)
- mysql (5)
- apache (1)
- 资料文档备份 (7)
- 上班有感 (0)
- 工作流 (15)
- javascript (1)
- weblogic (1)
- eclipse 集成 (1)
- JMS (7)
- Hibernate (1)
- 性能测试 (1)
- spring (6)
- 缓存cache (1)
- mongodb (2)
- webservice (1)
- HTML5 COCOS2D-HTML5 (1)
- BrowserQuest (2)
最新评论
-
avi9111:
内陷到android, ios, winphone里面也是随便 ...
【HTML5游戏开发】二次开发 BrowserQuest 第一集 -
avi9111:
呵呵,做不下去了吧,没有第二集了吧,游戏是个深坑,谨慎进入,其 ...
【HTML5游戏开发】二次开发 BrowserQuest 第一集 -
excaliburace:
方案3亲测完全可用,顺便解决了我其他方面的一些疑问,非常感谢
spring security 2添加用户验证码 -
yuanliangding:
Spring太强大了。
Spring Data JPA 简单介绍 -
小高你好:
什么是hibernate懒加载?什么时候用懒加载?为什么要用懒加载?
今天给开发的同事搭建一个公网的SVN Server,google 一下,发现下面这篇最详细,就记录下来,重新排版一下。顺便根据自己的使用经验,补充了几个细节和总结。本文配置是基于CentOS 5.x的,但一样适用于其他Linux 发行版!
SVN简介和工作原理
subversion(简称svn)是近几年崛起的版本管理软件,是cvs的接班人,目前绝大多数开源软件都使用svn作为代码版本管理软件。Subversion支持linux和windows ,但较多安装在linux下。
svn服务器有两种运行方式:独立服务器和借助于apache
。 svn://或http://
svn客户端tortoisesvn
svn
的基本工作原理:
在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序。有源代码库管理员统一管理这些源程序。每个用户在使用源代码库之前,首先要把源代码
库里德项目文件下载到本地,然后开发人员可以在本地修改,左后用svn命令进行提交,游源代码库统一管理修改。
版本控制解决了:
*代码管理混乱
*解决代码冲突困难
*在代码整合期间引发bug
*无法对代码的拥有者进行权限控制
*项目不同版本的发布困难
SVN工作原理示意图:
subversion目录说明:
*dav目录:是提供apache与mod_dav_svn使用的目录,让他们存储内部数据
*db目录:就是所有版本控制的数据存放文件
*hooks目录:放置hook脚本文件的目录
*locks目录:用来放置subversion见艰苦锁定数据的目录,用来追踪存取文件库的客户端
*format文件:是一个文本文件,里面只放了一个整数。表示当前文件库配置的版本号
*conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)
SVN Server详细配置手册
系统环境
CentOS 5.8 最小化安装(关闭iptables和selinux) + ssh + yum
一,安装必须的软件包.yum install subversion mysql
-server httpd mod_dav_svn mod_perl sendmail wget gcc-c++ make unzip perl* ntsysv vim-enhanced
说明:
subversion (SVN服务器)
mysql-server (用于codestriker)
httpd mod_dav_svn mod_perl (用于支持WEB方式管理SVN服务器)
sendmail (用于配置用户提交代码后发邮件提醒)
wget gcc-c++ make unzip perl* (必备软件包)
ntsysv vim-enhanced (可选)
二,基本的SVN服务器配置
1,新建一个目录用于存储SVN所有文件
# mkdir /home/svn
2,新建一个版本仓库
# svnadmin create /home/svn/project
3,初始化版本仓库中的目录
# mkdir project project/server project/client project/test (建立临时目录)
# svn import project/ file:///home/svn/project -m “初始化SVN目录”
# rm -rf project (删除临时建立的目录)
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 = server1,server2,server3
project_c = client1,client2,client3
project_t = test1,test1,test1
[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 = r
@project_c = r
@project_t = r
* =
说明:以上信息表示,只有project_p用户组有根目录的读写权。r表示对该目录有读权限,w表示对该目录有写权限,rw表示对该目录有读写权限。最后一行的* =表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。这个很重要,一定要加上!
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
注意:如果修改了svn配置,需要重启svn服务,步骤如下:
# ps -aux|grep svnserve
# kill -9 ID号
# svnserve -d -r /home/svn
8,测试服务器
# svn co svn://192.168.60.10/project
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Password for 'root':
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username: server_group
Password for 'server_group':
svn: Authorization failed ( server_group没用根目录的访问权 )
# svn co svn://192.168.60.10/project
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Password for ‘root’:
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username: pm
Password for ‘pm’:
A project/test
A project/server
A project/client
Checked out revision 1. ( 测试提取成功 )
# cd project/server
# vim main.c
# svn add main.c
# svn commit main.c -m “测试一下我的C程序,看什么看,不行啊??”
Adding main.c
Transmitting file data .
Committed revision 2. ( 测试提交成功 )
三,配置SVN服务器的HTTP支持
1,转换SVN服务器的密码
由于SVN服务器的密码是明文的,HTTP服务器不与支持,所以需要转换成HTTP支持的格式。我写了一个Perl脚本完成这个工作.
脚本内容如下:
# cd /home/svn/project/conf/
# vim PtoWP.pl
#!/usr/bin/perl # write by huabo, 2009-11-20 use warnings; use strict; #open the svn passwd file open (FILE, "passwd") or die ("Cannot open the passwd file!!!n"); #clear the apache passwd file open (OUT_FILE, ">webpasswd") or die ("Cannot open the webpasswd file!!!n"); close (OUT_FILE); #begin foreach (<FILE>) { if($_ =~ m/^[^#].*=/) { $_ =~ s/=//; `htpasswd -b webpasswd $_`; } }
# chmod +x PtoWP.pl
# ./PtoWP.pl
Adding password for user pm
Adding password for user server_group
Adding password for user client_group
Adding password for user test_group
现在目录下会多一个webpasswd文件。
2,修改httpd.conf,添加关于SVN服务器的内容
编辑/etc/httpd/conf/httpd.conf,在最后添加如下信息:
<Location /project>
DAV svn
SVNPath /home/svn/project/
AuthType Basic
AuthName "svn for project"
AuthUserFile /home/svn/project/conf/webpasswd
AuthzSVNAccessFile /home/svn/project/conf/authz
Satisfy all
Require valid-user
</Location>
3,修改svn目录的属主为apache帐号:chown -R apache.apache /home/svn/project/
(注意:原文少了这一步,会出权限问题。
)
4,重启Web服务器:
# /etc/init.d/httpd restart
Stopping httpd: [FAILED]
Starting httpd: [ OK ]
5,用浏览器访问http://192.168.60.10/project/server/测试
测试结果如下图所示:
( 测试成功 )
四,配置邮件提醒支持
1,安装Perl模块Module::Build
# wget http://search.cpan.org/CPAN/authors/id/D/DA/DAGOLDEN/Module-Build-0.36_11.tar.gz
# tar xvf Module-Build-0.36_11.tar.gz
# cd Module-Build-0.36_11
# perl Build.PL
# ./Build
# ./Build test
# ./Build install
# cd ..
2,安装Perl模块Authen::SASL
# wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/Authen-SASL-2.15.tar.gz
# tar xvf Authen-SASL-2.15.tar.gz
# cd Authen-SASL-2.15
# perl Makefile.PL
# make test
# make install
# cd ..
3,安装Perl模块Net::SMTP_auth
# wget http://search.cpan.org/CPAN/authors/id/A/AP/APLEINER/Net-SMTP_auth-0.08.tar.gz
# tar xvf Net-SMTP_auth-0.08.tar.gz
# cd Net-SMTP_auth-0.08
# perl Makefile.PL
# make test
# make install
# cd ..
4,安装Perl模块SVN::Notify
# wget http://search.cpan.org/CPAN/authors/id/D/DW/DWHEELER/SVN-Notify-2.80.tar.gz
# tar xvf SVN-Notify-2.80.tar.gz
# cd SVN-Notify-2.80
# perl Build.PL
# ./Build
# ./Build test
# ./Build install
# cd ..
5,启动邮件服务器
# service sendmail restart
Shutting down sendmail: [FAILED]
Starting sendmail: [ OK ]
Starting sm-client: [ OK ]
6,配置自动发邮件脚本
修改post-commit脚本,以支持邮件通知功能.
# cd /home/svn/project/hooks/
# vim post-commit
内容如下:
#!/bin/sh
REPOS="$1"
REV="$2"
/usr/bin/svnnotify –repos-path “$1″ –revision “$2″ –to caodaijun@pica.com –from caodaijun@feinno.com –handler “HTML::ColorDiff” –with-diff –smtp localhost –smtp-user root –smtp-pass 5201314318 -c “UTF-8″ -g zh_CN -o raw –svnlook /usr/bin/svnlook –subject-prefix ‘[SVN Update]‘
(to参数代表接收邮件的地址,可以有多个,当你有多个老大的时候,这就很重要了,:)。from参数是虚拟的,代表你的发送地址,一般情况下,这个参数 不重要,但如果接收者的邮件服务器有反垃圾邮件的功能,需要判定源地址的话,这个参数是否合法就显得很重要了)
再给该脚本添加可执行权限
# chmod +x post-commit
7,再次提交时,就会给指定邮件地址发信了。
如下图所示:
五,其它常用配置
1,强制写log脚本
配置pre-commit文件,要求用户每次更新文件都必须写log.
# cd /home/svn/project/hooks/
# vim pre-commit
文件内容如下:
#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 5(要求的log长度,依实际需要修改) ];
then
echo -e "nEmpty log message not allowed. Commit aborted!" 1>&2
exit 1
fi
配置完成后,给本件加上可执行权限。再提交代码时,就必须按要求写注释了,:)
2,可修改log脚本
配
置pre-revprop-change文件,此文件在show log中修改log时会运行,得到修改的权限,否则会报错:DAV request
failed; it’s possible that the repository’s pre-revprop-change hook
either failed or is non-existent. At least one property change failed;
repository is unchanged
# cd /home/svn/project/hooks/
# vim pre-revprop-change
文件内容如下:
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
if ["$PROPNAME" = "svn:log"];then exit 0;fi
exit 1
配置完后加可执行权限升效。
六,备份管理
svn服务器的定期备份是很重要的,最简单的方式是定时备份仓库目录。
1,新建备份目录
# mkdir /opt/project_backup
2,编写备份脚本
# cd /home/svn/
# vim project_backup.sh
内容如下:
#!/bin/bash
#write by huabo, 2009-11-20
cd /home/svn
now=`/bin/date +%Y%m%d`
/bin/tar
czvf “project_backup_$now.tar.gz” project/ && rm -rf
/opt/project_backup/* && /bin/mv project_backup_*.tar.gz
/opt/project_backup/
if [ $? == 0 ]
then
result=”OK!!”
else
result=”False!!”
fi
#send mail to administrator
/bin/mail caodaijun@pica.com -s “project_backup_$now” <<MESSAGE
Result: `/bin/echo $result`
MESSAGE
给该脚本添加可执行权限。
3,设定每天定时执行该脚本.
# crontab -e
输入如下内容:
0 23 * * * /home/svn/project_backup.sh
表示每天晚上23点运行此脚本。
经过以上三步操作,就可以自动备份SVN资料了,且不论备份是否成功,都会给用户发送邮件信息。
七,用svnstat分析SVN数据.
1,安装JAVA
svnstat是JAVA应用程序,需要先安装JAVA环境。
下载jre,URL: http://javadl.sun.com/webapps/download/AutoDL?BundleId=39484
安装:
# chmod +x jre-6u20-linux-i586-rpm.bin
# ./jre-6u20-linux-i586-rpm.bin
2,下载svnstat
# wget http://downloads.sourceforge.net
/project/svnstat/svnstat/Release-1.0/SvnStat-1.0.zip?use_mirror=jaist
# unzip SvnStat-1.0.zip
3,更新代码
# pwd
/root
# svn co svn://192.168.60.10/project
A project/test
A project/server
A project/server/main.c
A project/client
Checked out revision 5.
4,生成svnstat数据
# svn log project -v –xml –non-interactive > project.log
# cd SvnStat-1.0
# java -classpath SvnStat-all.jar de.agentlab.svnstat.SvnStat -jar SvnStat-all.jar -r /root/project.log -d /var/www/html/
5,用浏览器登录即可看到许多统计出来的图表。大致如下图所示:
八,用statsvn分析SVN数据
1,下载statsvn
# wget http://downloads.sourceforge.net/project/statsvn/statsvn/0.7.0/statsvn-0.7.0.zip?use_mirror=jaist
# unzip statsvn-0.7.0.zip
# cd statsvn-0.7.0
2,生成statsvn数据
# mkdir /var/www/html/statsvn
# java -jar statsvn.jar -verbose -output-dir /var/www/html/statsvn/ /root/project.log /root/project
3,用浏览器测测试效果如下图:
九,配置codestriker.
1.安装codestriker依赖的perl包.
# perl -MCPAN -e ‘install “Template”‘
2.下载codestriker
#
wget
http://downloads.sourceforge.net/project/codestriker/codestriker/1.9.10/codestriker-1.9.10.tar.gz?use_mirror=jaist&ts=1279246587
# mkdir /var/www/codestriker
# cd /var/www/codestriker
# tar xvf /path/codestriker-1.9.10.tar.gz
# chown -R apache.apache codestriker-1.9.10
3.配置数据库
# service mysqld restart
# mysql -uroot mysql
执行:
CREATE DATABASE
codestrikerdb CHARACTER SET utf8;
GRANT
SELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE,DROP,REFERENCES ON
codestrikerdb.* TO codestriker@localhost IDENTIFIED BY ‘cspasswd’;
FLUSH PRIVILEGES;
quit
4.配置codestriker
# cd codestriker-1.9.10/
# vim codestriker.conf
注意以下几点(详细可查看codestriker的安装文档)
a.数据库的用户名密码要配对
b.svn的数据仓库要配对,我的如下:
@valid_repositories =
(
‘svn:file:///home/svn/project’,
)
5.执行codestriker的安装脚本
# cd bin/
# ./install.pl
6.配置http支持
# vim /etc/httpd/conf/httpd.conf
在最后面加上如下内容:
Alias /codestriker/ /var/www/codestriker/codestriker-1.9.10/cgi-bin/
Alias /codestrikerhtml/ /var/www/codestriker/codestriker-1.9.10/html/
<Directory “/var/www/codestriker/codestriker-1.9.10/cgi-bin/”>
SetHandler perl-script
PerlHandler ModPerl::Registry
Options +ExecCGI
</Directory>
<Directory “/var/www/codestriker/codestriker-1.9.10/html/”>
AllowOverride None
Allow from all
</Directory>
7.重启Web服务
# service httpd restart
8.在浏览器中输入http://192.168.60.10/codestriker/codestriker.pl即可访问,如下图:
原文:http://blog.chinaunix.net/u3/94705/showart_2260521.html
参考:http://wiki.centos.org/HowTos/Subversion
发表评论
-
面试被问了:linux的shell编程中#!/bin/sh和$bash是什么意思
2013-01-27 16:14 2273#! /bin/sh 是指此脚本使用/bin/sh来解释执 ... -
vps 安装:centos+jdk+tomcat+apache+jk+mysql
2012-12-06 17:20 2165vps 安装:centos+jdk+tomcat+apache ... -
centos make命令不能用
2012-11-29 15:56 2232在centos 5下安装软件遇到的问题,google了一圈,是 ... -
【转】Vi 技巧之:快速移动
2012-07-14 10:43 9121、 按屏幕移动 (1)最常用的几个命令如下: Ct ... -
【转】Linux FTP命令详解及使用技巧
2012-07-14 10:42 1051ftp 主机名/IP /*登录ftp服务器,会提示输入用户名 ... -
【转】tar打包和解压的使用
2012-04-28 17:28 1101tar 1. 文件或目录打包: ta ... -
【转】linux yum命令详解
2011-11-23 11:10 1207yum (全 称为 Yellow do ... -
more /etc/sysconfig/network-scripts/ifcfg-eth0
2011-11-14 22:46 2145[root@localhost ~]# more /etc/s ... -
CentOS 6.0 gcc-c++ 光盘安装
2011-11-14 15:25 3336CentOS 6.0 gcc-c++ 光盘安装(进入root用 ... -
CentOS 卸载低版本apache
2011-11-02 22:34 1324卸载apache [root@server ~]# rpm ... -
虚拟机中 CentOS 网络配置图解
2011-11-02 18:38 1559网络环境:公司局域网,每个人分的“静态”ip。 宿主机i ... -
设置CentOS防火墙开放端口
2011-10-18 15:05 1132在我们使用CentOS系统的时候,CentOS防火墙有时是需要 ... -
开启linux ssh远程登录
2011-10-16 17:47 2010经常通过ssh工具连接linux进行开发操作,但真正自己弄的时 ... -
ubuntu root 默认初始密码修改
2011-07-24 21:03 1400ubuntu root 默认初始密码修改 ... -
如何编写一个shell脚本
2011-01-10 00:25 1599为什么要进行shell编程 ...
相关推荐
CentOS-Linux搭建SVN-Server配置详解
centos 7.9服务器 离线 搭建svn服务器 ,该文章适用于 开发人员 实施人员 项目经理用于项目文档管理 代码管理,而不指定如何在centos7.9环境下离线搭建svn服务器,因为大多数的网站只是介绍yum install 的方式,但是...
CentOS 7搭建SVN服务器,详细安装步骤说明及配置详细步骤说明
基于CentOS Linux搭建svn服务器在研发产品时的应用.pdf
百度云服务器centos7.3.4搭建svn服务器,过程比较简单,里面包含新增用户授权用户
centos7 svnserver 安装
把手一步步离线搭建svn服务器,centos离线搭建svn服务器,linux离线搭建svn服务器。
在centos linux环境下快速搭建SVN服务器环境的文档教程
CentOS Linux下VNC Server远程桌面配置详解
linux(centos)搭建SVN服务器(简洁到位) 清晰明了,一看就会。
linux centos操作系统下的SVN服务器安装和配置详细介绍
本文实例讲述了CentOS下搭建SVN服务器的步骤。分享给大家供大家参考,具体如下: 1.安装svn yum install -y subversion 2.验证安装是否成功 svnserve --version 3.创建svn版本库 mkdir svn svnadmin create svn...
centos 7安装svn服务器教程.docx
本文为大家分享了CentOS 7.0搭建SVN服务器的详细过程,供大家参考,具体内容如下 1. 通过yuminstall subversion来安装 2. 提示已经安装。查看svn版本 第二步: 创建svn版本库 第三步: 配置svn信息 2. 配置权限...
linux(centos)下SVN服务器如何搭建?说到SVN服务器,想必大家都知道,可以是在LINUX下如何搭建SVN服务器呢?那么今天给大家分享一下linux(centos)搭建SVN服务器的思路! 虽然在windows上搭建SVN很简单,但是效能却不...
Linux(CentOS6.2)下安装SVN服务
CentOS VNC Server远程桌面配置详解 ! !
linux(centos)下SVN服务器如何搭建?说到SVN服务器,想必大家都知道,可以是在LINUX下如何搭建SVN服务器呢?那么今天给大家分享一下linux(centos)搭建SVN服务器的思路!
断网,centos系统,版本服务器,在没有外网的centos系统中搭建svn版本服务器
rapidsvn安装所需的全部资源包,可离线安装(gtk2和openssl的rpm包只上传了centos7版本) apr-1.5.2.tar.gz apr-util-1.5.4.tar.bz2 neon-0.29.6.tar.gz(可选,neon是subversion解析web http协议的包,视subversion...