linux下svn服务安装(转)

linux下svn服务安装

一.环境准备

1.linux版本为centos6.4 X64

2.软件安装

yum install subversion httpd mod_dav_svn mod_perl sendmail mailx wget gcc-c++ make unzip perl*

3.以下所有操作均在root用户下完成

二.SVN服务器配置

1.新建一个目录用于存储SVN所有文件
mkdir /home/svn

2.新建一个版本仓库
svnadmin create /home/svn/project

3.配置用户

vi /home/svn/project/conf/passwd

Shell代码  

  1. [users]
  2. admin = netqin  #用户名 = 密码
  3. user = 123456

4.配置用户访问策略

vi /home/svn/project/conf/authz

Shell代码  

  1. [groups]
  2. # harry_and_sally = harry,sally
  3. # harry_sally_and_joe = harry,sally,&joe
  4. project_a = admin  #组名 = 用户名,多个用户使用逗号分隔
  5. project_u = user
  6. [project:/]
  7. @project_a = rw  #组名 = 读写权限r,w,rw;这里配置admin有根路径的读写权限
  8. * =              #其它组没有访问权限
  9. [project:/server]
  10. @project_a = rw
  11. @project_u = rw
  12. * =

5.用户和策略配置升效

vi /home/svn/project/conf/svnserve.conf

Shell代码  

  1. [general]
  2. anon-access = none
  3. auth-access = write
  4. password-db = /home/svn/project/conf/passwd
  5. authz-db = /home/svn/project/conf/authz

6.启动服务器

svnserve -d -r /home/svn

7.开启防火墙

vi /etc/sysconfig/iptables

Java代码  

  1. #svnserver
  2. -A INPUT -p tcp -m state --state NEW -m tcp --dport 3690 -j ACCEPT

service iptables restart

8.测试服务器

使用svn客户端工具,或者找一台安装了subversion的linux服务器进行测试
svn co svn://192.168.xx.xx/project

如果能够正常checkout,则说明svn的配置是正确的。

三.配置邮件提醒支持

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

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

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

4,安装Perl模块SVN::Notify
wget http://search.cpan.org/CPAN/authors/id/D/DW/DWHEELER/SVN-Notify-2.80.tar.gz
ar xvf SVN-Notify-2.80.tar.gz 
cd SVN-Notify-2.80
perl Build.PL 
./Build 
./Build test
./Build install

5,启动邮件服务器
service sendmail restart
              
6,配置自动发邮件脚本
cd /home/svn/project/hooks/

mv post-commit.tmpl post-commit
vi post-commit

Shell代码  

  1. #!/bin/sh
  2. REPOS="$1"
  3. REV="$2"
  4. /usr/local/bin/svnnotify --repos-path "$1" --revision "$2" --to [email protected],[email protected],[email protected] --from [email protected] --handler "HTML::ColorDiff"  --with-diff --smtp localhost --smtp-user root --smtp-pass password -c "UTF-8" -g zh_CN -o raw --svnlook /usr/bin/svnlook --subject-prefix ‘[SVN Update]‘

说明:--to:接收人列表,多个以逗号分隔;--from:发件人,随便起个名字;--smtp-user root --smtp-pass password  服务器的用户和密码;

chmod +x post-commit

ok,此时提交svn时就会收到邮件了。

四.提交svn时要求填写注释

cd /home/svn/project/hooks/

mv pre-commit.tmpl pre-commit

vi pre-commit

Shell代码  

  1. #!/bin/sh
  2. REPOS="$1"
  3. TXN="$2"
  4. SVNLOOK=/usr/bin/svnlook
  5. LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
  6. if [ "$LOGMSG" -lt 5 ];  #要求注释长度大于5
  7. then
  8. echo -e "\nEmpty log message not allowed. Commit aborted!" 1>&2
  9. exit 1
  10. fi

chmod +x pre-commit

mv pre-revprop-change.tmpl pre-revprop-change

vi pre-revprop-change

Shell代码  

  1. REPOS="$1"
  2. REV="$2"
  3. USER="$3"
  4. PROPNAME="$4"
  5. if ["$PROPNAME" = "svn:log"];then exit 0;fi
  6. exit 1

chmod +x pre-revprop-change

ok,测试提交svn时就会要求输入注释了。

五.支持http访问

经过以上配置,svn服务基本上就算配置完成了,不过此时只能通过svn://192.168.xx.xx/project的方式访问,如果希望通过http的方式访问,则还需进行如下配置。

上面安装工具时已经安装了Apache和Perl。

