<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 2, comments - 27, trackbacks - 0, articles - 60
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    在linux下安裝配置svn獨(dú)立服務(wù)器

    Posted on 2009-01-15 17:44 ZhouFeng 閱讀(12135) 評(píng)論(0)  編輯  收藏 所屬分類: 轉(zhuǎn)載LinuxSVN
    subversion(以下簡(jiǎn)稱svn)是近年來(lái)崛起的版本管理工具,是cvs的接班人。
    svn服務(wù)器有2種運(yùn)行方式:獨(dú)立服務(wù)器和借助apache。2種方式各有利弊。
    svn存儲(chǔ)版本數(shù)據(jù)也有2種方式:BDB和FSFS。因?yàn)锽DB方式在服務(wù)器中斷時(shí),有可能鎖住數(shù)據(jù),所以還是FSFS方式更安全一點(diǎn)。
    1. svn服務(wù)器安裝操作系統(tǒng): Redhat Linux

    AS4安裝包獲取:下載http://subversion.tigris.org/downloads/subversion-1.4.0.tar.gz和

    http://subversion.tigris.org/downloads/subversion-deps-1.4.0.tar.gz。編譯:
    以root用戶登錄。
    將subversion-1.4.0.tar.gz和subversion-deps-1.4.0.tar.gz傳到服務(wù)器。
    tar xfvz subversion-1.4.0.tar.gz
    tar xfvz subversion-deps-1.4.0.tar.gz
    cd subversion-1.4.0
    ./configure --prefix=/opt/svn --without-berkeley-db --with-zlib
    (注:以svnserve方式運(yùn)行,不加apache編譯參數(shù)。以fsfs格式存儲(chǔ)版本庫(kù),不編譯berkeley-db)
    make clean
    make
    make install
    vi /etc/profile,在/etc/profile最后加入:
    PATH=$PATH:/opt/svn/bin
    export PATH
    測(cè)試:
    svnserve --version
    如果顯示如下,安裝成功:
    svnserve, version 1.4.0 (r21228)
    compiled Oct 12 2006, 10:18:56Copyright (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配置
    建立版本庫(kù)目錄,可建多個(gè):
    mkdir -p /opt/svndata/repos1
    mkdir -p /opt/svndata/repos2
    建立版本庫(kù):
    svnadmin create /opt/svndata/repos1
    svnadmin create /opt/svndata/repos2
    修改版本庫(kù)配置文件:
    版本庫(kù)1:
    vi /opt/svndata/repos1/conf/svnserve.conf
    內(nèi)容修改為:
    [general]
    anon-access = none
    auth-access = write
    password-db = /opt/svn/conf/pwd.conf
    authz-db = /opt/svn/conf/authz.conf
    realm = repos1
    版本庫(kù)2:
    vi /opt/svndata/repos2/conf/svnserve.conf內(nèi)容修改為:
    [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外,其他與版本庫(kù)1配置文件完全相同。如果有更多的版本庫(kù),

    依此類推。配置允許訪問(wèn)的用戶:
    vi /opt/svn/conf/pwd.conf
    為了簡(jiǎn)化配置,2個(gè)版本庫(kù)共用1個(gè)用戶配置文件。如有必要,也可以分開(kāi)。注意:對(duì)用戶配置文件的修改立即生效,不必重啟svn。文件格式如下:
    [users]
    <用戶1> = <密碼1>
    <用戶2> = <密碼2>
    其中,[users]是必須的。下面列出要訪問(wèn)svn的用戶,每個(gè)用戶一行。示例:
    [users]
    alan = password
    king = hello
    配置用戶訪問(wèn)權(quán)限:
    vi /opt/svn/conf/authz.conf
    為了簡(jiǎn)化配置,3個(gè)版本庫(kù)共用1個(gè)權(quán)限配置文

    件/opt/svn/conf/pwd.conf。如有必要,也可以分開(kāi)。文件中定義用戶組和版本庫(kù)目錄權(quán)限。注意:
    * 權(quán)限配置文件中出現(xiàn)的用戶名必須已在用戶配置文件中定義。
    * 對(duì)權(quán)限配置文件的修改立即生效,不必重啟svn。用戶組格式:
    [groups]
    <用戶組名> = <用戶1>,<用戶2>
    其中,1個(gè)用戶組可以包含1個(gè)或多個(gè)用戶,用戶間以逗號(hào)分隔。版本庫(kù)目錄格式:
    [<版本庫(kù)>:/項(xiàng)目/目錄](méi)
    @<用戶組名> = <權(quán)限>
    <用戶名> = <權(quán)限>  其中,方框號(hào)內(nèi)部分可以有多種寫(xiě)法:
    /,表示根目錄及以下。根目錄是svnserve啟動(dòng)時(shí)指定的,我們指定為/opt/svndata。這樣,/就是表示對(duì)全部版本庫(kù)設(shè)置權(quán)限。
    repos1:/,表示對(duì)版本庫(kù)1設(shè)置權(quán)限
    repos2:/occi, ,表示對(duì)版本庫(kù)2中的occi項(xiàng)目設(shè)置權(quán)限
    repos2:/occi/aaa, ,表示對(duì)版本庫(kù)2中的occi項(xiàng)目的aaa目錄設(shè)置權(quán)限  權(quán)限主體可以是用戶組、用戶或*,用戶組在前面加@,*表示全部用戶。權(quán)限可以是w、r、wr和空,空表示沒(méi)有任何權(quán)限。示例:
    [groups]
    admin = alan[/]
    @admin = rw[repos1:/occi/aaa]
    king = rw[repos2:/pass]
    king =
    刪除無(wú)用文件:
    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. 啟動(dòng)svn
    建立啟動(dòng)svn的用戶:
    useradd svn
    passwd svn
    根據(jù)提示為用戶svn設(shè)置密碼允許用戶svn訪問(wèn)版本庫(kù):
    chown –R svn:svn /opt/svndata
    chown –R svn:svn /opt/data啟動(dòng)svn:
    su - svn -c "svnserve -d --listen-port 9999 -r /opt/svndata"
    其中:
    su – svn表示以用戶svn的身份啟動(dòng)svn
    -d表示以daemon方式(后臺(tái)運(yùn)行)運(yùn)行
    --listen-port 9999表示使用9999端口,可以換成你需要的端口。但注意,使用1024以下的端口需要root

    權(quán)限
    -r /opt/svndata指定根目錄是/opt/svndata檢查:
    ps –ef|grep svnserve如果顯示如下,即為啟動(dòng)成功:
    svn    6941   1 0 15:07 ?    00:00:00 svnserve -d --listen-port 9999 -r

    /opt/svndata參考資料:
    http://www.gbunix.com/htmldata/2006_07/15/27/article_1337_1.html
    http://www.iusesvn.com/bbs/thread-157-1-1.html
    http://16hot.blog.isyi.com/post/1/552
    檢測(cè)服務(wù)是否開(kāi)啟:netstat -ntlp如果看到3690的端口正常開(kāi)放了,證明SVN啟動(dòng)了。]
    下面是機(jī)器上的端口顯示:
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address         Foreign Address              State       

    PID/Program name
    tcp         0       0 0.0.0.0:32769         0.0.0.0:*                    LISTEN      

    2611/rpc.statd
    tcp         0       0 0.0.0.0:111           0.0.0.0:*                    LISTEN      

    2591/portmap
    tcp         0       0 0.0.0.0:113           0.0.0.0:*                    LISTEN      

    2827/xinetd
    tcp         0       0 127.0.0.1:631         0.0.0.0:*                    LISTEN      

    4860/cupsd
    tcp         0       0 127.0.0.1:25          0.0.0.0:*                    LISTEN      

    2846/sendmail: acce
    tcp         0       0 :::3690               :::*                        LISTEN      

    5513/svnserve
    tcp         0       0 :::22                 :::*                        LISTEN      

    2812/sshd
    下面這個(gè)就是了:
    tcp         0       0 :::3690               :::*                        LISTEN      

    5513/svnserve
    好了,svn已經(jīng)架起來(lái)了



    在 Linux/Apache 2.2 上配置SVN服務(wù)器

    準(zhǔn)備,下載所需要文件.
    檢查已安裝的 Apache2 是否已經(jīng)安裝了 mod_dav .
    編譯SVN,遇到的問(wèn)題和解決方法
    使用 默認(rèn)文件系統(tǒng)(fsfs) 保存數(shù)據(jù)
    使用 Berkeley DB 保存數(shù)據(jù)
    配置Apache和SVN,測(cè)試.
    其它小結(jié)
    從Windows平臺(tái)上數(shù)據(jù)轉(zhuǎn)移
    配置文件,使用其支持對(duì)文件中的 $Id$ 標(biāo)簽每次提交的時(shí)候自動(dòng)更新版本信息.
    基于路徑的權(quán)限控制常用SVN命令
    相關(guān)資源* 準(zhǔn)備,下載所需要文件.
    本文測(cè)試環(huán)境:ubuntu 6.06 LTS (kernel 2.6.15-25-k7,gcc-4.0.3) /ubuntu server (2.6.15-26-

    server,gcc-4.0.4)
    Subversion 1.3.2Apache 2.2.2最新的版本 Subversion 可以在這里找到 :

    http://subversion.tigris.org/project_packages.html* 檢查已安裝的 Apache2 是否已經(jīng)安裝了

    mod_dav .
    如果已經(jīng)成功安裝了Apache,使用 httpd -M 來(lái)查看有沒(méi)有安裝 dav_module,如果沒(méi)有的話 必須附加

    ‘–enable-dav’ ‘–enable-dav-fs’ 兩個(gè)參數(shù)重新編譯 Apache,否則即使編譯通過(guò)了svn,apache也

    會(huì)啟動(dòng)不起來(lái).如何編譯 Apache 請(qǐng)參考我另外一篇文章.* 編譯SVN,遇到的問(wèn)題和解決方法.
    使用默認(rèn)的文件系統(tǒng)保存數(shù)據(jù).
    最終完整通過(guò)安裝和測(cè)試的編譯參數(shù)為:./configure --with-apxs=/usr/local/apache2/bin/apxs \
    --with-apr=/home/src/server/httpd-2.2.2/srclib/apr \
    --with-apr-util=/home/src/server/httpd-2.2.2/srclib/apr-utilmake
    make install其中 /home/src/server/ 為 httpd-2.2.2 源代碼所在文件夾,根據(jù)實(shí)際情況調(diào)整一下.◆

    遇到問(wèn)題:1) --with-apr 和 --with-apr-util 如果沒(méi)有加上的話,即使編譯成功了也會(huì)出現(xiàn)Can't set position pointer in file ‘/home/svn/repos/db/revs/0′: Invalid argument
    這樣的錯(cuò)誤提示.2) 暫時(shí)不能使用 Berkeley DB [* 已解決]svn保存文件更新數(shù)據(jù)庫(kù)的方法有兩個(gè),一種是直接使用 fs (filesystem)來(lái)保存,另一種是通過(guò)Oracle提供支持的開(kāi)源數(shù)據(jù)庫(kù) Berkeley DB 進(jìn)行保存。但是如果加上 –with-berkeley-db=/usr/local/BerkeleyDB.4.4 就會(huì)configure時(shí)就會(huì)報(bào)錯(cuò).configure: error: APR-UTIL was installed independently, it won’t be possible to use the specified Berkeley DB: /usr/local/BerkeleyDB.4.4我想 apr-unit 暫時(shí)不支持吧,我們就用默認(rèn)的fs好了.3) 在make 的時(shí)候可能會(huì)遇到缺少 srclib/apr/libapr-1.la,srclib/apr-util/libaprutil-1.la 兩個(gè)文件,找不到而make error.解決辦法:/usr/local/apache2/lib/ 中找到,將其復(fù)制到源代碼文件夾相應(yīng)的位置中.Update!!使用 BerkeleyDB 保存數(shù)據(jù).
    1) 安裝 BerkeleyDBcd /usr/local/src
    wget http://downloads.sleepycat.com/db-4.3.29.tar.gztar xzvf db-4.3.29.tar.gz
    cd /usr/local/src/db-4.3.29/build_unix
    ../dist/configure --enable-compat185
    make
    make install2) 更新apr和apr-util源代碼# 清理編譯后的.la文件
    cd /usr/local/src/httpd-2.2.3make cleancd /usr/local/src/subversion-1.3.2
    rm -rf apr
    rm -rf apr-util
    cp -rf /usr/local/src/httpd-2.2.3/srclib/apr ./
    cp -rf /usr/local/src/httpd-2.2.3/srclib/apr-util/ ./3) 編譯安裝./configure --with-

    apxs=/usr/local/apache2/bin/apxs \
    --with-berkeley-db=/usr/local/BerkeleyDB.4.3 \
    --with-ssl
    make
    make install
    ◆ 遇到問(wèn)題:
    1) BerkeleyDB 版本不能大于 4.3.否則同樣會(huì)出現(xiàn)以下錯(cuò)誤.configure: error: APR-UTIL was

    installed independently, it won’t be
    possible to use the specified Berkeley DB: /usr/local/BerkeleyDB.4.4
    主要是apr-util 暫時(shí)不支持4.4的版本.2) 必須更新apr,apr-util 源代碼.
    subversion-1.3.2 自帶的 apr-util 的版本是0.9.6的,必須升級(jí)為 1.2.7 雖然能編譯過(guò)去。但在 svn

    checkout 的時(shí)候會(huì)提示svn: REPORT request failed on ‘/!svn/vcc/default’
    svn: REPORT of ‘/!svn/vcc/default’: Could not read status line: connection was closed by

    server.
    這個(gè)問(wèn)題困擾了我很長(zhǎng)時(shí)間,Google和官方論壇都無(wú)結(jié)果。后來(lái)昨天竟然自己無(wú)意中解決了,感動(dòng)的得哭了:)* 配置Apache和SVN,測(cè)試
    成功編譯svn后會(huì)在 httpd.conf 中自動(dòng)加上LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so
    兩個(gè)模塊,沒(méi)有的話,自行加上或檢測(cè)是否真的編譯成功.假設(shè)我們現(xiàn)在要將一個(gè)名為 Lair 的項(xiàng)目導(dǎo)入

    到 SVN中1). Apache的配置在 conf/httpd.conf 或 conf/extra/httpd-vhosts.conf 中加入
    <Location /svn/Lair>DAV svn
    SVNPath /home/svn/Lair
    </Location>
    可以參考以下apache的配置,實(shí)現(xiàn)數(shù)據(jù)加密傳輸,用戶身份驗(yàn)證.Listen 443AddType

    application/x-x509-ca-cert .crt
    AddType application/x-pkcs7-crl .crl.SSLPassPhraseDialog exec:/etc/sendsslpwd
    SSLSessionCache shmcb:/usr/local/apache2/logs/ssl_scache(512000)
    SSLSessionCacheTimeout 300
    SSLMutex file:/usr/local/apache2/logs/ssl_mutex<VirtualHost _default_:443>
    DocumentRoot /var/SVNRoot
    ServerName svn.yousite.com:443
    ServerAdmin webmaster@yousite.com
    <Location />DAV svn
    SVNPath /var/SVNRoot
    AuthzSVNAccessFile /etc/svnserve.conf
    Satisfy Any
    AuthType Basic
    AuthName “yousite SVN Repository”
    AuthUserFile /etc/httpd-passwords.txt
    Require valid-user</Location>
    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile /etc/ssl/server.crt
    SSLCertificateKeyFile /etc/ssl/server.key</VirtualHost>更詳細(xì)的配置說(shuō)明文檔

    http://svnbook.red-bean.com/nightly/en/svn.ref.mod_dav_svn.conf.html2). 配置,并且測(cè)試SVN,創(chuàng)建一個(gè)新用戶,用了保存?zhèn)}庫(kù).
    useradd -m svn
    創(chuàng)建一個(gè)新模塊su daemon (apache是以daemon用戶運(yùn)行的,所以要切換身份,否則可能會(huì)報(bào)目錄訪問(wèn)權(quán)限錯(cuò)誤)
    svnadmin create --fs-type fsfs /home/svn/Lair
    導(dǎo)入原來(lái)的項(xiàng)目svn import /var/www/Lair http://localhost/svn/Lair -m ‘Initial import’重新建

    立工作目錄rm -rf /var/www/Lair (注意備份!!)
    svn checkout http://localhost/svn/Lair
    測(cè)試打開(kāi) http://localhost/svn/Lair如能看到一個(gè)你項(xiàng)目錄列表,說(shuō)明您成功了。
    * 其它小結(jié)
    數(shù)據(jù)轉(zhuǎn)移:從 Windows 平臺(tái) SVN 服務(wù)器轉(zhuǎn)移
    如果windows svn儲(chǔ)存的格式也是dbd的話,直接將SVN的文件夾copy過(guò)來(lái)即可.然后
    執(zhí)行 svnadmin recover /var/SVNRoot 檢查一下數(shù)據(jù)庫(kù)是否損壞.最后注意權(quán)限,確保 db 目錄下的所有

    文件可寫(xiě)。chmod 755 db
    chmod 666 db/*
    否則checkout時(shí)出現(xiàn)以下錯(cuò)誤,多數(shù)是因?yàn)槲募蛘吣夸洐?quán)限問(wèn)題引起的,可以嘗試用 chown 或者

    chmod 命令修改一下權(quán)限<m:human-readable errcode=”160029″>Could not open the requested SVN

    filesystem
    </m:human-readable><m:human-readable errcode=”13″>
    Could not open the requested SVN filesystem
    </m:human-readable>另外一種方法沒(méi)有測(cè)試過(guò),原理大致和mysqldump一樣,將svn導(dǎo)出為文本文件,然

    后重新導(dǎo)入,好處是可以避免因?yàn)榇鎯?chǔ)格式不同而導(dǎo)致的數(shù)據(jù)轉(zhuǎn)移困難。# dump data to file

    (assuming a repo @ c:\repo):svnadmin dump c:\repo > c:\repo.txt
    # Copy the file over to linux:
    mkdir /repo
    svnadmin create /repo
    svnadmin load /repo < /repo.txt
    設(shè)置訪問(wèn)控制當(dāng) httpd.conf 中 設(shè)置 AuthzSVNAccessFile 時(shí),

    可以設(shè)置不同用戶對(duì)不同目錄的訪問(wèn)控制.以下是一個(gè)例子.[groups]
    root = admin.root
    web = user1,user2
    soft = user3,user4[/]
    @root = rw[/www]@web = rw[/soft]
    @soft = rw詳細(xì)的說(shuō)明文檔:http://svnbook.red-bean.com/nightly/en/svn.serverconfig.httpd.html

    配置文件,使用其支持對(duì)文件中的 $Id$ 標(biāo)簽每次提交的時(shí)候自動(dòng)更新版本信息(自動(dòng)屬性).Windows

    : C:\Documents and Settings\%USERNAME%\Application Data\Subversion\config
    Linux : ~\.subversion\config[miscellany]enable-auto-props = yes
    [auto-props]
    *.php=svn:keywords=Id
    *.html=svn:keywords=Id>> 關(guān)于自動(dòng)屬性的更高級(jí)討論■ 幾條常用svn 命令
    svn update
    svn add “filename”
    svn commit———————–
    Change Log:2006-08-14 neon庫(kù)subversion已經(jīng)自帶,不需要在單獨(dú)安裝,添加-with-ssl即可使用svn對(duì)ssl支持.
    2006-08-10 補(bǔ)充自動(dòng)屬性的說(shuō)明.
    2006-08-08 加入關(guān)于目錄訪問(wèn)驗(yàn)證的說(shuō)明.
    2006-08-07 httpd,2.2.3測(cè)試依然有效,解決bdb數(shù)據(jù)庫(kù)的支持問(wèn)題,添加從Windows到Linux下的數(shù)據(jù)轉(zhuǎn)移方案。
    2006-07-25 看到到.聲仔對(duì) Can’t set position pointer in file 另一種解決方案,我當(dāng)時(shí)也測(cè)試了,好像沒(méi)有成功。不想用apache源代碼編譯的朋友可以也測(cè)試一下
     


    主站蜘蛛池模板: 中文字幕日本人妻久久久免费| 中文字幕无码精品亚洲资源网久久| 国产精品亚洲精品日韩电影| 成在人线AV无码免费| 亚洲精品永久www忘忧草| 久久aⅴ免费观看| 久久精品a亚洲国产v高清不卡 | 亚洲欧洲综合在线| 无码成A毛片免费| 久久精品亚洲中文字幕无码麻豆| 日韩视频免费在线观看| 久久亚洲精品无码aⅴ大香| 91九色老熟女免费资源站| 精品亚洲AV无码一区二区三区 | 亚洲欧美成人一区二区三区| 免费视频淫片aa毛片| 黄页网站在线免费观看| 亚洲真人日本在线| 国产精品免费福利久久| 亚洲国产视频一区| 浮力影院第一页小视频国产在线观看免费| 亚洲国产av玩弄放荡人妇| 亚洲成av人片在线观看天堂无码| www免费黄色网| 亚洲黄色中文字幕| 免费无码又爽又刺激高潮| 一个人看的www在线免费视频| 久久精品九九亚洲精品天堂| 91福利免费视频| 亚洲精品无码aⅴ中文字幕蜜桃| 亚洲av午夜精品一区二区三区| 国产一精品一av一免费爽爽| 亚洲大香伊人蕉在人依线| 国产免费牲交视频| 午夜精品一区二区三区免费视频| 亚洲欧美日韩综合俺去了| 国产亚洲精品高清在线| 久久精品免费全国观看国产| 男女污污污超污视频免费在线看| 日产亚洲一区二区三区| 免费A级毛片在线播放不收费|