2009-12-22 3 views
4

Windows Server 2008에서 Apache2의 SVN 웹 액세스를 다른 쓰기 권한으로 구성하려고합니다.다른 쓰기 권한에 대해 SVN 웹 액세스를 구성하는 방법은 무엇입니까?

나는 다음 아파치의 conf 있습니다

<Location /svn> 
SVNParentPath "E:\SVN" 

DAV svn 
SVNListParentPath on 
AuthType Basic 
AuthName "Subversion repositories" 
Require valid-user 

AuthUserFile svn-auth.txt 
AuthzSVNAccessFile svn-acl.txt 
</Location> 

<Location /svn/foobar> 
SVNParentPath "E:\SVN\foobar" 

DAV svn 
SVNListParentPath on 
AuthType Basic 
AuthName "Subversion repositories" 
Require valid-user 

AuthUserFile svn-auth.txt 
AuthzSVNAccessFile svn-acl.txt 
</Location> 

E:\SVN 모든 저장소의 루트 디렉토리입니다 - 나는 모두를 나열합니다. 그것은 E:\SVN\test을 포함 - 프로젝트 저장소입니다.

E:\SVN\foobar - E:\SVN\foobar\fooE:\SVN\foobar\bar - 프로젝트 리포지토리가 포함 된 하위 루트 디렉토리입니다.

파일 svn-auth.txthtpasswd.exe

파일 svn-acl.txt하여 쓰기 액세스 규칙이 포함되어 생성 된 사용자 암호의 수를 포함하지만, 그것은 작동하지 않습니다! 이다 SVN에 대한 아파치 설정에서 SVNPathSVNParentPath 사이에 다른 어떤

[/] 
* = rw 

이벤트는 단지 하나의 글로벌 권한을 포함? 어쩌면 말이 될 수 있을까요?

내가 그룹 또는 사용자 추가하면 물론 너무 작동하지 않습니다

[groups] 
full = abatishchev 

[/] 
* = r 
@full = rw 
abatishchev = rw 

내가 403 Forbiden을 얻고있다.

내가 뭘 잘못하고 있니? 티아!

업데이트

:

The URI does not contain the name of a repository. [403, #190001] 

이 무엇을 의미 수 : 내가하는 error.log에서 레코드를 발견?

+0

이것은 serverfault.com에 있어야합니다 – Gonzalo

+0

불행히도 나는 대답을 찾지 못했습니다 .. – abatishchev

+0

serverfault.com의 링크는 무엇입니까? –

답변

2

아파치 설정을

<Location /svn> 

<Location /svn/> 

수정이 귀하의 질문에 직접 대답하지 않고, 항상 대단한

+2

ServerFault에서 다른 PR을 읽음으로써 오류 메시지의 출처가 어디인지 깨달았습니다. 너무 나쁜 것은 여기에 넣지 않았기 때문입니다. 'RedirectMatch^(/ svn) $ $ 1 /'지시문을 사용하면이 문제를 피할 수 있으며'http : // /svn' 다음에 슬래시가 자동으로 추가됩니다 (수정 된 예제 참조). – RedGlyph

5

SVNPath은 하나의 저장소 용이고 SVNParentPath은 여러 저장소가있는 루트 디렉토리 용입니다. 따라서 http://<host>/svn/foobar에 액세스하려고 시도하면 첫 번째와 충돌하기 때문에 Apache 구성 파일에서 두 번째 위치를 제거해야합니다.

액세스 및 인증 파일의 절대 경로를 지정하고, Apache 서비스가 상위 디렉토리 및 모든 저장소에 대한 읽기/쓰기 액세스 권한을 갖고 액세스 및 인증 파일에 대한 읽기 액세스 권한을 갖고 있는지 확인해야합니다. 수동 설치. 예를 들어

:

<Location /svn> 
    RedirectMatch ^(/svn)$ $1/ 
    SVNParentPath E:\SVN 

    DAV svn 
    SVNListParentPath on 
    AuthType Basic 
    AuthName "Subversion repositories" 
    Require valid-user 

    AuthUserFile C:\SVN\conf\svn-auth.txt 
    AuthzSVNAccessFile C:\SVN\conf\svn-acl.txt 
</Location> 

당신은 Version Control with Subversion에 필요한 모든 정보를 (아파치 구성 설정이 최근 변경하지 않은하지만이 최신 버전에 대한 링크입니다) 찾을 수 있습니다.

그런 다음 그룹 및 사용자, 리포지토리에 대한 전역 또는 개별 권한을 지정할 수 있어야합니다.

이 예에서
[groups] 
full = abatishchev, anotherguy 
main = abatishchev 

[/] 
* = r 
@full = rw 
abatishchev = rw 

[foobar:/] 
* = 
@main = rw 
full = r 

[otherproject:/] 
@main = rw 
full = r 

, 당신은 다음, [/]에 (아래 모든 것을) foorbar에 대한 우선합니다 특정 규칙을 일반적인 규칙을 설정하고, otherproject : 그 예는 당신이 준 이름으로, here을 찾을 수 있습니다. 저장소의 개별 디렉토리에 대한 특정 규칙을 지정할 수도 있습니다.

+0

고마워! e : \ svn에 e : \ svn \ foo (repo) 및 e : \ svn \ bar (repos 번호가있는 디렉토리)가 포함될 수 있으므로 내 보조 Apache 설정 항목이 있습니다. 그래서 모든 repos root 디렉토리는 자신의 위치 엔트리를 필요로합니다. – abatishchev

+1

아파치'Location' 지시어의 정규 표현식을 사용하여 2 차 루트를 제외 할 수 있습니다. 아마도 둘 다를 분리하고 충돌을 피할 수 있습니다. 잠시 후 어색하게 될 수있는 몇 개의 서브 디렉토리가 필요한 경우 :'svnserve' SVN 서버는 임의의 저장소 구조를 허용하여 설정을 훨씬 간단하게 만듭니다 (서브 디렉토리를 가질 수 있고, 지정할 필요가 없습니다). 또한 무겁지 않고 네트워크 대역폭을 줄입니다. – RedGlyph

+0

당신의 아이디어는 매우 시원하지만 불행히도 이것은 도움이되지 못했습니다. 루트 아래의 repo는 (e : \ svn \ some-proj) 작동하지만 서브 루트 아래에 repo - "요청한 SVN 파일 시스템을 열 수 없습니다"(e : \ svn \ some-dir \ some-proj)가 아닙니다. 설명 된대로이 태스크를 구현하는 다른 Apache 구성 트릭이 있습니까? – abatishchev

2

디렉토리 목록에 403 오류의 문제를 변경 당신이 지금하고있는 것처럼 바닥에서 물건을 배우고,하지만 당신은 내가 VisualSVN server을 언급 줄 알았는데 윈도우 머신에있어보고. 그것은 포인트 앤 클릭 방식으로, SVN 바이너리에 래퍼를 구성하여 웹 액세스를 제공하는 것이 매우 좋습니다.

+0

고마워요! 나는 그것을 시도했다. 불행히도 저장소를위한 하나의 루트 만 지원합니다. 루트 아래의 모든 폴더는 이미 저장소 여야합니다. 하지만 나는 하위 디렉토리 (범주)를 가지고 있으며 저장소와 위치 만 가지고있다. – abatishchev

관련 문제