SVN服務的搭建和配置

先對svn(subversion)做個簡單的介紹:

運行方式

獨立服務器(例如:svn://xxx.com/xxx)

藉助apache (例如:http://svn.xxx.com/xxx)

數據存儲

svn存儲版本數據也有2種方式:BDB(一種事務安全型表類型)FSFS(一種不需要數據庫的存儲系統)。因爲BDB方式在服務器中斷時,有可能鎖住數據,所以還是FSFS方式更安全一點

更詳細的介紹(工作原理等)請點擊http://baike.baidu.com/view/183128.htm

我採用的是獨立服務器的搭建,步驟如下:

環境:centos5.6系統

1.下載subversion -1.6.21.tar.gzsubversion-deps-1.6.21.tar.gz,要是相同的版本,否則安裝過程中會報錯(下載的軟件都在/root/soft目錄下)

[root@server ~]# cd/root/soft
[root@server soft]# ls
[root@server soft]# tar xfvz subversion-1.6.21.tar.gz
[root@server soft]# tar xfvz subversion-deps-1.6.21.tar.gz
[root@server soft]# cd subversion-1.6.21
[root@server subversion-1.6.21]#


2.編譯svn

首先檢測系統有沒有安裝SSL

[[email protected]]# find / -name opensslv.h
[root@server subversion-1.6.21]#
找不到,就執行如下命令進行安裝:(安裝過程中若提示少依賴包,就使用yum安裝或下載安裝)

[[email protected]]# yum install openssl
[root@server subversion-1.6.21]# yum install openssl-devel
安裝之後用find / -name opensslv.h命令找到opensslv.h所在的目錄,即下列--with-openssl=後面的路徑,編譯:
[root@server subversion-1.6.21]# find / -name opensslv.h
/usr/include/openssl/opensslv.h

/root/soft/mysql-5.5.24/extra/yassl/include/openssl/opensslv.h
[root@server subversion-1.6.21]# ./configure --prefix=/usr/local/svn --with-openssl=/usr/include/openssl--without-berkeley-db
注:以svnserve方式運行,不加apache編譯參數。以fsfs格式存儲版本庫,不編譯berkeley-db
此時編譯報如下錯誤:
configure: WARNING: unrecognized options: --with-openssl
configure: Configuring Subversion 1.6.6
configure: creating config.nice
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/usr/local/src/subversion-1.6.6':
configure: error: no acceptable Ccompiler found in $PATH
See `config.log' for more details
.
說明沒有安裝gcc相關庫,使用如下命令安裝gcc後再編譯:
[root@server subversion-1.6.21]# yum -y install gcc
[root@server subversion-1.6.21]# ./configure --prefix=/usr/local/svn--with-openssl=/usr/include/openssl --without-berkeley-db
最後出現下面WARNING,直接忽略即可,因爲不使用BDB存儲。configure: WARNING: we have configured without BDB filesystem support
You don't seem to have Berkeley DB version 4.0.14 or newer
installed and linked to APR-UTIL. We have created Makefiles which
will build without the Berkeley DB back-end; your repositories will
use FSFS as the default back-end. You can find the latest version of
Berkeley DB here:
http://www.sleepycat.com/download/index.shtml


3.安裝SVN
爲避免出現以下錯誤
error while loading shared libraries: libiconv.so.2:cannot open shared object file: No such file or directory
先執行以下操作:
1)
、編輯/etc/ld.so.conf文件,添加下面一行:
/usr/local/lib
2)
、保存後運行ldconfig
/sbin/ldconfig

注:ld.so.confldconfig用於維護系統動態鏈接庫。
安裝
[root@server subversion-1.6.21]# make && make install

安裝完成後執行以下命令測試:

[[email protected]]# /usr/local/svn/bin/svnserve --version

svnserve, version1.6.21 (r1462351)

compiled Jun9 2013, 14:25:58

Copyright (C)2000-2009 CollabNet.

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

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

The followingrepository back-end (FS) modules are available:

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

爲了方便下操作,下面將SVNBIN添加到PATH,編輯/etc/profile,添加:
PATH=/usr/local/svn/bin:$PATH
保存後,使其立即生效:
source /etc/profile


4.配置SVN
建立版本庫目錄,可建多個:
[root@server ~]# mkdir -p /home/svndata/test #
建立版本庫
[root@server ~]# /usr/local/svn/bin/svnadmin create /home/svndata/test #
修改版本庫配置文件
編輯/home/svndata/test/conf/svnserve.conf,內容修改爲:(注意:前面的註釋符號和空格都要去掉,不然在連接時無法識別會報錯
[general]
anon-access = none
auth-access = write
password-db = /usr/local/svn/conf/passwd.conf
authz-db = /usr/local/svn/conf/authz.conf
realm = test
注意:對用戶配置文件的修改立即生效,不必重啓svn
/usr/local/svn/下面新建conf目錄,並在/usr/local/svn/conf內新建passwd.confauthz.conf文件:
mkdir conf
cd conf/
touch passwd.conf
touch authz.conf

添加用戶及密碼:

[root@server ~]#useradd user
[root@server ~]# passwd user

編輯/usr/local/svn/conf/passwd.conf,添加如下代碼並保存

[users]

user = pwd123!@#

配置svn用戶訪問權限,編輯usr/local/svn/conf/authz.conf,添加如下代碼並保存:

[groups]

admin=user

[/]@admin = rw

[test:/]

@admin = rw

注意:
*
權限配置文件中出現的用戶名必須已在用戶配置文件中定義。
*
對權限配置文件的修改立即生效,不必重啓svn
用戶組格式:
[groups]
= ,
其中,1個用戶組可以包含1個或多個用戶,用戶間以逗號分隔。
版本庫目錄格式:
[<
版本庫>:/項目/目錄]
@<
用戶組名> = <權限>
<
用戶名> = <權限>
其中,方框號內部分可以有多種寫法:
[/],
表示根目錄及以下,根目錄是svnserve啓動時指定的,我們指定爲/home/svndata[/]就是表示對全部版本庫設置權限。
[repos:/]
表示對版本庫repos設置權限;
[repos:/abc]
表示對版本庫repos中的abc項目設置權限;
[repos:/abc/aaa]
表示對版本庫repos中的abc項目的aaa目錄設置權限;
權限主體可以是用戶組、用戶或*,用戶組在前面加@*表示全部用戶。
權限可以是wrwr和空,空表示沒有任何權限。


5.啓動svn
建立啓動svn的用戶:

[root@server ~]#useradd svn
[root@server ~]# passwd svn
允許用戶svn訪問版本庫:

[root@server ~]#chown -R svn:svn /home/svndata
啓動svn[root@server ~]# su - svn -c "svnserve -d --listen-port 9999 -r /home/svndata"
其中:
su - svn
:表示以用戶svn的身份啓動svn
-d
:表示以daemon方式(後臺運行)運行;
--listen-port 9999
:表示使用9999端口,可以換成你需要的端口。但注意,使用1024以下的端口需要root權限;
-r /home/svndata
:指定根目錄是/home/svndata

編輯/etc/rc.d/rc.local文件,加入如下啓動命令:/usr/local/svn/bin/svnserve -d --listen-port9999 -r /home/svndata
如果想停止svn,則使用如下命令:
killall svnserve

查看是否啓動:

[root@server~]#ps –ef| grep svn


6.連接SVN
安裝TortoiseSVN,重啓系統。

在資源管理器中空白處右鍵會出現SVNCheckout,則證明安裝成功了

啓動TortoiseSVN(右擊選擇SVN Checkout)並在地址欄中輸入svn://ip:9999/test
根據提示輸入用戶名與密碼後就可以

如果連接遇到以下報錯:

Error:Authorization failed

則可能是passwd.conf或者authz.conf配置文件導致的權限問題

如果還有其他連接報錯,請檢查/home/svndata/test/conf下的svnserve.conf文件中在修改時前面的#或者空格是否刪除


7.svn客戶端和服務器端文件的導入導出

在通過客戶端連接時默認創建了個本地存儲目錄(E:/test)

[root@server~]#svn list file:///home/svndata/test //列出版本庫中的文件列表

[root@server~]#svn checkout file:///home/svndata/test//將版本庫中的文件拷貝到本地

默認會在服務器的根下創建test目錄,裏面存放了本機的文件

把文件上傳到SVN版本庫後,上傳的文件不再以文件原來的格式存儲,而是被svn以它自定義的格式壓縮成版本庫數據,存放在版本庫中(/home/svndata/test/db/revs中)。


Svn的命令使用大全詳情參考http://www.jb51.net/os/RedHat/2461.html



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章