Nexus를 사용하기 위해 공유기에서 외부로 포트포워딩을 설정하여 사용해 왔습니다. 

그러다가 Redmine이 도입되고 각각의 포트포워딩보단 하나로 합쳐야할 필요가 생겼습니다.

Nexus를 설치하는 방법은 두가지입니다.

첫째는 jetty를 포함한 설치, 두번째는 war 형태의 프로젝트로 기존 설치된 was에 추가하는 방법.

저는 첫번째 jetty를 포함한 설치로 진행했습니다.


1. Redmine ==> /

2. SVN    ==> /svn

3. Nexus  ==> /nexus


설정 및 연동해야할 부분은 위와 같습니다.


이렇게 되면 공유기 포트포워딩은 하나만 설정해도 끝납니다.


1. Redmine설치 및 SVN 연동에 대한 부분은 이전 포스팅을 참고하면 됩니다.


==> http://gubok.tistory.com/351

 ==> http://gubok.tistory.com/352

 ==> http://gubok.tistory.com/370



2. Nexus 연동

우선 nexus설치는 특별한 이상이 없는한 한번에 설치가 끝나기 때문에 이에 대한 설명은 Pass~

apache-jetty 연동방법은 크게 세가지가 있습니다. (jetty wiki 사이트에 나왔있습니다.)


1. Using Apache mod_proxy and an normal Jetty HTTP connector. 

2. Using Apache mod_proxy_ajp and the Jetty AJP connector. 

3. Using Apache mod_jk and the Jetty AJP connector. 


이중에서 첫번째 proxy를 이용한 연동방법으로 설정하도록 하겠습니다. (권장이라고 하네요.)

아래 링크는 apache 사이트에서 제공하는 mod_proxy 설정방법입니다.
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html



1번의 과정을 정상적으로 거쳤다면 연동에 필요한 xxx.so 파일은 모두 로딩되어 있다는 전제로 진행합니다.


Proxy설정을 별도의 파일로 저장해서 생성합니다.


ProxyPass /nexus http://127.0.0.1:8787/nexus

ProxyRequests On

ProxyVia On


<Proxy *>

 Order deny,allow

 Allow from all

</Proxy>


ProxyPreserveHost On

ProxyStatus On


httpd.conf 에 위의 설정파일을 include해줍니다.


# Proxy Setting for Jetty

Include conf/extra/httpd-proxy-jetty.conf



/nexus로 들어오는 요청을 :8787/nexus로 처리하겠다는 의미입니다.






소스 버전관리를 위해서 사용하는 SVN을 설치하고 이전까지는 내부 개발자용으로만 사용하느라 각 Repository 나 Project단위로 접근제어를 할일이 없었습니다.

사용성의 편의(?)를 위해 apache DAV 연동으로 계정만 주어지면 모두 접근이 가능했었기 때문입니다.

 

하지만 외부 프로젝트를 하면서 외부사람들과 교감*(?)을 하기위해 각 프로젝트별로 접근권한을 할당해야 할일이 생겼습니다.

 

svn 프로토콜을 사용하는 방식에서의 접근권한은 어렵지 않게 세팅이 가능한데, 이상하게 apache와 연동하는 http 에서의 접근권한에 대한 참고할 글은 그다지 많지 않아 한시간이나 넘는 삽질을 또 하게 되었습니다. 알면 10분도 안걸리는 일인데 말이죠.

 

이전 redmine + apache + svn 연동 설치과정에 대한 글은 다음을 참고하십시오.

http://gubok.tistory.com/352

 

개략적인 순서는 다음과 같습니다.

 

1. httpd-vhosts.conf 수정

2. access_control 파일 생성 및 수정

3. apache restart

 

1. vhosts.conf 파일 수정

기존 VirtualHost의 Location 부분에 다음 항목을 추가합니다.

SVNPathAuthz on
AuthzSVNAccessFile "D:/Redmine/subversion/svn_access_control.authz"

 

