天天看點

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

1 環境:

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

   2 軟體包

我們需要兩個檔案,httpd和subversion。httpd是web伺服器,用來通過web通路subversion。它們的下載下傳位址為:http://httpd.apache.org/

http://subversion.tigris.org/

最好不要讓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 www.example.com:80 為

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

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

http://localhost/,如果有測試頁"It works!"出現,則證明已經安裝成功。

編譯安裝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擁有

# chmod 700 /home/svnroot/repository

修改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

//打開浏覽器通路

http://localhost/svn/test/,如果有東西顯示就說明成功。

權限管理(即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' "。

//詳細設定查閱http://www.subversion.org.cn/svnbook/1.4/svn.serverconfig.pathbasedauthz.html

重新開機apache程序

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

就可以通過http://localhost/svn/test這個URL來通路倉庫了,當然,受權限的限制,必須是合法使用者才能通路且具有相應的權限。

備忘:

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

如果安裝過程遇到難以解決的問題查閱: http://svnbook.red-bean.com

http://svn.collab.net/repos/svn/trunk/INSTALL

Ubuntu系統下SVN伺服器的搭建過程詳解: http://wiki.ubuntu.org.cn/SubVersion

Windows系統下SVN伺服器的搭建過程詳解: http://indian.blog.163.com/blog/static/10881582007112415021751/