天天看點

linux(centos)搭建獨立SVN伺服器svn介紹svn安裝linux搭建獨立SVN伺服器遇到的問題:補充:配置檔案說明

svn介紹

svn伺服器有2種運作方式:

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

2. 借助apache。(例如:http://svn.xxx.com/xxx)

svn存儲版本資料也有2種方式:

1. bdb

2. fsfs。

因為bdb方式在伺服器中斷時,有可能鎖住資料,是以還是fsfs方式更安全一點,我也選擇這種方式。

svn安裝linux

安裝示範:

svn伺服器安裝作業系統: centOS

1.tar安裝包安裝

擷取svn安裝包:

# wget “http://subversion.tigris.org/downloads/subversion-1.6.6.tar.gz”
# wget “http://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.gz”      

編譯svn以root使用者登入:

# tar xfvz subversion-1.6.6.tar.gz
# tar xfvz subversion-deps-1.6.6.tar.gz
# cd subversion-1.6.6
# ./configure –prefix=/opt/svn –without-berkeley-db
# make && make install      

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

在/etc/profile最後加入 svn path 以友善操作:

# vi /etc/profile
path=$path:/opt/svn/bin
export path      
2.yum線上安裝      
sudo yum install subversion      

測試安裝是否成功:

svnserve –-version      

假如顯示如下,svn安裝成功:

svnserve, version 1.6.6 (r40053)
compiled dec 2 2009, 22:37:15
copyright (c) 2000-2009 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.
cyrus sasl authentication is available.      

svn配置建立版本庫

建立svn版本庫:

svnadmin create /opt/svndata/repos      

修改svn版本庫配置檔案版本庫:具體可以看後面補充

# vi /opt/svndata/repos/conf/svnserve.conf      

啟動svn

svnserve -d -r /opt/svndata –listen-host 127.0.0.1 –listen-port 3690

在開機時啟動SVN服務

vi /etc/rc.local

svnserve -d -r /opt/svndata

TortoiseSVN使用簡介

參見文檔:http://downloads.wuchuanjiang.com/2011-09/TortoiseSVN使用教程.doc

文檔摘要:

安裝及下載下傳client 端

1. 下載下傳Windows 端程式:http://tortoisesvn.net/downloads。一般而言,如果是32-bit的Windows XP 應該使用TortoiseSVN-1.4.x.xxxx-win32-svn-1.4.x.msi 這個檔案。如果是64-bit 的作業系統,則應該使用TortoiseSVN-1.4.x.xxxx-x64-svn-1.4.x.msi 這個檔案。

2. 執行下載下傳回來的TortoiseSVN 安裝程式,就會進行TortoiseSVN 的安裝。正确安裝後,應該進行一次的重開機,以確定TortoiseSVN 的正确無誤。

3. 安裝成功後,在檔案管理者内按下滑鼠右鍵,應該可以看到如右圖所示:

大部分的TortoiseSVN的操作都是透過檔案管理者及滑鼠右鍵就可以完成了。如果您之前使用過TortoiseCVS,應該會對這種操作方式感到十分親切。

啟動兩個svn:

svnserve -d --listen-port 3690 -r /opt/svndata1
svnserve -d --listen-port 3691 -r /opt/svndata2      

啟動與停止subversion

啟動subversion:

/usr/local/subversion/bin/svnserve -d -r /usr/local/subversion/      

-d表示以daemon方式運作(背景運作)

-r /usr/local/subversion/repository/指定根目錄是/usr/local/subversion/

停止subversion:

找到svnserve的程序号

ps -ef | grep svnserve      

再kill掉: kill “subversion的程序号”(或者kill svnserve)

客戶單連接配接位址項目目錄

當svnserve開始運作時,它将會暴露所有的Repository到網絡上。不過,當用戶端需要擷取一個Repository的内容時,需要指定Reopsitory的絕對路徑。例如:一個Repository放在檔案路徑

C:/Project Repository/Project1

那麼當用戶端通路時,需要指定絕對路徑:

svn://host/C:/Project Repository/Project1

是以,為了增加保密性,你可以使用參數-r指定需要暴露的Repository的路徑,當使用者通路時,隻需指定Repository的名稱即可。例如上面的Repository,當啟動服務時,使用如下的方法:

svnserve -d -r C:/Project Repository

那麼當用戶端通路時,則使用

svn://host/Project1

就可以擷取資料了。

搭建獨立SVN伺服器遇到的問題:

svn登陸時出現:Authorization failed

解決:1.anthz檔案配置有問題,重新配置

2.TortoiseSVN用戶端版本較老,更新版本

補充:配置檔案說明

内置的驗證和授權

當用戶端連接配接到一個svnserve程序時,下面的流程就會觸發:

1、客戶選擇一個指定的Repository;

2、服務處理Repository的配置檔案 conf/svnserve.conf檔案,并且開始執行在其中定義的所有驗證和授權政策;

3、依賴與情形和授權政策:

a)用戶端也許允許匿名通路而不需要驗證,或者