2. svn_access_control.authz 파일은 없습니다. 이름도 임의로 잡아서 생성하면 됩니다. .txt로 해도 됩니다.

저는 좀 뽀대가 있어보이려고 이름도 그렇고 확장자도 authz를 썼을 뿐입니다.

 

access_control 파일을 작성합니다.

이부분에서 좀 혼란을 겪었습니다.

 

[groups]
system= admin
team1 = user1, user2

 

[/]
* =

 

[repositoryA:/]  <== Repository 상 root를 의미합니다.
@system = rw

 

[repositoryA:/trunk/projectA]
@team1 = rw
user3 = r

 

정말 별거 없는데 한시간넘게 헤매다니... 무능한 제자신을 탓해야겠지요...

 

SVN 별로 저장소를 여러개 가져가고 또 저장소별로 프로젝트를 여러개 관리하게 되는데, 위와 같은 방법으로 규칙을 잡아서 작성하면 됩니다.

 

3. 아파치 재시작후 브라우져에서 프로젝트 URL로 접근을 시도 해봅니다.

정상으로 접근이 되면 readonly 사용자를 테스트 하기 위해 eclipse에서 테스트를 해봅니다.

commit을 하려고 하면 다음과 같은 오류(?) 메시지가 나옵니다.

 

Some of selected resources were not committed.
Authentication error.
svn: E170001: Commit failed (details follow):

svn: E170001: Commit failed (details follow):
svn: E170001: MKACTIVITY of '/svn/repositoryA/!svn/act/ae5aeaef-3e01-0010-a2b5-9eref80aae801c': 403 Forbidden (http://localhost:80

 

테스트한 svn full path는 다음과 같습니다. http://localhost/svn/repositoryA/trunk/projectA 입니다.

개인적으로 access_control url 작성시 좀 헷갈렸던 부분이라서 명시합니다.

모든 URL은 Repository 별로 [/]를 시작합니다.

 

이상입니다. 다른분들은 10분만에 모두 해결하시길...  & 도움이 되셨다면 한번씩 꾸~욱 눌러주세요. 아시죠? ㅎㅎㅎ

 

참고 : http://serverfault.com/questions/13853/how-do-i-restrict-repository-access-via-websvn

 



윈도우상에서 구동중인 svn 에 새로운 저장소를 추가한다.

도스커맨드 창에서 다음의 명령어를 수행하여 저장소를 추가한다.


1. 저장소 추가(by svnadmin create ~)

2. 하위 디렉토리 추가(svn mkdir ~ )

3. 그외 자세한 사용법은 "svnadmin or svn  help 명령어" 하면 자세히 나온다.


따라하기 (추가하려는 저장소 : test2 )


svnadmin create test2



set SVN_EDITOR=c:\windows\system32\notepad.exe


# http방식이 아닌 svn 방식으로 접속한다면 다음과 같이 지정한다.

#svn mkdir svn://localhost/test2/trunk


D:\Subversion>svn mkdir http://svn.testsvn.co.kr/svn/test2/trunk


로그 메시지가 변경되지 않았거나 지정되지 않았습니다

취소(A), 계속(C), 수정(E):

C

인증 영역(realm): <http://svn.testsvn.co.kr> SVN Repository

'Administrator'의 암호:***********

인증 영역(realm): <http://svn.testsvn.co.kr> SVN Repository

사용자명:test

'test'의 암호:****************


커밋된 리비전 1.


D:\Repository\Subversion>svn mkdir http://svn.testsvn.co.kr/svn/test2/branches


로그 메시지가 변경되지 않았거나 지정되지 않았습니다

취소(A), 계속(C), 수정(E):

C


커밋된 리비전 2.


D:\Repository\Subversion>svn mkdir http://svn.testsvn.co.kr/svn/test2/tags


로그 메시지가 변경되지 않았거나 지정되지 않았습니다

취소(A), 계속(C), 수정(E):

C


커밋된 리비전 3.