天天看點

RedHat AS系統下SVN伺服器的搭建過程詳解

1 環境:

      伺服器放在redhatAS4.0上,用戶端在windows 2000。

      2 軟體包

       最好不要讓root使用者參與到svn的權限管理和日常的運作和維護工作中來,但是有一些安裝和配置操作還是需要root使用者來完成的,因為有些操作隻有root才能做。權限問題很重要。(如果權限不對,會讓你郁悶很久

    3 安裝

    編譯安裝httpd (root使用者操作):

    # tar xvzf httpd-2.2.6.tar.gz

    # cd httpd-2.2.6

    # ./configure --enable-dav --enable-so --enable-mods-shared=all --prefix=/usr/local/apache2

    # make

    # make install

    (或者合并為一步#make && make install)

    編輯配置檔案httpd.conf

       # vi /usr/local/apache2/conf/httpd.conf

    修改内容:

    ServerName localhost:80或者Apache伺服器的IP

    安裝完成并修改後,啟動apache程序:/usr/local/apache2/bin/apachectl start(或者在/usr/local/apache2/bin/下,用./httpd –k start),然後打開浏覽器

      編譯安裝Subversion

      # tar xvzf subversion-1.4.5.tar.gz (或者tar -jxvf subversion-1.4.0.tar.zb2)

      # cd subversion-1.4.5

      # ./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-ssl --with-zlib --enable-maintainer-mode

      # make clean && make && make install

    建立管理svn的使用者svnroot

    #useradd svnroot

    #su svnroot

    //建立庫檔案所在的目錄 (要svnroot使用者進行下面的操作)

    # mkdir /home/svnroot/repository

    //進入subversion的bin目錄

    # cd /usr/local/subversion/bin

    //建立"test"倉庫

    # ./svnadmin create /home/svnroot/repository/test

    //進入到資料倉庫"test"目錄

    # cd /home/svnroot/repository/test

    //看看是不是多了些檔案,如果是則說明Subversion安裝成功了

    # ls –l

    //不讓其他人有該目錄的權限

    # chmod 700 /home/svnroot/repository

    //**注意,直接這麼chmod會導緻svn用戶端無法通路,需要修改apache配置檔案httpd.conf檔案:

        User daemon //将daemon改為svnroot,讓apache程序以svnroot的身份運作

        Group daemon

        //把上述内容改成:

        User svnroot

        Group svnroot

        //如果apache以daemon方式運作則所有使用者對資源庫隻有r的權限

        //如果不建立管理svn的用使用者svnroot,而讓apache以root身份運作,則系統會報錯

    (下面的操作是可選的)

    //修改svn倉庫的所有者

    # chown -R svnroot: svnroot /home/svnroot/repository

    //修改該目錄權限隻能svnroot擁有

    修改Apache配置檔案

    # cd /usr/local/apadche2/bin

    # ./apachect1 stop //停止Apache程序

      vi /usr/local/apache2/conf/httpd.conf

    //在最下面添加 ,如果你的裡面沒有這兩個子產品的話

    LoadModule dav_svn_module modules/mod_dav_svn.so

    LoadModule authz_svn_module modules/mod_authz_svn.so

Location訓示的目的是告訴Apache在特定的URL以及子URL下需要特殊的處理,如果是為Subversion準備的,

你希望可以通過告訴Apache特定URL是指向版本化的資源,進而把支援轉交給DAV層,你可以告訴 Apache将

所有路徑部分(URL中伺服器名稱和端口之後的部分)以/svn/開頭的URL交由DAV服務提供者處理

<Location /svn>

DAV svn

SVNParentPath /home/svnroot/repository/

# our access control policy權限配置檔案

AuthzSVNAccessFile /home/svnroot/repository/authz.conf

# only authenticated users may access the repository

Require valid-user

# how to authenticate a user

AuthType Basic

AuthName "Subversion repository created by tongyi"

#使用者配置檔案 

AuthUserFile /home/svnroot/repository/authfile 

</Location>

    #htpasswd [–c] /home/svnroot/repository/authfile test//使用者名

    #test//密碼

    //其中authfile是通過"htpasswd [–c] /home/svnroot/repository/authfile username password"來建立

    //"Require valid-user"告訴apache在authfile中所有的使用者都可以通路。如果沒有它,則隻能第一個使用者可以通路建立庫

    #vi /home/svnroot/repository/authz.conf //先建立一個檔案,具體配置後面在說明

    //啟動apache服務

    # /usr/local/apache2/bin/apachectl start

    //打開浏覽器通路

    權限管理(即authz.conf的配置)

    1)增加使用者

    # htpasswd [-c] /home/svnroot/repository/authfile user1

    //第一次設定使用者時使用-c表示建立一個使用者檔案。回車後輸入使用者密碼,完成對使用者的增加,此時是要用root的權限來添加的,添加完後在authfile中看到使用者和加密的密碼。

    # htpasswd /home/svnroot/repository/authfile 使用者名(加入新的使用者)

    //如:"htpasswd /home/svnroot/repository/authfile user2"

    2)權限配置設定

# vi /home/svnroot/repository/authz.conf   //編輯添加下面内容

#群組設定

[groups]

Tester = test,user1 //這個表示某群組裡的成員

#anonymous = guest

[test:/] //這表示,倉庫test的根目錄下的通路權限

@Tester = rw //test倉庫Tseter組中使用者具有讀和寫權限

* = r //test倉庫中所有使用者具有讀的權限

    //注意:在編輯authz.conf檔案時,所有行都必須要頂頭寫,不能有縮行出現,否則會報錯:"Access denied: 'user1' "。

    重新開機apache程序

    # /usr/local/apache2/bin/apachectl restart

備忘:

       1).在svn使用過程中牽扯到幾種權限:檔案系統的權限,linux系統權限,svn使用者的權限,apache程序的權限。檔案系統的權限,linux系統權限:這裡相同的意思,就是平時大家使用linux時檔案夾和檔案的通路權限。在 svn建立倉庫,檔案夾,配置檔案的時候用svnroot使用者,并将倉庫權限設定為700,不允許其他使用者直接通過檔案系統檢視,隻能由svnroot進行管理。apache程序的權限:因為所有跟倉庫傳輸的操作都是通過apache程序進行的,是以即使你給svn使用者設定了 很大的權限,但是apache程序沒有通路倉庫或者相關檔案的權限也沒有用,apache程序的權限設定在 /usr/local/apache/conf/httpd.conf 檔案中配置,找到檔案中的這兩行:

User daemon # 将daemon改為svnroot,讓apache程序以svnroot的身份運作

Group daemon

svn使用者的權限:就是在authz.conf檔案中設定的權限資訊,是svn用來管理倉庫通路權限的。

    2).設定啟動系統後,自啟動Apache服務

編輯etc/rc.d/rc.local

# vi /etc/rc.d/rc.local

在最後加上一句: /usr/local/apache2/bin/apachectl start

<a href="http://svn.collab.net/repos/svn/trunk/INSTALL">http://svn.collab.net/repos/svn/trunk/INSTALL</a>

      本文轉自glying 51CTO部落格,原文連結:http://blog.51cto.com/liying/968421,如需轉載請自行聯系原作者

繼續閱讀