天天看點

subversion在系統管理方面涉及到的内容

<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

&lt;Location /svn&gt;

   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>

&lt;/Location&gt;

建立使用者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>