2008年12月24日 星期三

使用SVN進行版本控制 - (二) 設定配置

啟動Subversion服務提供下列三種方式:
  1. svnserver
  2. svnserver + ssh
  3. apache
 在此只針對上述 第1, 3點作細詳說明,第2點就有請大家自行google一下

1. svnserver, a custom server
svnserver是一種較為不耗費資源的service, 建立於TCP/IP的基礎通訊協定上,client side可透過svn://來進行溝通。

 常見的有兩種模式啟動svnserver:(1) as stand alone, (2) as daemon

  (1) as stand alone (/etc/init.d)

$> svnserver -d -r /svn
# -d : 以daemon方式執行
# -r : 虛擬根目錄, 限制只能在此目錄底下的瀏覽

$> lsof -i :3690
# 可以查看svnserver是否已正常啟動
  (2) as daemon (/etc/xinetd.d)
$> vi /etc/xinetd.d/svnserve
##新增以下文字內容
service svnserve
{
 disable = no
 socket_type = stream
 wait = no
 user = apache
 server = /usr/local/subversion/bin/svnserve
 server_args = -i
}

$> vi /etc/services
##確認有無以下文字內容, 若不存在, 請新增於檔案內容中
svnserve    3690/tcp    #Subversion svnserve
svnserve    3690/udp    #Subversion svnserve
1.1 svnserve.conf (配置設定)
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
# realm = My First Repository
1.2 passwd (使用者帳號)
[users]
##
username = password
admin = admin
yardmgr = yardmgr
1.3 authz (授權管理)
[groups]
administrators = admin
developer_team = mills

[/]
* =
@administrators = rw

[/svn/yard:/]
@developer_team = rw

[/svn/test:/]
@developer_team = rw

2. apache, a http server
apache是一種較為耗費資源的service, 建立於WebDav的基礎通訊協定上,client side可透過http://來進行溝通。
(1) Apache2 Config (I) -- Add SVN Modules
 $>vi /usr/local/apache2/conf/httpd.conf
 ##確認有無以下內容, 若不存在, 請新增貼上
 ##若沒有mod_dav_svn模組, SVN則無法以http方式運作
 LoadModule dav_svn_module modules/mod_dav_svn.so
 LoadModule authz_svn_module modles/mod_authz_svn.so

(2) Apache2 Config (I) -- Add SVN Path
 $>vi /usr/local/apache2/conf/httpd.conf
 ##確認有無以下內容, 若不存在, 請新增貼上
 <Location>
  DAV svn
  SVNPath /svn/test
  # our access control policy, below (4)
  AuthzSVNAccessFile /svn/svn-authz
  AuthType Basic
  AuthName "Version Control System"
  # how to authenticate a user, below (3)
  AuthUserFile /svn/svn-auth-file
  # only authenticated users may access the repository
  Require valid-user
 </Location>

(3) Setting up http authentication (建立認證帳號)
 $>htpasswd -c -m /svn/svn-auth-file admin
 # 輸入第1個使用者帳號, 第1次建立才加 -c
 # -c : 建立新檔
 # -m : 採以MD5編碼

 $>htpasswd -m /svn/svn-auth-file yardmgr
 # 輸入第2個使用者帳號

(4) Setting up svn authorization (建立授權管理)

 $> vi
/svn/svn-authz
 # 新增以下文字內容
 [groups]
 administrators = admin
 developer_team = yardmgr

 [/]
 * =
 @administrators = rw

 [/svn/test:/]
 @developer_team = rw

沒有留言: