天天看点

linux下安装subversion(不整合apache)

linux下安装subversion

测试环境是rh6.3 httpd-2.2.9.tar.gz subversion-1.6.20.tar.gz subversion-deps-1.6.20.tar.gz

目录:

一.安装subversion

二.配置subversion

三. 验证安装

附:安装过程中遇到的问题

一. 安装subversion

1.安装subversion 所需要的组件

#yum install -y libxml openssl zlib

#tar -zxvf libxml2-2.7.3.tar.gz

#cd libxml2-2.7.3

#./configure

#make

#make install

#tar -zxvf openssl-0.9.8k.tar.gz

#cd openssl-0.9.8k

# make

 #make install

#tar -jxvf zlib-1.2.3.tar.bz2

#cd zlib-1.2.3

2. 下载subversion-1.6.20.

编译:

以root用户登录。

subversion-1.6.20.tar.gz

subversion-deps-1.6.20.tar.gz

#tar –jxvf subversion-1.6.20.tar.gz

#tar –jxvf subversion-deps-1.6.20.tar.gz

这两个自动解压成一个包 subversion-1.6.20.

subversion-deps包有四个目录zlib apr apr-util neon这四个目录都是依赖包,编译subversion所必须的代码.

#cd subversion-1.6.20.

3. 安装

#./configure --prefix=/opt/svn --without-berkeley-db --with-zlib=/usr/share/doc/zlib-1.2.3/

我的zlib为yum安装,所以目录是这个,如果你也用yum安装,查找安装位置可用rpm -qa|grep zlib,找到安装包的名称,rpm -ql 安装包名来查找。

(注:以svnserve方式运行,不加apache编译参数。以fsfs格式存储版本库,不编译berkeley-db)

#make clean

#make && make install

如果报错如下:  

configure: error: –with-zlib requires an argument. 

安装zlib

4.测试:

#svnserve --version

如果显示如下,安装成功:

svnserve, version 1.6.20 (r1426281)

   compiled Feb  2 2013, 10:32:36

Copyright (C) 2000-2009 CollabNet.

Subversion is open source software, see http://subversion.apache.org/

This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository back-end (FS) modules are available:

* fs_fs : Module for working with a plain file (FSFS) repository.

二. 配置subversion

建立版本库目录,可建多个:

#mkdir -p /opt/svndata/repos1  项目1

#mkdir -p /opt/svndata/repos2  项目2

建立版本库

#svnadmin create /opt/svndata/repos1

#svnadmin create /opt/svndata/repos2

修改版本库配置文件:

版本库1:

#vi /opt/svndata/repos1/conf/svnserve.conf

内容修改为:

[general]

anon-access = none

auth-access = write

password-db = /opt/svn/conf/pwd.conf

authz-db = /opt/svn/conf/authz.conf

realm = repos1

版本库2:

#vi /opt/svndata/repos2/conf/svnserve.conf

realm = repos2

命令前面不能有空格,否则用客户端连接时报错。

即除realm = repos2外,其他与版本库1配置文件完全相同。如果有更多的版本库,依此类推。

配置允许访问的用户:

#vi /opt/svn/conf/pwd.conf

为了简化配置,2个版本库共用1个用户配置文件。如有必要,也可以分开。

注意:对用户配置文件的修改立即生效,不必重启svn。

文件格式如下:

[users]

=

其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。示例:

laya = 123

test = 456

配置用户访问权限:

#vi /opt/svn/conf/authz.conf

为了简化配置,3个版本库共用1个权限配置文件/opt/svn/conf/pwd.conf。如有必要,也可以分开。文件中定义用户组和版本库目录权限。

注意:

* 权限配置文件中出现的用户名必须已在用户配置文件中定义。

* 对权限配置文件的修改立即生效,不必重启svn。

用户组格式:

[groups]

= ,

其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。

版本库目录格式:

[:/项目/目录]

@ =

其中,方框号内部分可以有多种写法:

/,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/opt/svndata。这样,/就是表示对全部版本库设置权限。

repos1:/,表示对版本库1设置权限

repos2:/abc, ,表示对版本库2中的abc项目设置权限

repos2:/abc/aaa, ,表示对版本库2中的abc项目的aaa目录设置权限

权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。

示例:

admin = laya,mike,john

###group define

[/]

@admin = rw

* = r

[repos1]

test = rw

[repos2]

test =

删除无用文件:

rm /opt/svndata/repos1/conf/authz

rm /opt/svndata/repos1/conf/passwd

rm /opt/svndata/repos2/conf/authz

rm /opt/svndata/repos2/conf/passwd

建立启动svn的用户:

useradd svn

passwd svn

根据提示为用户svn设置密码:123456

允许用户svn访问版本库:

chown -R svn:svn /opt/svndata

启动svn:

svnserve -d -r /opt/svndata

svnserve -d --listen-port 3691 -r /opt/svndata”

其中:

-d表示以daemon方式(后台运行)运行

--listen-port 3691表示使用3691端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root权限

-r /opt/svndata指定根目录是/opt/svndata

检查:

ps -ef|grep svnserve

如果显示如下,即为启动成功:

svn       3030     1  0 15:22 ?        00:00:00 svnserve -d --listen-port 3691 -r /opt/svndata/

--------------------------------------------------------------------------------------------

几点需要注意的问题:

1.服务器已经显示启动了svn,但是客户端访问不了

问题可能是linux的防火墙导致,查看iptables的配置,开放svn的服务器端口。

2.若指定了端口号,访问时要更改端口号才能访问。svn://192.168.1.37:3691/test

备份svn的脚本

#!/bin/sh

# subversion data backup script

DATE=`date +%Y%m%d`

BakDir=/opt/backup

#SvnDir=/opt/svn

cd /opt

tar czvf $BakDir/25svnadmin$DATE.tar.gz svnadmin

########## End ############

删除svn的备份

#!/bin/bash

#删除svn的备份

#/opt/backup

for file in /opt/backup

do

#echo $file

find $file -mtime +90 -exec rm -rf {}  \;

done

exit

继续阅读