b)客戶但也許需要在任何時候被要求驗證,或者

c)假如處于”隧道模式”中,用戶端将聲明自己已經可以被外部驗證。

很顯然,如上所說,使用者檔案是一個名為svnserve.conf的,放在conf目錄下的檔案。

現在我們來看看如何配置這個檔案:

這個配置檔案放置在Repository的目錄中的conf目錄下,它有兩個節點:

[general]
[users]      

其中,[general]的配置資訊有:

anon-access = read
auth-access = write      
其中表示對于驗證有效的以及沒通過驗證的使用者可以做什麼事情。分别有read, write和none
[users]的标簽的配置内容有:      
USERNAME = PASSWORD
password-db = passwd
realm = My First Repository      
其 中表示,使用者名對應的密碼是什麼,或者指定一個存儲使用者名和密碼的檔案的相對或絕對路徑以及指定了Repository的驗證領域。如果兩個 Repository有相同的驗證領域,那麼它們應該有相同的密碼資料庫,反之亦然。預設的領域就是指向目前的Repository的路徑,與伺服器的 Repository的根目錄相關。      

svnser配置執行個體

svnserve是SVN自帶的一個輕型伺服器,用戶端通過使用以svn://或svn+ssh://為字首的URL來通路svnserve伺服器,實作遠端通路SVN版本庫。 svnserve可以通過配置檔案來設定使用者和密碼,以及按路徑控制版本庫通路權限。本文詳細分析了svnserve配置檔案格式,并說明如何使用配置檔案控制版本庫通路權限。 1) svnserve配置檔案概述 svnserve配置檔案通常由以下3個文本檔案組成: svn服務配置檔案,該檔案版本庫目錄的conf目錄下,檔案名為svnserve.conf。 使用者名密碼檔案,該檔案名在檔案svnserve.conf中指定,預設為同目錄下的passwd。 權限配置檔案,該檔案名也在檔案svnserve.conf中指定,預設為同目錄下的authz。 2) svn服務配置檔案 svn服務配置檔案為版本庫目錄中的檔案conf/svnserve.conf。該檔案僅由一個[general]配置段組成。 [general]配置段中配置行格式如下: = 配置項分為以下5項: anon-access 控制非鑒權使用者通路版本庫的權限。取值範圍為”write”、”read”和”none”。 即”write”為可讀可寫,”read”為隻讀,”none”表示無通路權限。 預設值:read auth-access 控制鑒權使用者通路版本庫的權限。取值範圍為”write”、”read”和”none”。 即”write”為可讀可寫,”read”為隻讀,”none”表示無通路權限。 預設值:write password-db 指定使用者名密碼檔案名。除非指定絕對路徑,否則檔案位置為相對conf 目錄的相對路徑。 預設值:passwd authz-db 指定權限配置檔案名,通過該檔案可以實作以路徑為基礎的通路控制。 除非指定絕對路徑,否則檔案位置為相對conf目錄的相對路徑。 預設值:authz realm 指定版本庫的認證域,即在登入時提示的認證域名稱。若兩個版本庫的 認證域相同,建議使用相同的使用者名密碼資料檔案。 預設值:一個UUID(Universal Unique IDentifier,全局唯一标示)。 【說明】版本庫認證域 在使用svn用戶端通路svnserve伺服器時,若需要使用者登入,則提示資訊如下:

