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號
