SVN安裝配置技術文檔


SVN安裝配置技術文檔


適合搭建subversion的人員查看。主要描述subversion定義,服務端的安裝,部署,配置和使用說明。

 

一、文檔控制

文檔版本

       
       
       

文檔名說明

 

文檔主題

描述SVN定義,安裝,部署,配置和使用說明。

外部條件

操作系統windows2003 

客戶端=Tortoise SVN 1.7.11

服務端=Visual SVN Server 1.7

 

 

操作系統CentOS 5.10

客戶端=Tortoise SVN 1.7.11

服務端=subversion 1.6.6

 

二、基本信息

2.1、SVN定義

2.1.1、SVN概念

svn(subversion)是近年來崛起的版本管理工具,是cvs的接班人。目前,絕大多數開源軟件都使用svn作爲代碼版本管理軟件。

 

svn服務器有2種運行方式:獨立服務器和藉助apache。2種方式各有利弊。

 

存儲數據:svn存儲版本數據也有2種方式:BDB和FSFS。因爲BDB方式在服務器中斷時,有可能鎖住數據,所以還是FSFS方式更安全一點。

 

2.1.1、SVN版本

達芙妮安裝Subversion版本爲 1.6.6v版本

操作系統 CentOS 5.10

 

2.1.2、SVN結構

三、Subversion安裝

2.1、Subvesion目錄

安裝目錄:/usr/local/svn/bin

版本庫目錄:/home/svndata/repos

2.2、windwos下SVN安裝

2.2.1、Visual SVN Server .1.7 安裝

1、選擇安裝路徑和數據庫路徑

2、SVN服務器名稱和端口名稱

3、身份證驗證方式(SVN 或windows)

 

安裝好以後再,Services.msc 註冊一個服務

 

再開始程序中出現 VisualSvn Server Manager

 

界面顯示

2.2.2、Tortoise SVN安裝

1、選擇安裝路徑,其他的默認安裝

2.3、CentOS5.10下SVN安裝

安裝環境

操作系統:CentOS 5.10

Subversion: subversion-1.6.6

 

2.3.1、下載源碼包

下載路徑:/usr/local/src

 

[root@server ~]# cd /usr/local/src
[root@server src]# ls
[root@server src]# wget http://subversion.tigris.org/downloads/subversion-1.6.6.tar.gz
[root@server src]# wget http://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.gz

[root@server src]# tar xfvz subversion-1.6.6.tar.gz
[root@server src]# tar xfvz subversion-deps-1.6.6.tar.gz
[root@server src]# cd subversion-1.6.6
[root@server subversion-1.6.6]#

 

2.3.2、編譯SVN

編譯路徑:/usr/local/src/subversion-1.6.6

 

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

[root@server subversion-1.6.6]# find / -name opensslv.h
[root@server subversion-1.6.6]#

找不到,就執行如下命令進行安裝:

[root@server subversion-1.6.6]# yum install openssl
[root@server subversion-1.6.6]# yum install openssl-devel
 

安裝之後用find / -name opensslv.h命令找到opensslv.h所在的目錄,即下列--with-openssl=後面的路徑,編譯:

[root@server subversion-1.6.6]# find / -name opensslv.h
/usr/include/openssl/opensslv.h