[[email protected] root]# svn list svn://192.168.3.45/test
Authentication realm: 0d545a49-4038-0410-99b4-c66dc73f754e
Password for 'root':      

在上述第2行”Authentication realm: “之後顯示的字元串為認證域名稱。如果在配置檔案中為設定認證域,就會提示一個UUID,如上述所示。

如果在配置檔案中指定了如下配置項:

realm = test      

将在svn用戶端提示如下:

[[email protected] root]# svn list svn://192.168.3.45/test
Authentication realm: test
Password for 'root':      

例1:svn服務配置檔案conf/svnserve.conf的内容如下:

[general]
anon-access = none
auth-access = write
password-db = ../../conf/passwd
authz-db = ../../conf/authz
realm = test      

上述配置檔案設定非鑒權使用者無權限通路該版本庫;鑒權使用者可對版本庫進行讀寫;使用者名密碼檔案為相對版本庫conf目錄的檔案”../../conf /passwd”;權限配置檔案為相對版本庫conf目錄的檔案”../../conf/authz”;版本庫的認證域為”test”。

3) 使用者名密碼檔案

使用者名密碼檔案由svnserve.conf的配置項password-db指定,預設為conf目錄中的passwd。該檔案僅由一個[users]配置段組成。

[users]配置段的配置行格式如下:

=

注意:配置行中的密碼為未經過任何處理的明文。

例2:使用者名密碼檔案conf/passwd的内容如下:

[users]
admin = admin
thinker = 123456      

該檔案中配置了兩個使用者,使用者名分别為”admin”和”thinker”。其中”admin”使用者的密碼為”admin”;”thinker”使用者的密碼為”123456″。

4) 權限配置檔案

權限配置檔案由svnserve.conf的配置項authz-db指定,預設為conf目錄中的authz。該配置檔案由一個[groups]配置段和若幹個版本庫路徑權限段組成。

[groups]配置段中配置行格式如下:

=

使用者清單由若幹個使用者組或使用者名構成,使用者組或使用者名之間用逗号”,”分隔,引用使用者組時要使用字首”@”(如:引用使用者組”all”要使用字元串”@all”)。

版本庫路徑權限段的段名格式如下:

[:]

如版本庫abc路徑/tmp的版本庫路徑權限段的段名為”[abc:/tmp]“。

可省略段名中的版本庫名。若省略版本庫名,則該版本庫路徑權限段對所有版本庫中相同路徑的通路控制都有效。如:段名為”[/tmp]“的版本庫路徑權限段設定了所有引用該權限配置檔案的版本庫中目錄”/tmp”的通路權限。

版本庫路徑權限段中配置行格式有如下三種:

=

=

* =

其中,”*”表示任何使用者;權限的取值範圍為”、’r'和’rw’,”表示對該版本庫路徑無任何權限,’r'表示具有隻讀權限,’rw’表示有讀寫權限。

注意:每行配置隻能配置單個使用者或使用者組。

例3:權限配置檔案conf/authz的内容如下:

[groups]
g_admin = admin,thinker

[admintools:/]
@g_admin = rw
* =

[test:/home/thinker]
thinker = rw
* = r      

在 上述配置檔案中,定義了一個使用者組”g_admin”,該使用者組包含使用者”admin”和”thinker”。然後定義了2個版本庫路徑權限段。其中,版 本庫”admintools”隻有使用者組”g_admin”可讀寫,其他使用者無任何權限;版本庫”test”中路徑”/home/thinker”隻有用 戶”thinker”有讀寫權限,其他使用者隻有可讀權限。

5) 總結

在本文中,詳細介紹了svnserve程式的3個配置檔案。SVN管理者可以通過這3個配置檔案設定svnserve服務的使用者名密碼,以及對版本庫路徑的通路權限。這些配置檔案儲存後就立即生效,不需要重新開機svnserve服務。

需要強調的是本文介紹的配置檔案隻對svnserve服務有效,即用戶端通過字首為svn://或svn+ssh://的URL通路版本庫有效,而對通過字首http://、https://或file:///的URL無效。

繼續閱讀