1,转换SVN服务器的密码

由于SVN服务器的密码是明文的,HTTP服务器不与支持,所以需要转换成HTTP支持的格式。可以写了一个Perl脚本完成这个工作.

cd /home/svn/project/conf/

vi PtoWP.pl

Perl代码  

  1. use warnings;
  2. use strict;
  3. #open the svn passwd file
  4. open (FILE, "passwd") or die ("Cannot open the passwd file!!!\n");
  5. #clear the apache passwd file
  6. open (OUT_FILE, ">webpasswd") or die ("Cannot open the webpasswd file!!!\n");
  7. close (OUT_FILE);
  8. #begin
  9. foreach (<FILE>) {
  10. if($_ =~ m/^[^#].*=/) {
  11. $_ =~ s/=//;
  12. `htpasswd -b webpasswd $_`; #核心语句就这个,如果以后添加或者修改用户密码,可以使用 htpasswd -nb username password ,加密后的信息会被显示在屏幕上,复制内容到webpasswd文件即可。
  13. }
  14. }

perl PtoWP.pl #执行脚步后会在当前路径下生成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  #这里一定要使用webpasswd
                    AuthzSVNAccessFile /home/svn/project/conf/authz
                    Satisfy all
                    Require valid-user
                </Location>

需要加载三个模块,如果是手工编译Apache时应该加上--enable-dav

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

3,启动HTTPD服务器
service httpd restart

4,授予txn-current-lock文件777权限

原因是svn目录是使用root用户创建,而Apache可能不是root用户启动的,所以在提交svn时Apache用户没有/home/svn/project/db/txn-current-lock文件的访问权限

chmod 777 /home/svn/project/db/txn-current-lock

5,测试

使用svn客户端工具,或者找一台安装了subversion的linux服务器进行测试
svn co http://192.168.xx.xx/project

六.备份svn

写个脚步,定期备份/home/svn下的内容即可。

举例:

mkdir -p /opt/project_backup  #备份保存路径

vi /home/svn/project_backup.sh  #备份脚步

Shell代码  

  1. #!/bin/bash
  2. cd /home/svn
  3. now=`/bin/date +%Y%m%d`
  4. /bin/tar czvf "project_backup_$now.tar.gz" project/ && rm -rf /opt/project_backup/* && /bin/mv project_backup_*.tar.gz /opt/project_backup/
  5. if [ $? == 0 ]
  6. then
  7. result="OK!!"
  8. else
  9. result="False!!"
  10. fi
  11. #send mail to administrator
  12. /bin/mail  -s "project_backup_$now" [email protected]<<MESSAGE
  13. Result: `/bin/echo $result`
  14. MESSAGE

chmod +x project_backup.sh

将脚步加入定时任务

crontab -e

0 23 * * * /home/svn/project_backup.sh #每天晚上11点备份

七.将svn启动脚步加入service

vi /home/svn/svnserver

Shell代码  

  1. # vi svnserver
  2. # chmod +x svnserver
  3. #!/bin/bash
  4. case "$1" in
  5. start)
  6. svnserve -d -r /home/svn
  7. svnport=`netstat -natp | grep svnserve | awk -F: ‘{print $2}‘ | awk ‘{print $1}‘`
  8. if [ -n $svnport ] && [ $svnport -eq 3690 ]; then
  9. echo "SVN Server Already Runnning. Port:3690"
  10. else
  11. echo "SVN Server Does Not Start"
  12. fi
  13. ;;
  14. reload)
  15. svnport=`netstat -natp | grep svnserve | awk -F: ‘{print $2}‘ | awk ‘{print $1}‘`
  16. if [ -n $svnport ] && [ $svnport -eq 3690 ]; then
  17. killall svnserve && svnserve -d -r /home/svn
  18. echo "Reload OK"
  19. else
  20. echo "SVN Server Is Not Running"
  21. fi
  22. ;;
  23. stop)
  24. killall svnserve
  25. echo "SVN Server Has Been Stopped"
  26. ;;
  27. status)
  28. svnport=`netstat -natp | grep svnserve | awk -F: ‘{print $2}‘ | awk ‘{print $1}‘`
  29. pid=`ps aux | grep svnserve | grep -v "grep" | awk ‘{print $2}‘`
  30. if [ -n $svnport ] && [ $svnport -eq 3690 ]; then
  31. echo "SVN Server (pid:$pid) 正在运行..."
  32. else
  33. echo "SVN Server 停止运行..."
  34. fi
  35. ;;
  36. *)
  37. echo "$0: Usage: $0 {start|status|stop|reload}"
  38. exit 1
  39. ;;
  40. esac

mv  /home/svn/svnserver /etc/init.d

chmod +x svnserver

启动svn:service svnserver start

关闭svn:service svnserver stop

重启svn:service svnserver reload

时间: 2024-12-27 19:54:44

linux下svn服务安装(转)的相关文章

Linux 下Telnet 服务安装

Linux 下Telnet 服务安装 注:以下所有命令均在root用户下执行. 命令测试在Linxu版本6.x下完成,部分命令不适用Linux 7.0以上 1.简介 默认情况下Linux只安装了Telnet客户端,而没有安装服务端 [[email protected] ~]# rpm -qa | grep telnet telnet-0.17-48.el6.x86_64 2.安装Telnet 服务端 2.1在配置有yum情况下 yum install -y telnet* 2.2 在未配置yum

linux下svn 的安装与配置(方式 yum)

SVN的安装 #svn的下载安装命令 yun -y install subversion #检查是否安装成功 svnserve --version #如图表示安装成功(可以看到其中安装的版本号 version 1.6.11) SVN的配置 # 创建svn库的存放目录 (mkdir是linux创建目录命令) mkdir /depot/svn/svndepot # 指定svn库 (svn会在此目录下生成一些所需文件) svnadmin create /depot/svn/svndepot 生成后的目

Linux下svn的安装与部署

最近工作碰到一个问题,我和一个同伙负责开发一个管理系统,基于原来的代码上进行修改,每当他修改之后,我要再修改都要和他确定是不是最新的文件,才能进行修改.非常影响工作的效率,所以在网上找了关于svn的使用.下面开始svn的安装和部署,解决开发中代码的同步问题. 在Linux上安装很简单. 第一.先查看yum 有没有被占用,被占用就 kill 掉,再进行 yum install -y subversion [[email protected] ~]# ps aux |grep yum root   

Linux下SVN的安装

1.SVN介绍 2.安装SVN服务 3.配置SVN服务 1.SVN介绍 SVN,全称Subversion,是一款跨平台的开源的版本管理控制工具.管理着随时间改变的各种数据,这些数据存放在一个中央资料档案库(repository)中,并会备份和记录每个文件每一次的修改更新变动.故可以把任意一个时间点的档案恢复到想要的某一个旧的版本,也可以直接浏览指定文件的更新历史记录. SVN相关站点: Subversion官网:http://subversion.tigris.org/  http://subv

Linux下svn服务器端安装及配置教程

第一步,安装svn服务器端 1.直接使用yum安装,命令及截图如下 [[email protected] ~]# yum install -y subversion 2.安装成功之后,可以查看svn的版本 [[email protected] ~]# svnserve --version 3.创建svn目录,可以按照个人习惯指定目录位置 [[email protected] ~]# mkdir /usr/local/svn 4.创建svn版本库testsvn,版本库名称可以自己取 [[email

Linux下DHCP服务安装配置

简介 安装配置 简介 DHCP (Dynamic Host Configuration Protocol,动态主机管理协议)是一种基于UDP协议且仅限用于局域网的网络协议,主要用途是为局域网内部设备或网络供应商自动分配IP地址,通常会应用在大型的局域网环境中或局域网内存在比较多的移动办公设备,DHCP协议能够实现集中的管理.分配IP地址. DHCP服务程序能够使局域网内的主机自动且动态的获取IP地址.子网掩码.网关地址以及DNS服务器地址等信息,且能够有效的提升地址使用率,提高配置效率,减少管理

Linux下MongoDB服务安装

MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型.Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引. 1.下载MongoDB,

linux 下 svn的安装和使用

1.安装 sudo yum install subversion 2.使用 1)checkout mkdir test2 svn checkout url ./pathsaveto --username xxx --password xxx 2)add and commit svn add * svn commit -m "xxxx" 3)更新 svn update 4)删除 svn delete filename svn commit -m "xxxx" 5.查看

linux下nginx的安装

以Red Hat Enterprise Linux 5为例进行讲解. 相关系列: linux下jdk的安装 linux下ant的安装 linux下redis的安装 linux下svn的安装 linux下nginx的安装 linux下graphviz的安装 linux下doxygen的安装 安装nginx版本为0.8.36 一.下载nginx 下载地址:http://www.nginx.org/ 选择nginx-0.8.36 将该下载包拷贝到/usr/local/下(随意了,找个地方就好) 二.安