Linux平臺下Subversion的安裝與配置(一)

本文將介紹如何在Linux環境下(以Redhat9爲例) 通過Subversion 來構建小組開發過程中最爲重要的版本控制環境,包括Subversion 環境的安裝配置,以及客戶端的配置和使用。(某些操作,如make install需要root權限,簡便起見,在沒有特殊說明的情況下,下面的工作均使用root賬戶完成。)

1. 安裝Apache HTTP Server

 

httpdweb服務器,httpdsubversion 配合,可用來通過web訪問subversion,得到httpd-2.2.4.tar.bz2文件後,通過以下命令解壓:

tar -jxvf httpd-2.2.4.tar.bz2

進入解壓後的目錄後,執行

./configure --enable-dav --enable-so --enable-nonportable-atomics 

其中,--enable-dav允許Apache提供DAV協議支持;--enable-so允許運行時加載DSO模塊 --enable-nonportable-atomics可以在486以上的CPU上啓用更加高效的基於互斥執行的原子操作。前兩個參數是必須要加的,你還可以根據您的需要添加其他的參數。httpd默認安裝目錄爲/usr/local/apache2,可通過--prefix參數指定。

另外,網絡上有些howto上有在此時使用--enable-maintainer-mode參數,建議在正式的使用環境中不要使用,該參數使用所有警告和調試符號編譯源代碼,會影響性能。

完成後使用make命令編譯httpd,執行make install則完成對httpd的安裝,默認路徑爲/usr/local/apache2

 

安裝完成後,進入 /usr/local/apache2/bin目錄,使用

./apachectl start啓動httpd

在瀏覽器中打開http://localhost/,如果能正常顯示“It Works!”,則證明已經安裝成功。

 

 

2.安裝Subversion

 

subversion的安裝稍有技巧,需要下載subversion-1.4.3.tar.bz2 subversion-deps-1.4.3.tar.bz2兩個壓縮包,並且解壓至同一目錄下,這樣subversion會自動地編譯、安裝依賴庫;若習慣性的先安裝依賴庫,後安裝subversion,則依賴庫的編譯需要手動進行。

進入解壓後的目錄,執行

./configure --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2

其中,--with-apxs 用於生成apache httpdmod_dav_svnmod_authz_svn模塊;--with-apr --with-apr-util=參數指向 Apache 的安裝根目錄,而不是使用缺省的 SVN 安裝包中自帶的 apr ,否則如果你安裝的 Apache 版本不同有可能導致 APR 庫不匹配,出現類似:

Can't set position pointer in file '/svn/test/db/revs/1': Invalid argument 的錯誤。(同樣可以通過  --prefix參數指定安裝目錄)

Configure完成後,執行makemake install命令完成安裝。

Subversion編譯完成後會自動在 /usr/local/apache2/conf/httpd.conf 添加

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

這兩行,並且將生成的mod安裝到apache2modules目錄。

 

3.創建repository

 

假設我們把版本庫建立在/home目錄下,那麼執行mkdir repository新建版本庫文件夾,

通過svnadmin create repository/test命令可創建名爲test的版本庫。

若創建成功,則subversion的安裝便已成功完成。

 

這裏,我使用了fsfs數據庫格式,這是subversion目前的默認數據存儲形式,如果想要使用Berkeley DB作爲數據庫格式,則需要在安裝subversion之前安裝Berkeley DB,並在編譯subversion時使用—with-berkeley-db參數,然後可以使用

svnadmin create --fs-type bdb repository/test 命令來創建版本庫。(關於兩者的對比可參考Version Control with Subversion(中文書名爲《使用subversion進行版本控制》)第5章)。

 

 

4.導入源代碼

 

現在,我們已經有了一個可用的版本庫了,接下來我們使用

mkdir –p import/{trunk,branches,tags} 命令在/home/svnroot目錄下建立一個名爲import的新文件夾,包含trunkbranchestags 三個子目錄,目錄結構如下圖所示。

至於爲什麼這麼做,大家可以參考Version Control with Subversion4章。

 

Some dir

        |---import

               |---trunk

               |---branches

               |---tags

 

下面這條語句將把路徑/home/svnroot/import下的目錄和文件導入到你創建的Subversion 倉庫中去,

提交後的修訂版爲1

svn import /home/svnroot/import file:///home/svnroot/repository/test m "Init repository"

這裏/home/svnroot/import可以使用相對路徑,但file:///home/svnroot/repository/test必須以絕對路徑表示。

 

 

5.版本庫所有者和權限修改

 

目前,repository目錄依然爲root用戶所有,默認權限爲755,爲了讓用戶能夠通過apache正常讀寫該目錄,我們需要先將該目錄以及該目錄的上層目錄svnroot的所有權交給apache httpd(安裝apache httpd的時候,會自動增加apache用戶組和apache用戶),然後爲了安全起見,將repositorysvnroot目錄的權限都改爲700apache外其他用戶就沒有了該目錄的任何權限了。

 

首先,打開apache配置文件/usr/local/apache2/conf/httpd.conf,確保將UserGroup 設置爲

User apache

Group apache

 

然後,進入/home目錄,修改svn倉庫的所有者

chown -R apache:apache svnroot

 

最後,修改該目錄權限(不要在這裏使用-R參數,apache用戶需要對test下的文件有讀寫權限)

chmod 700 svnroot

chmod 700 svnroot/repository

 

 

至此,我們已經爲subversion的使用做好了準備工作,有了一個可由apache進行讀寫的版本庫,只要對apache稍加設置,我們便可以通過web來訪問版本庫了。結合httpd使用subversion時的身份認證和授權設置問題是需要特別注意的,我將在第二篇中詳細說明。

 

Reference

1.       Version Control with Subversion 1.4(r2730)    Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato

2.       Apache HTTP Server Version 2.2文檔中文版   Apache Software Foundation  金步國譯

3.       Redhat9 Linux下安裝,配置Subversion 1.3.1      Wooin  http://blog.csdn.net/wooin/archive/2006/07/11/903974.aspx

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