[root@server subversion-1.6.6]# ./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 C compiler found in $PATH
See `config.log' for more details.

說明沒有安裝gcc相關庫,使用如下命令安裝gcc後再編譯:

[root@server subversion-1.6.6]# yum -y install gcc
[root@server subversion-1.6.6]# ./configure

--prefix=/usr/local/svn --with-openssl=/usr/include/openssl --without-berkeley-db 

 

操作系統 apache 版本和subversion 需要apache版本不一致,我們安裝svnseve獨立服務器,無需apache

 [[email protected]]# ./configure --prefix=/usr/local/svn

--with-openssl=/usr/include/openssl --without-berkeley-db --with-apxs=no

 

最後出現下面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 

2.3.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.6]# make && make install

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

[root@server subversion-1.6.6]# /usr/local/svn/bin/svnserve --version

svnserve,版本 1.6.6 (r40053)
  
編譯於 Feb 15 201222:15:26

版權所有 (C) 2000-2009 CollabNet
Subversion
是開放源代碼軟件,請參閱http://subversion.tigris.org/站點。
此產品包含由 CollabNet(http://www.Collab.Net/)開發的軟件。

下列版本庫後端(FS) 模塊可用:

* fs_fs : 模塊與文本文件(FSFS)版本庫一起工作。

爲了方便下操作,下面將SVNBIN添加到PATH,編輯/etc/profile,添加:

PATH=/usr/local/svn/bin:$PATH

保存後,使其立即生效:

source /etc/profile

2.3.4、配置SVN


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

[root@server ~]# mkdir -p /home/svndata/repos       #建立版本庫
[root@server ~]# /usr/local/svn/bin/svnadmin create /home/svndata/repos       #修改版本庫配置文件 

編輯/home/svndata/repos/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 = repos 

注意:對用戶配置文件的修改立即生效,不必重啓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 wll
[root@server ~]# passwd wll

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

[users]
wll = 123456

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

[groups]
admin = wll
[/]
@admin = rw
# [repos:/abc/aaa]
# king = rw
# [repos:/pass]
# king =svn

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

建立啓動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

2.3.5、設置開機啓動


編輯/etc/rc.d/rc.local文件,加入如下啓動命令:

/usr/local/svn/bin/svnserve -d --listen-port 9999 -r /home/svndata

如果想停止svn,則使用如下命令:

killall svnserve

如果想將svn作爲服務,在/etc/rc.d/init.d/目錄下新建名爲svn的文件並設置權限爲755,並添加如下代碼:

#!/bin/bash
# build this file in /etc/rc.d/init.d/svn
# chmod 755 /etc/rc.d/init.d/svn
# centos
下可以用如下命令管理svn: service svn start(restart/stop)
SVN_HOME=/home/svndata
if [ ! -f "/usr/local/svn/bin/svnserve" ]
then
    echo "svnserver startup: cannot start"
    exit
fi
case "$1" in
    start)
        echo "Starting svnserve..."
        /usr/local/svn/bin/svnserve -d --listen-port 9999 -r $SVN_HOME
        echo "Finished!"
        ;;
    stop)
        echo "Stoping svnserve..."
        killall svnserve
        echo "Finished!"
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Usage: svn { start | stop | restart } "
        exit 1
esac 

2.3.6、TortoiseSVN連接SVN


安裝TortoiseSVN,重啓系統。啓動TortoiseSVN並在地址欄中輸入

svn://192.168.188.23:9999/repos

根據提示輸入用戶名與密碼後就可以

             

             

四、SVN客戶端使用

4.1、Tortoise SVN

4.1.0、導入源代碼到SVN數據庫

選擇正確的Url,就可以導入到SVN數據庫中。

 

其他的操作,請參考4.1、SVN客戶端使用

 

4.1.1、取最新代碼從SVN庫

本地新建文件夾,右擊點 SVN check out, 選擇SVNserver Url和本地目錄。

 

4.1.2、新增代碼和目錄到SVN庫

1)TortoiseSVN   ——> Add  標記要上傳的代碼

2)Commit                   提交代碼到SVN庫

 

4.1.3、更新代碼和目錄到SVN庫

1)update        標記要更新的代碼

2)commit       標記代碼更新到SVN庫

 

4.1.4、刪除代碼和目錄到SVN庫

1)TortoiseSVN   ——> Delete  標記要刪除的代碼

2)commit       標記代碼從SVN庫中刪除

 

4.1.5、複製代碼和目錄( branches /tags/release)

從Trunk 複製代碼和目錄到新的branches / tags / release

Trunk: 代碼主幹

              Branches: 代碼分支

Tags:      標記代碼完成一個關鍵階段,工作完成一個里程碑

Release:  要發行的版本

 

以branches爲例的步驟:

1)、新建branches分支:從本地Trunk  Tortoise SVN——>branches /tags

2)、將分支更新到本地:在本地目錄Commit

3)、本地分支代碼更新到 服務Trunk上:

3.1)update/ commit; 3.2)TortoiseSVN  ——> Merge

 

提示:本地和SVN服務器都存在trunk 和branch目錄。

 

 

Tags/release:基本和branches操作一樣。

五、SVN服務端管理

5.1、Window-Visual SVN Server

5.1.1、代碼庫Repository

 

5.1.2、用戶 User

Create User 和Delete 和SetPassword…

 

5.1.3、組 Group

 

 

5.1.4、權限控制

如果用戶添加好了以後可控制每一個文件夾或文件的權限。

 

添加用戶或組 = add

權限設置 = Permissions

5.2、Linux- Svnserve

 

 

5.2.1、版本庫(Repository)

1、創建版本庫目錄

mkdir -p /home/svndata/repos

 

2、創建版本庫

/usr/local/svn/bin/svnadmin create/home/svndata/repos

 

Repos目錄下,自動生成

 

conf:配置目錄下的配置文件如下

svnserve.conf:指定了版本庫訪問用戶和訪問權限,設置了passwd和authz的目錄。

 

passwd:用於配置repos版本庫的訪問用戶,配置了用戶和密碼

authz :用於配置repos版本庫的用戶的訪問目錄的權限

 

 

3、利用客戶端的來管理項目目錄

 

在客戶端新建下面目錄,在daphne_repos(daphne_code)目錄下,點commit上傳的到服務的版本庫

 

上傳後,就可以在配置文件authz下設置不能目錄的訪問權限。(5.2.3)

 

4、刪除已有的目錄

刪除本地目錄,通過TortoiseSvn進行commit 選擇刪除,進行刪除。

5.2.2、用戶(User)

路徑:home/svndata/repos/conf/passwd

編輯 passwd文件,來新增,修改,刪除用戶

 

整理用戶列表導入到passwd文件中

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.2.3、新增組,設置權限(Authz)

路徑:home/svndata/repos/conf/authz

編輯文件authz,新增,修改,刪除組,設置目錄訪問權限

 

1,組設置

 

設置組,相同的組下用戶給予同樣的目錄訪問權限

 

2,目錄讀寫權限

 

5.3、版本庫管理

5.3.1、備份

 

5.3.2、還原

 

 

5.3.3、遷移

從Window遷移到linux上

 

將版本庫導出成 dump 文件。

svnadmin dump myrepos > myrepos.dump

 

創建新版本庫,將dump文件導入到版本庫

 

$ svnadmin create /home/svn/repos/myrepos

$ svnadmin load /home/svn/repos/myrepos< myrepos.dump

 

Daphne_repos 遷移

Cd /usr/local/svn/bin/

 

svnadmin dump /home/svndata/repos>repos.dump

生成:repos.dump文件

 

遷入:

svnadmin load /home/svndata/repos_test/test< /usr/local/svn/bin/repos.dump

 

若提交 revision 18 表明成功

 

5.3.4、修復

 

5.3.5、壓縮

 

 

 

 

六、Daphne SVN

6.1、SVN服務

1、IP地址:192.168.0.61  端口:8443

https://192.168.0.61:8443/svn/

 

服務器:

192.168.188.23

Root賬號密碼: 略

svn://192.168.188.23:9999/repos

6.1.1、啓動服務

1、關閉服務

ps aux|grep svn

查找到進程

killall svnserve

 

2、啓動服務

/usr/local/svn/bin/svnserve -d --listen-port 9999 -r /home/svndata

 

Service svn start

 

3、重啓服務

Service svn restart

 

4、停止服務

 

Service svn stop

 

提示:要使用 service 需要先配置 svn的服務,參考 2.3.5、設置開機啓動

七、Subversion 統計分析

7.1、統計用戶KPI

 


八、Subversion異常

8.1、服務端異常

問題1:

客戶端調用時,顯示錯誤信息:svnserve.conf:12:Option expected

表明:svnserve.conf 文件配置異常

 

[general]

### These options control access to the repository forunauthenticated

### and authenticated users. Valid values are "write", "read",

### and "none".  Thesample settings below are the defaults.

anon-access = read

   auth-access = write

 

像上面的配置文件中,anon-access是頂行的,沒問題,而auth-access就存在前置空格,會導致這個錯誤。

要避免出現這個錯誤,

 

問題2:

分析: 出現這個錯誤前,還出現下圖,說明 svnserve.conf 中passwd-db 沒有指定對。

 

原因:svnserve.conf 配置文件中 password-db 指定文件有問題

原來爲 password-db = passwd.conf

現在改爲如下:

思路:

1、  首先檢查配置文件中svnserve.conf  是否需要用戶驗證由password-db 來指定

檢查的用戶

 

Password-db 文件

用戶前面不能爲空

 

 

九、參考資料

9.1、SVN安裝和配置

 

參考:CentOS 5.10 svn安裝,配置參考文檔

http://zhumeng8337797.blog.163.com/blog/static/10076891420121189161805/?suggestedreading&wumii

 

http://zhumeng8337797.blog.163.com/blog/static/1007689142012122937128/?suggestedreading&wumii

 

linux+apache2+subversio1.4

http://blog.csdn.net/kryptonum/article/details/1523643

 

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