<b>subversion</b><b>在系統管理方面涉及到的内容</b>
預定義:建立一個目錄/home/svn,将所有的庫都建在這裡
安裝方式
分為兩種:apache擴充和獨立伺服器
<b>一、作為apache</b><b>的擴充</b>,
需要重新編譯安裝apache,支援web通路,但是這樣運作svn較慢,身份驗證由apache來完成,不需要給開發人員系統帳号
編譯apache的參數
例:apache2.2.6
./configure --prefix=/usr/local/apache2 --enable-module=setenvif --enable-module=rewrite --with-mpm=prefork <b> --enable-so --enable-dav-fs --enable-dav</b>
最後三個參數是必須要的
編譯subversion的參數
例:subversion-1.4.5
#./configure <b>--with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion</b> --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-ssl --with-zlib --enable-maintainer-mode
因為是通過apache通路的,是以apache的運作者(nobody或者apache)要對庫目錄有寫的權限。
如chown apache.apache /home/svn
修改apache配置檔案
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
SVNParentPath /home/svn/ <b>//svn</b><b>庫的主目錄</b>
AuthzSVNAccessFile /home/svn/authz.conf <b>//</b><b>權限配置檔案</b>
AuthType Basic
AuthName "Subversion.zoneyump" <b>//</b><b>輸密碼時候彈出的連接配接框提示</b>
AuthUserFile /home/svn/authfile <b>//</b><b>使用者配置檔案</b>
Require valid-user <b>//</b><b>采用何種認證</b>
</Location>
建立使用者svn1 ,svn2
htpasswd -c /home/svn/authfile svn1 第一次包含建立檔案的操作,要帶-c參數
會提示輸密碼
htpasswd /home/svn/authfile svn2
不要-c參數了
建庫
svnadmin create /home/svn/repos1
這樣就建立了名為repos1的庫
限制svn的使用者權限
編輯 /home/svn/authz.conf
[repos1:/]
svn1 = rw
svn2 = r
[/]
* = r
用戶端通路
浏覽器http://伺服器IP/svn/repos1/ 輸入使用者名密碼即可看到檔案清單
用戶端http://
不是svn://
<b>二、獨立伺服器</b>,
這種跟apache沒關系,安裝使用都比較簡單,運作也相對較快
安裝可以使用源碼或者自帶的rpm包。現在伺服器上用的是自帶的rpm包,可以進行更新。
以獨立啟動的方式來說,可以是兩種:
1.作為一個daemon監聽程序:啟動後一直運作監聽連接配接,用戶端通路用svn方式,身份驗證用svn自帶的配置檔案(使用者不需要機器的帳号,權限管理也由配置檔案來控制)
2.由ssh啟動svn:通過ssh通路時,ssh啟動一個svn程序,操作結束後,這個svn程序就結束了,用戶端通路用ssh方式,身份驗證用ssh(使用者需要有機器的帳号,權限由系統管理)
同樣建立目錄/home/svn,作為存放庫和配置檔案的地方.
建立庫
這樣就自動建立了一個庫repos1,所在的目錄是/home/svn/repos1
目錄下有一些内容
conf dav db format hooks locks README.txt
重要的是conf目錄,存放配置檔案,下面的配置檔案有authz passwd svnserve.conf三個檔案
核心是svnserve.conf,其内容一般如下
[general]
anon-access = none 不允許匿名通路
auth-access = write 授權使用者通路最大的權限是寫
password-db = /home/svn/conf/pwd.conf存放使用者和密碼的配置檔案
authz-db = /home/svn/conf/authz.conf管理使用者群組權限的檔案
realm = repos1指定庫名稱
以後還建立庫的話,做法也跟上面一樣,隻是改最後一句
realm = repos1 來指定庫的名稱
這樣做的好處是實作集中的使用者權限管理(多個庫使用一套配置檔案)
目錄下的其他兩個檔案authz 和passwd(authz對應authz.conf,passwd對應pwd.conf)就不需要了,可以删掉
<b>1.</b><b>獨立的daemon</b><b>方式</b>
使用者和權限都是由配置檔案來控制,這點與之前的apache類似,使用虛拟帳号而不是系統帳号,但是與apache相比配置要簡單很多
定義使用者pwd.conf檔案格式如下
[users]
svn1 = password1
svn2 = password2
格式: 使用者名 = 密碼
定義權限authz.conf檔案格式如下
[groups]
admin = svn1
[/]
@admin = rw
[repos1:/]
svn1 = rw
[repos2:/pass]
啟動伺服器
<b>svnserve -d --listen-port 3690 -r /home/svn</b>
一直在tcp的3690端口監聽,端口可以随意指定,預設是3690
用戶端通路svn://伺服器ip/repos1,如果沒有啟動svn,通路是不行的
<b>2.ssh</b><b>方式</b>
基本上對系統什麼也不用做,建庫,設好權限即可
所有的使用者和權限由系統控制,使用者是作業系統使用者,權限是作業系統設定的目錄權限.
在機器上為所有的開發人員建帳号
為了友善在系統中增加一個svn組,将所有的開發人員加入到svn組
給庫目錄/home/svn加svn組的權限,保證開發人員可以讀寫檔案
/home/svn/conf下的檔案基本不起作用,但是還是需要有
存放使用者密碼的檔案 pwd.conf 隻需要為空
控制權限的檔案authz.conf,隻需要給最大的.因為更嚴格的權限由系統管理者來對具體目錄設定,這裡設了也是無效的.内容如下
* = rw
用戶端的通路方式
svn+ssh://svn4@伺服器ip/home/svn/repos1
不需要在伺服器端啟動程式
注:
svn4是使用者名
/home/svn/repos1是通路路徑(注意與svn://不同,這裡使用的是絕對路徑名)
這句話的意思也就是svn4這個使用者要通路機器上的/home/svn/repos1這個路徑
<b>出現問題基本是由于使用者權限造成的。</b>
<b></b>
<b>本文轉自yahoon 51CTO部落格,原文連結:http://blog.51cto.com/yahoon/58414,如需轉載請自行聯系原作者</b>