Subversion獨立服務和與apache整合服務。
一 、Svn獨立服務安裝
作業系統: Redhat Linux AS3 AS 4 ContOS AS 4
安裝包擷取:
下載http://subversion.tigris.org/downloads/subversion-1.4.0.tar.gz
和http://subversion.tigris.org/dow ... n-deps-1.4.0.tar.gz
。
編譯:
以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 http://subversion.tigris.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.
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]
=
=
其中,[users]是必須的。下面列出要訪問svn的使用者,每個使用者一行。樣本:
[users]
alan = password
king = hello
配置使用者存取權限:
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和空,空表示沒有任何許可權。
樣本:
[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
:http://apr.apache.org/
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/ ; dumpfile
//還原
$svnadmin load newrepo