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

- URL: https://justfly.idv.tw/ec2%e6%8a%8asvn%e6%9c%8d%e5%8b%99%e6%9e%b6%e5%88%b0http-port%e4%b8%8a/
- 日期: 2012-07-19
- 分類: 瞎子摸OS
- 標籤: EC2, Linux, SVN

原本svn就用svn://去連是一件很簡單的事情，由於最近跟日本某大電信T公司合作，T公司對於內部port的管理比較嚴格，所以希望我們在使用svn時可以把服務架到http上面，就不需要在申請使用svn預設的part。

邊查邊實作的結果，終於實作了這個要求，就順便筆記一下吧。

- 編輯/etc/svn/authz

```
[groups]
admin = justfly

[/]
* = r
@admin = rw
```

- 新增帳號（/etc/svn/account）

```
htpasswd /etc/svn/account justfly
```

- 編輯apache設定檔

```
vi /etc/httpd/conf/httpd.conf
```

加入

```
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

  DAV svn
  SVNPath /path/to/svn/repositories/tcom/
  AuthType Basic
  AuthName "SVN Repository"
  AuthUserFile /etc/svn/account
  AuthzSVNAccessFile /etc/svn/authz
  Require valid-user
```

重新啟動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。
