windows下安裝基於Apache的Subversion伺服器

elevenxl發表於2008-03-25
在Windows下安裝最為方便的辦法就是下載安裝程式包,詳細過程如下:
1.安裝程式與下載說明
 Apache Web伺服器 :http://httpd.apache.org/download.cgi 
       (Apache2.0.X版,我用的是2.0.59版;用2.2.X在windows下配置檔案修改後無法啟動!)
 Subversion :(http://subversion.tigris.org/files/documents/15/35379/svn-1.4.2-setup.exe
   TortoiseSVN 客戶端工具 (TortoiseSVN-1.4.1.7992-win32-svn-1.4.2.msi)
網路上比較多,這裡就不給出。
 2. 程式安裝
 (1)Apache2.0.63安裝
    防止安裝有問題,如果機器上裝有IIS,在安裝前我先將IIS埠改為8080,然後按提示安裝完成
    開啟 http://loccalhost,如果能出現內容,那你的Apache就安裝成功了。
        注:如果你將Apache安裝成一個服務,它將以本地system帳戶來執行。為Apache建立一個單獨的使用者來執行它將會更安全一些。由於常用的埠號衝突比較多,可以將Apache的埠號該為其他,比如81等。
        請確保執行Apache的使用者有版本庫的完全訪問許可權(右鍵版本庫目錄->屬性->安全)。要不然,使用者將無法提交他們的更改。就算Apache以本機system來執行,你也要設定它能完全讀寫版本庫目錄。
        如果沒有為Apache配置這個許可,使用者將會得到"禁止訪問"的錯誤資訊,在Apache的錯誤日誌中表現為錯誤500。

    (2)執行Subversion安裝程式,如果安裝程式能夠識別你已經安裝了Apache,那麼你的安裝基本上就OK了。如果它不能(我的機器未能識別),那麼你需要做以下手工配置:
      注:如果你先安裝Apache,再安裝Subversion,正常情況下下面的工作(2.3配置前)Subversion安裝程式已經幫你完成了使用資源 管理器,進入Sibversion的安裝目錄(通常為c:/program files/Subversion),找到檔案 httpd/mod_dav_svn.so和mod_authz_svn.so,將它們拷貝到Apache的modules目錄(通常為c:/ program files/apache group/apache2/modules)。

從Subversion的安裝目錄拷貝檔案libdb43.dll到Apache的modules目錄。

使用如記事本之類的文字編輯器編輯Apache的配置檔案(通常為c:/program files/apache group/apache2/conf/httd.conf),修改以下內容:

去掉以下行的註釋(將開頭的#刪除):

#LoadModule dav_fs_module modules/mod_dav_fs.so 
#LoadModule dav_module modules/mod_dav.so


在LoadModule節的最後新增以下兩行:
LoadModule dav_svn_module modules/mod_dav_svn.so 
LoadModule authz_svn_module modules/mod_authz_svn.so
 
在配置檔案的最後新增下面這些行:

<Location /svn>
DAV svn
SVNParentPath D:/SVN          
AuthType Basic 
AuthName "Subversion repositories" 
AuthUserFile D:/passwd        
#AuthzSVNAccessFile D:/svnaccessfile 
Require valid-user 
</Location>  
配置表示:你所有的版本庫將位於D:/SVN目錄下,要訪問你的版本庫可以使用這樣的
URL:http://YourIP/svn/,訪問許可權將由passwd檔案中的使用者名稱/密碼來限制。
詳細說明如下:
---------------------------------------------------------------------------
<Location /svn>
意味著可以通過像這樣的URL(http://MyServer/svn)來訪問Subversion版本庫
DAV svn
告訴Apache哪個模組負責服務像那樣的URL--在這裡就是Subversion模組
SVNListParentPath on
在Subversion 1.3及更高版本中,這個指示器使得Subversion列出由SVNParentPath指定的目錄下所有的版本庫
SVNParentPath D:/SVN
告訴Subversion在目錄D:/SVN下尋找版本庫 #(修改成你自己的目錄)
AuthType Basic
啟用基本的驗證,比如使用者名稱/密碼
AuthName "Subversion repositories"
當一個驗證對話方塊彈出時,告訴使用者這個驗證是用來做什麼的
AuthUserFile D:/passwd          #(密碼檔案,不是資料夾哦)
指定D:/passwd用為密碼檔案用來驗證使用者的使用者名稱及密碼
AuthzSVNAccessFile D:/svnaccessfile
指定D:/svnaccessfile來限定各個使用者或組在版本庫中目錄的訪問許可權
Require valid-user
限定使用者只有輸入正確的使用者名稱及密碼後才能訪問這個路徑
-----------------------------------------------------------------------------
建立passwd檔案
開啟命令列(DOS視窗CMD),
將當前目錄切換到apache2目錄(通常為c:/program files/apache group/apache2/bin),
輸入命令:
htpasswd.exe -c passwd  username  
Automatically using MD5 format.
New password: ******  (輸入密碼)
Re-type new password: ******
Adding password for user  username
copy passwd d:/        (Httpd.conf 中設定的是在D:)
重啟Apache服務。
重啟後開啟http://YourIP/svn/ 輸入密碼後,還是出錯(因為還沒有建立版本庫)
Forbidden
You don't have permission to access /svn on this server.
--------------------------------------------------------------------------------
Apache/2.0.59 (Win32) SVN/1.4.2 DAV/2 Server at 192.168.18.8 Port 80
 (3)TortoiseSVN 
 按提示安裝完成,需重啟電腦
 3.SVN專案設定
 (1).開啟資源管理器,在D:/SVN目錄下新建WWW目錄
 (2).在WWW資料夾上右擊TortoiseSVN--->Create repository here...
     (也可以通過命令的方式:到SVN的安裝BIN目錄。執行:svnadmin create D:/svn/www
     d:/svn目錄需先建好,要不會出錯:
   svnadmin: 檔案庫建立失敗
   svnadmin: 無法建立最上層目錄
  (3).然後選擇Native filesystem(FSFS)
  (4).到專案資料夾上,右擊TortoiseSVN-->import...
     在URL of repository:中輸入http://YourIP/svn/www
 (5).專案成員,可在自己機上新建一個空的專案資料夾.右擊SVN checkout...
        在提示的使用者名稱和密碼對話方塊中輸入服務端配置的使用者名稱和密碼;然後點選OK;後面對話方塊中即會顯示逐個加入的檔案和目錄資訊,最後一條顯示“Completed  At Version 1”。
       如果成功,可以在本地目錄下看到相應的程式碼檔案。選中檔案或目錄,可以進行“SVN Update”(從伺服器更新版本)和“Svn Commit”(提交更改到伺服器)操作。 
       另外,如果使用的是Netbeans等整合開發環境,裡面有可能會帶有SVN的管理工具,或者支援SVN,可以通過這些開發環境直接將專案匯入到svn中。在這裡,我將附上我的一些配置檔案:
   
passwd:
    eleven:$apr1$Xt2.....$wNLTr2fgIUC4BccjzfQ/v/
    meteor:******
    syani:******
    evergreen:******
其中××××代表密碼
[groups]
admin = eleven
developteam = syani, meteor, evergreen

svnaccessfile:
    #管理員和開發人員都具有讀寫許可權
    [/]
    @admin = rw
    danger =
    @developteam = rw

相關文章