svn服務配置和日常維護命令


Subversion獨立服務和與apache整合服務。

一 、Svn獨立服務安裝

操作系統: Redhat Linux AS3  AS 4   ContOS AS 4

安裝包獲取:

下載[url]http://subversion.tigris.org/downloads/subversion- 1.4.0.tar.gz[/url]和[url]http://subversion.tigris.org/downloads /subversion-deps-1.4.0.tar.gz[/url]。

編譯:

以root用戶登錄。

將subversion-1.4.0.tar.gz和subversion-deps-1.4.0.tar.gz傳到服務器。

tar xfvz subversion-1.4.0.tar.gz

tar xfvz subversion-deps-1.4.0.tar.gz

subversion-deps包有四個目錄zlib apr apr-util neon這四個目錄都是依賴包,編譯subversion所必須的代碼

cd subversion-1.4.0

./configure –prefix=/opt/svn –without-berkeley-db –with-zlib

(注:以svnserve方式運行,不加apache編譯參數。以fsfs格式存儲版本庫,不編譯berkeley-db)

make clean

make

make install

vi /etc/profile,在/etc/profile最后加入:

PATH=$PATH:/opt/svn/bin

export PATH

測試:

svnserve –version

如果顯示如下,安裝成功:

svnserve, version 1.4.0 (r21228)

compiled Oct 12 2006, 10:18:56

Copyright (C) 2000-2006 CollabNet.

Subversion is open source software, see [url]http://subversion.tigris.org/[/url]

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

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

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

2. svn配置

建立版本庫目錄,可建多個:

mkdir -p /opt/svndata/repos1

mkdir -p /opt/svndata/repos2

建立版本庫:

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

內容修改為:

[general]

anon-access = none

auth-access = write

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

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

realm = repos2

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

配置允許訪問的用戶:

vi /opt/svn/conf/pwd.conf

為了簡化配置,2個版本庫共用1個用戶配置文件。如有必要,也可以分開。

注意:對用戶配置文件的修改立即生效,不必重啟svn。

文件格式如下:

[users]

<用戶1> = <密碼1>

<用戶2> = <密碼2>

其中,[users]是必須的。下面列出要訪問svn的用戶,每個用戶一行。示例:

[users]

alan = password

king = hello

配置用戶訪問權限:

vi /opt/svn/conf/authz.conf

為了簡化配置,3個版本庫共用1個權限配置文件/opt/svn/conf/pwd.conf。如有必要,也可以分開。文件中定義用戶組和版本庫目錄權限。

注意:

* 權限配置文件中出現的用戶名必須已在用戶配置文件中定義。

* 對權限配置文件的修改立即生效,不必重啟svn。

用戶組格式:

[groups]​

<用戶組名> = <用戶1>,<用戶2>

其中,1個用戶組可以包含1個或多個用戶,用戶間以逗號分隔。

版本庫目錄格式:

[<版本庫>:/項目/目錄]

@<用戶組名> = <權限>

<用戶名> = <權限>

其中,方框號內部分可以有多種寫法:

/,表示根目錄及以下。根目錄是svnserve啟動時指定的,我們指定為/opt/svndata。這樣,/就是表示對全部版本庫設置權限。

repos1:/,表示對版本庫1設置權限

repos2:/abc, ,表示對版本庫2中的abc項目設置權限

repos2:/abc/aaa, ,表示對版本庫2中的abc項目的aaa目錄設置權限

權限主體可以是用戶組、用戶或*,用戶組在前面加@,*表示全部用戶。權限可以是w、r、wr和空,空表示沒有任何權限。

示例:

[groups]

admin = alan

[/]

@admin = rw

[repos1:/abc/aaa]

king = rw

[repos2:/pass]

king =

刪除無用文件:

rm /opt/svndata/repos1/conf/authz

rm /opt/svndata/repos1/conf/passwd

rm /opt/svndata/repos2/conf/authz

rm /opt/svndata/repos2/conf/passwd

3. 啟動svn

建立啟動svn的用戶:

useradd svn

passwd svn

根據提示為用戶svn設置密碼

允許用戶svn訪問版本庫:
​chown -R svn:svn /opt/svndata

chown -R svn:svn /opt/data​

啟動svn:

su - svn -c “svnserve -d –listen-port 9999 -r /opt/svndata”

其中:

su - svn表示以用戶svn的身份啟動svn

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

–listen-port 9999表示使用9999端口,可以換成你需要的端口。但注意,使用1024以下的端口需要root權限

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

檢查:

ps -ef|grep svnserve

如果顯示如下,即為啟動成功:

svn    6941   1 0 15:07 ?    00:00:00 svnserve -d –listen-port 9999 -r /opt/svndata

二、svn服務與apache 整合

