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/