原本svn就用svn://去連是一件很簡單的事情,由於最近跟日本某大電信T公司合作,T公司對於內部port的管理比較嚴格,所以希望我們在使用svn時可以把服務架到http上面,就不需要在申請使用svn預設的part。
邊查邊實作的結果,終於實作了這個要求,就順便筆記一下吧。
- 編輯/etc/svn/authz
- 新增帳號(/etc/svn/account)
- 編輯apache設定檔
- 用瀏覽器連接
[groups] admin = justfly [/] * = r @admin = rw |
htpasswd /etc/svn/account justfly |
vi /etc/httpd/conf/httpd.conf |
加入
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <Location /svn_tcom> DAV svn SVNPath /path/to/svn/repositories/tcom/ AuthType Basic AuthName "SVN Repository" AuthUserFile /etc/svn/account AuthzSVNAccessFile /etc/svn/authz Require valid-user </Location> |
重新啟動apache!
/etc/init.d/httpd restart |
如果發現找不到mod_dav_svn.so跟mod_authz_svn.so
表示跟我一樣沒有安裝mod_dav_svn
yum -y install mod_dav_svn |
安裝後再重新啟動一次!
如果這時在瀏覽器中可以看到檔案的話(http://xxx.xxx.xx.xxx/tcom),恭喜已經成功了!
但如果跟我一樣出現Could not open the requested SVN filesystem的錯誤訊息的話,表示apache跟svn兩個權限不一致。
要麻到apache設定檔中把user跟group改成svn,要麻用chown把svn資料夾的權限改成apache。
photo by:
yukop