天天看點

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

繼續閱讀