#LoadModule dav_module modules/mod_dav.so #LoadModule dav_fs_module modules/mod_dav_fs.so將#去除,使Apache載入mod_dav.so與mod_dav_fs.so。 可以藉由按下Apache的Test Configuration看看是否正常 (2)複製Subverison的so到Apache modules 將$SVN_INST_ROOT/bin下的mod_dav_svn.so及mod_authz_svn.so複製到$APACHE_INST_ROOT/modules 編輯httpd.conf,加入
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so這時如果按下Apache的Test Configuration可能會出錯,主要是Apache找不到$SVN_INST_ROOT/bin下的DLL,只要Restart windows就可以了,如果反過來先安裝Subverson再安裝Apache也許就不會這樣... (3)建立Subversion的repository 比較建議的方式是先建一個svnroot,再將repository建在svnroot之下,這樣可以簡單將一個repository視為一個專案以供區分。當然要把所有專案全塞到一個repository也是可以的啦,開心就好嘛....
$> mkdir svnroot $> cd svnroot $> svnadmin create project1這樣就會產生一個名為project1的repository了 (4)設定Apache中的Subversion DAV 先不考慮帳號權限設定,編輯httpd.conf,加入
<Location /svn> DAV svn SVNParentPath "$SVN_ROOT" #$SVN_ROOT請輸入上一步才建立的svnroot完整路徑 </Location>重起apache,再以browser連連看http://your_host_ip/svn/project1,應該就能看到一個空的project1目錄了,如果輸入http://your_host_ip/svn/,出現"You don't have permission to access /svn on this server."這是正常的。 如果你真的想要把所有東西全部放在一個repository下,那就改用
<Location /svn> DAV svn SVNPath "$REPO_ABSOLUTE_PATH" #$REPO_ABSOLUTE_PATH代表Repository的絕對路徑 </Location>(5)建立Apache中可用Subverion的帳號及權限 雖然Subversion中各個repository下的conf目錄中,都有passwd及authz來管理這個repository的帳號及權限,但是如果與Apache結合後透過HTTP來操作Subversion repository時,各個repository下的passwd及authz是沒有作用的,必需單獨產生供Apache使用的passwd及authz,我也建議這兩個檔就放在$SVN_ROOT下;用touch先產生passwd及authz這兩個檔案,這樣等會htpasswd就不用記第一次要加入"-c"這個參數... 要產生帳號密碼,只要在console下輸入
htpasswd -m $SVN_ROOT/passwd username再依提示輸入2次密碼就可以,"-m"這參數是代表要對user的密碼進行MD5編碼 權限控管的部份,建議將人員分組,並且建立一個admin帳號以供遠端產生新的repository。 下面是簡單範例
[aliases] [groups] #建立2個group,將人員分成Developer及SA兩類 developers=dev1 sateam=sa [/] #設定根目錄權限,除admin可以寫入外,其餘人員預設僅能讀取。 * = r admin = rw [project1:/document] #有@的代表是一個group,針對project1的document目錄設定僅有SA可以寫入 @sateam = rw [project1:/development] #project1的development目錄設定僅有developers這group的成員可以寫入 @developers = rw(6)修改Apache中的DAV設定 編輯httpd.conf,將
<Location /svn> DAV svn SVNParentPath "$SVN_ROOT" </Location>改為下列的樣子
<Location /svn> DAV svn SVNParentPath "$SVN_ROOT" AuthType Basic AuthName "Subversion Repository" AuthUserFile "$SVN_ROOT/passwd" AuthzSVNAccessFile "$SVN_ROOT/authz" Require valid-user </Location>重起Apache後再連到http://your_host_ip/svn/project1就可以發現要求輸入帳號密碼的視窗出現了。
Technorati Tags: Apache2, Subversion
沒有留言:
張貼留言