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,如需轉載請自行聯系原作者