[EC2]把SVN服務架到http port上

LINEで送る
[`evernote` not found]


原本svn就用svn://去連是一件很簡單的事情,由於最近跟日本某大電信T公司合作,T公司對於內部port的管理比較嚴格,所以希望我們在使用svn時可以把服務架到http上面,就不需要在申請使用svn預設的part。
邊查邊實作的結果,終於實作了這個要求,就順便筆記一下吧。

  1. 編輯/etc/svn/authz
  2. [groups]
    admin = justfly
     
    [/]
    * = r
    @admin = rw
  3. 新增帳號(/etc/svn/account)
  4. htpasswd /etc/svn/account justfly
  5. 編輯apache設定檔
  6. 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

    安裝後再重新啟動一次!

  7. 用瀏覽器連接
  8. 如果這時在瀏覽器中可以看到檔案的話(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