Subversion存儲方式,一是Berkeley DB伯克利存儲方式,二是fsfs存儲方式。

兩種版本庫數據存儲對照表

特性

Berkeley DB

FSFS

對操作中斷的敏感

很敏感;系統崩潰或者權限問題會導致數據庫“塞住”,需要定期進行恢復。

不敏感

可只讀加載

不能

可以

存儲平台無關

不能

可以

可從網絡文件系統訪問

不能

可以

版本庫大小

稍大

稍小

擴展性:修訂版本樹數量

無限制

某些本地文件系統在處理單一目錄包含上千個條目時會出現問題。

擴展性:文件較多的目錄

較慢

較慢

檢出最新代碼的速度

較快

可以

大量提交的速度

較慢,但時間被分配在整個提交操作中

較快,但最后較長的延時可能會導致客戶端操作超時

組訪問權處理

對於用戶的 umask 設置十分敏感,最好只由一個用戶訪問。

對 umask 設置不敏感

功能成熟時間

2001 年

2004 年

1、安裝APR-1.2.7和APR-util-1.2.7

    下載地址:[url]http://apr.apache.org/ [/url]  

    tar zxvf  apr-1.2.7.tar.gz​

    ./configure

    make

    make install

    tar zxvf apr-util-1.2.7.tar.gz

    ./configure --with-apr=/usr/local/apr/

     make

     make install

2、編譯安裝APACHE。

    tar zxvf httpd-2.2.3.tar.gz 

  cd httpd-2.2.3

 ./configure --prefix=/opt/apache --enable-dav --enable-so --enable-maintainer-mode --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config

make

make install

3、安裝subversion-1.4.0

 tar zxvf subversion-1.4.0.tar.gz

 ./configure --with-apxs=/opt/apache/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr

問題:有關共享庫錯誤

方法:  echo "/usr/local/apr-util/lib" >> /etc/ld.so.c

    ldconfig      echo $?

make

    make install

  設置環境變量(可做可不做)

vi /etc/profile,在/etc/profile最后加入:

PATH=$PATH:/opt/svn/bin

export PATH

4、查看subversion兩個動態庫有沒有安裝成功

vi /opt/apache/conf/httpd.conf

    看到下面兩個模塊說明安裝成功​

  LoadModule dav_svn_module     modules/mod_dav_svn.so

  LoadModule authz_svn_module   modules/mod_authz_svn.so

5、配置SVN

  vi /opt/apache/conf/httpd.conf

     配置:

 

      DAV svn

  SVNParentPath /data/svn/repos //svn父目錄

  AuthType Basic //連接類型設置

AuthName "Subversion repository" //連接框提示

  AuthUserFile /data/svn/passwd //用戶配置文件

AuthzSVNAccessFile /data/svn/auth

Require valid-user //passwd所有的用戶都可以訪問

6、建立SVN存儲倉庫

   #mkdir -p /opt/svndata/repos

#svnadmin create –fs-type fsfs /opt/svndata/repos

備份以前的SVN庫

#svnadmin dump /opt/svndata/repos > /root/repos20080328

把備份出來的數據恢復到本地

#svnadmin load /opt/svndata/repos/ < /root/repos20080328

7、建立本地訪問控制文件

#/opt/apache/bin/htpasswd [-c] /opt/passwd north

//第一次設置用戶時使用-c表示新建一個用戶文件。#/opt/apache/bin/htpasswd passwd 用戶名(加入新的用戶)

8、建立本地項目控制文件

    touch /opt/svndata/auth

  文件內容為:

[groups]

[repos1:/]

#wxy = rw

north = rw

tom = rw

[repos2:/]​

repos2 = rw

9、安裝客戶端,訪問服務器

 [url]http://192.168.0.180:/svn/jishu[/url]

   注意:SVN是APACHE配置的時候加上去的。

10、到此安裝基本結束

修改一下/data/svn/repos屬性,否則會導致文件上傳失敗。

 chmod -R apache.apache repos

三、日常維護命令和參數

啟動svn服務

svnserve -d --listen-port 20000 -r /opt/svndata

創建版本庫

svnadmin create fs-type fsfs /opt/svndata/mark

查看版本庫的信息

svn list  file:///opt/svndata/mark

svn list --verbose file:///opt/svndata/mark

導入庫的目錄結構

svn import /tmp/mark/ file:///opt/svndata/mark/ --message "init" (文件夾mark下有bo)

刪除版本庫mark下文件夾bo

svn delete svn://192.168.0.180:20000/opt/svndata/mark/bo -m "delete "

//導出

$svnlook youngest oldrepo

$svnadmin dump oldrepo >; dumpfile

//還原

$svnadmin load newrepo < dumpfile

停止subversion服務

ps –aux | grep svnserve

kill -9 ID號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM