...
Table of Contents |
---|
제품 종류 선택
넥서스는 오픈소스 버전(Nexus OSS)과 상용 버전(Nexus Pro) 두 개의 제품으로 나뉘어 있다. 오픈 소스 버전은 버전 1.9 까지는 AGPL 이었으므로 기업 내부 프로젝트에서 사용할 경우 라이선스 이슈가 발생할 여지가 있었다.
...
다만 상용 버전은 오픈소스보다 더 풍부한 기능을 제공하므로 다음과 같은 기능이 필요하다면 상용 버전 사용도 고려해 볼 만하다.
고가용성 제공
Pro 버전은 다수의 인스턴스를 통해 고가용성을 제공하므로 대규모의 팀이나 팀원이 여러 지역에 흩어져 있는 프로젝트라면 네트워크의 장애나 특정 저장소 다운등의 이상 상황에서도 동작할 수 있다.
...
Pro 버전은 저장소에 등록된 아티팩트중 기업에서 사용할 경우 문제가 되는게 있는지 확인하고 자세한 정보를 출력하는 기능을 제공하고 있다.
아티팩트 취약점 관리
개발한 제품은 보안에 신경써서 견고한 제품을 만들었는데 사용한 아티팩트에 취약점이 있다면 제품 자체의 보안성도 저하되게 된다.
...
Pro 버전은 현재 저장소에 등록된 아티팩트중 OSVDB(Open Sourced Vulnerability Database) 나 CVE(Common Vulnerabilities and Exposures) 에 취약점이 등록된 제품을 찾아서 보고해 주므로 제품의 보안 강화에 도움을 줄 수 있다.
SSO(single Sign On) 지원
LDAP 이나 atlassian Crowd 등의 솔루션을 통한 SSO 를 지원하므로 계정 및 권한 관리를 손쉽게 할 수 있다.
그외에 NET 플랫폼 지원, OSGi 지원, 기술 지원등의 기능이 제공된다.
Scroll ignore |
---|
http://www.sonatype.com/nexus/why-nexus-pro/nexus-pro-features http://books.sonatype.com/nexus-book/reference/intro-sect-pro.html
There are many benefits to using open source software and Nexus OSS is no different. Small teams with simple repository management requirements are happy using the open source version.
Then maybe it's time to look at going Pro. Read the top '10 Reasons to Go Pro' and see how you can start achieving greater value from your repository manager today. Interested in trying Nexus Pro for yourself? Download our 14 day trial now. |
...
이제 어떤 제품을 사용할 지 결정했다면 설치를 진행해 보자. 오픈소스와 상용 버전은 배포하는 URL 만 다르고 설치 과정은 동일하므로 이 책에서는 오픈소스 버전 설치에 대해서만 설명하겠다.
사전 준비 사항
넥서스는 별도의 DB 를 사용하여 정보를 관리하지 않는다. 모든 설정과 데이타는 파일 시스템에 저장하며 효율적인 검색을 위해 오픈 소스 검색 엔진인 Lucene 을 사용하여 인덱싱한다.
...
Scroll ignore |
---|
https://support.sonatype.com/entries/24901442-Sonatype-Nexus-System-Requirements |
넥서스는 패키지에 Jetty 라는 경량 WAS 를 내장하고 있으므로 별도의 WAS 가 필요없다. 기본 사용 포트는 8081 이므로 일반 사용자로 구동하는게 바람직하다.
...
tar 로 압축을 해제한다.
Panel tar zxvf nexus-2.7.2-bundle.tar.gz
압축이 해제된 폴더로 이동한다.
Panel cd nexus-2.7.2-03
- ls 를 해보면 여러 개의 서브 디렉터리가 있는게 보일 것이다. 중요한 디렉터리들은 다음과 같다.
- bin : 넥서스 실행 스크립트(nexus)가 위치한다.
- conf : 넥서스 설정 파일(nexus.properties)과 jetty 설정 파일이 위치한다.
- logs : 넥서스 실행 로그가 저장된다. 로그 파일명은 wrapper.log 이다.
- nexus: 실제 넥서스 어플리케이션이다.
...
설정 및 구동
넥서스를 구동하기 전에 먼저 구동 환경을 설정해 보자. 설정할 것은 많지 않지만 중요한 설정이 있다. 설정 파일은 conf/nexus.properties 이므로 이 파일을 선호하는 에디터로 열어 보자.
...
- application-port=8081 - 넥서스가 사용할 포트이다. 기본 포트는 8081 이다.
- nexus-webapp-context-path=/nexus - 넥서스의 웹 어플리케이션 컨텍스트 경로이다. 기본 값은 nexus 이며 다음과 같이 연결해야 넥서스를 사용할 수 있다.
http://servername/nexus
필자는 nexus.example.com 등의 도메인을 부여하고 바로 http://nexus.example.com 으로 연결하는 것을 선호한다. 이럴 경우 컨텍스트 경로를 다음과 같이 nexus 부분을 제거해야 한다.
nexus-webapp-context-path=/ - nexus-work=${bundleBasedir}/../sonatype-work/nexus - 넥서스의 실제 저장소 데이타와 메타 데이타가 저장되는 경로이다.
넥서스 프로그램과 데이타를 분리한 이유는 이렇게 하면 프로그램의 갱신과 변경이 쉽고 데이타 백업과 복구가 용이하기 때문이다.
기본 설정은 넥서스 설치의 바로 윗 경로에 sonatype-work 이라는 디렉터리를 만들고 여기에 메타 데이타를 저장하는 것이다. 다른 경로에 넥서스 데이타를 저장하고 싶은 경우 이 설정을 변경해 주면 된다.
이 폴더는 중요한 폴더이므로 임의로 수정/삭제하면 안 된다.
필자는 넥서스의 데이타는 /var/sonatype-work 디렉터리 밑에 저장하고 있다. 이럴 경우 설정을 다음과 같이 변경해야 한다.
nexus-work=/var/sonatype-work/nexus
...
이제 기본 설정은 끝났으니 구동해 보자. 구동은 bin/nexus 스크립트로 가능하며 구동시에는 start 옵션을, 정지시에는 stop 옵션, 재구동시에는 restart 옵션을 주면 된다.
...
Note |
---|
nexus-webapp-context-path=/nexus 를 수정하지 않았다면 index.html 을 nexus/index.html 로 수정해야 정상 동작한다. |
아파치 웹서버와 연동
넥서스를 http://nexus.example.com:8081/ 와 같이 사용할 경우 8081 포트를 오픈해야 하고 또 개발자들이 포트를 기억해야 하지만 보통 도메인 이름은 기억해도 넥서스가 8081 포트에 떠 있다는 사실을 기억하기 쉽지 않다.
...
전 장의 톰캣 부분에서 설명한 아파치와 연계 부분을 되돌려 보자. mod_jk 는 톰캣 전용이므로 사용할 수 없으므로 아파치 웹서버와 넥서스를 연동하려면 mod_proxy 가 유일한 대안이다.
아파치 웹서버의 가상 호스트 설정을 통해 넥서스와 연동해 보자. 다음 가상 호스트 설정을 아파치 설정 파일에 추가하자.
...
명확하게 넥서스에만 연결 가능하도록 http_port_t 컨텍스트에 8081 포트를 추가해 보자.
Panel |
---|
semanage port -m -p tcp -t http_port_t 8081 |
...
이제 service httpd restart 로 아파치 웹서버를 재시작하고 웹브라우저로 연결하면 다음과 같은 화면이 보인다면 정상적으로 설치된 것이다.
SSL 연동
여러 이유로 넥서스에 SSL 로 연결하고 싶을 수가 있다. 아파치 웹서버는 SSL 에서도 가상 호스트가 가능하므로 위 설정을 다음과 같이 변경하면 된다. 이왕이면 mod_rewrite 를 사용하여 HTTP 로 들어온 클라이언트는 모두 HTTPS 로 전환하도록 하자.
...
이 설정이 빠지면 넥서스의 모든 링크가 http 이므로 제대로 동작하지 않으므로 https 로 넥서스에 연결하려면 설정하도록 하자.
아파치를 재구동하여 http://nexus.example.com 에 연결하면 자동으로 https://nexus.example.com 으로 전환되는 것을 확인할 수 있을 것이다.
설치후 할 일
넥서스가 정상적으로 설치되었다면 꼭 해줘야할 기본적인 설정이 있다.
관리자 암호 변경
가장 먼저 해야 할 일은 관리자 암호 변경이다. 기본 관리자 계정은 admin 이고 암호는 admin123 이다. 우측 상단의 Log In 을 클릭하고 관리자로 로그인해 보자.
...
그리고 하단에 표시되는 사용자 정보 화면에서 이름과 이메일 주소도 수정해 주자.
SMTP 서버 설정
넥서스는 사용자 암호 리셋이 이메일로 전달하므로 이 기능을 사용하려면 이메일 서버를 설정해야 한다. 좌측의 Administration-> Server 를 선택한후에 SMTP 정보를 설정하자.
...
설정이 끝났다면 Test SMTP settings 를 클릭하여 정상 동작 여부를 확인해 보자.
HTTP/HTTPS Proxy 설정
넥서스는 주기적으로 외부에 있는 저장소에 연결하여 변경된 아티팩트를 가져와야 한다. 넥서스가 설치된 서버가 보안 문제때문에 직접 외부에 연결하지 못하고 포워드 프록시를 사용한다면 프록시 설정을 해주어야 외부에서 아티팩트를 가져올 수 있다.
Server 메뉴에서 중간 부분에 설정이 있으므로 이런 환경에서 넥서스를 사용한다면 설정해 주자.
deploy 계정 암호 변경
넥서스 설치시 admin 과 함께 deployment 라는 계정이 기본 생성된다. 이 계정은 넥서스에 아티팩트를 올리는데 사용하는 계정으로 기본 암호는 deployment123 이다. 아무나 아티팩트를 올리거나 삭제할 수 있으므로 기본 암호를 변경하자.
저장소 관리
저장소 관리는 넥서스의 가장 중요한 기능중 하나이다. 먼저 넥서스가 제공하는 저장소의 종류에 대해 알아보도록 하자.
저장소의 종류
프록시 저장소(Proxy Repository)
프록시 저장소는 메이븐 중앙 저장소등 원격지에 있는 저장소를 미러링한다. 넥서스는 기본적으로 3개의 원격지 저장소가 등록되어 있다.
아파치 재단의 스냅샷 아티팩트를 미러링한다.
Codehaus Snapshots
Codehaus 프로젝트의 스냅샷 아티팩트를 미러링한다.
Central
중앙 저장소는 릴리스 아티팩트를 포함하는 저장소로 메이븐 중앙 저장소라고도 한다. 메이븐에 기본 포함되어 있으므로 저장소를 특별하게 지정하지 않으면 이 저장소에 연결하게 된다.
주소는 http://repo1.maven.org/maven2/ 이다.
...
호스트 저장소
호스트 저장소는 기업용 사설 저장소이다. 넥서스는 기본적으로 3개의 호스트 저장소가 설정되어 있다.
3rd Party
메이븐 중앙 저장소에 없는 아티팩트를 올리기 위한 저장소이다. 기업에서 구매한 상용 라이브러리나 특정 벤더의 JDBC 드라이버등을 이 저장소에 올리고 사용하면 된다.
Releases
회사 내부에서 만든 아티팩트를 보관하는 저장소로 릴리스 저장소를 통해 다른 개발자나 프로젝트 팀과 공유 및 협업할 수 있다.
Snapshots
회사 내부에서 만든 아티팩트중 릴리스 되기전 개발 단계의 아티팩트를 보관한다.
가상 저장소(Virtual Repository)
가상 저장소는 다른 유형의 저장소의 아답터로 동작한다. 넥서스는 기본적으로 메이븐 1 형식의 저장소를 메이븐 2 형식의 저장소로 변환하는 기능을 제공하고 있다.
그룹 저장소(group Repository)
그룹 저장소는 넥서스가 제공하는 기능으로서 저장소의 종류는 아니다. 다만 위에서 설명한 여러 종류의 저장소를 논리적으로 묶어서 하나의 저장소처럼 사용할 수 있는 기능을 제공한다.
기본 탑재된 호스트 저장소(3개)와 프록시 저장소(3개)를 프로젝트에서 모두 사용하는 경우를 생각해 보자. 저장소마다 고유의 URL 이 있으므로 메이븐등의 빌드 툴에서 총 6개의 저장소 URL 을 설정해야 한다.
하지만 그룹 저장소 기능을 사용하여 6개의 저장소를 하나의 저장소로 묶으면 빌드 툴에는 그룹 저장소의 URL만 설정하면 되며 향후 저장소가 추가/변경되어도 메이븐 설정은 변경하지 않아도 되니 매우 편리하게 사용할 수 있다.
넥서스에는 Public Repositories 라는 이름의 그룹 저장소가 기본 설정되어 있으며 이 저장소에는 프록시 저장소 하나(메이븐 중앙 저장소), 호스트 저장소 3개 총 4개의 저장소가 포함되어 있다.
저장소 설정
이제 관리자로 로그인하여 저장소를 설정해 보자. 저장소 목록은 좌측의 Views/Repositories 메뉴에서 Repositories를 선택하면 된다. 관리자일 경우 상단의 저장소 목록을 클릭하면 하단에 여러 개의 탭이 표시된다.
Repository
저장소의 이름이 표시되는 컬럼이다. 그룹 저장소는 볼드체로 표시된다.
...
Repository Status
저장소의 서비스 상태를 표시한다. In Service 면 정상적으로 서비스되는 상태이다. 그룹 저장소는 논리적 저장소이므로 해당 컬럼을 표시하지 않는다.
Repository Path
HTTP로 저장소에 바로 연결할 수 있는 URL 을 의미한다. 이 URL 은 메이븐등의 빌드툴에 저장소 설정할 때 꼭 필요한 중요한 컬럼이다.
상단의 저장소 목록에서 저장소를 선택하고 마우스 우클릭을 하면 팝업 메뉴가 표시되며 여러 가지 관리 기능을 수행할 수 있다.
Expire Cache
저장소의 캐쉬를 만료시킨다.
Rebuild Metadata
호스트 저장소의 메타 데이타를 리빌드한다. 저장소의 스토리지내에서 직접 아티팩트를 변경했을 경우등에 사용하면 된다.
Block Proxy / Allow Proxy
프록시 저장소의 프록시 기능을 허용/거부한다.
Put Out Of Service / Put in Service
저장소의 상태를 변경한다. 해당 저장소가 보관된 스토리지를 이동한다거나 할 경우등 운영 작업시 사용할 수 있다.
Repair Index / Update Index
저장소의 인덱스를 복구하거나 갱신한다.
이제 하단의 설정 항목을 살펴보자. 다양한 설정이 있지만 넥서스 사용시 꼭 필요한 항목만 알아 보자. 설정은 저장소가 프록시인지 호스트 인지에 따라 약간 다르다.
...
True 일 경우 이 저장소의 URL 을 퍼블리싱하므로 외부에서 URL 로 접근이 가능하다.
이제 기본 포함된 호스트 저장소인 Central 을 클릭해 보자
...
- Ignore - 체크섬이 잘못되도 무시한다.
- Warn - 로그 파일에 경고 메시지를 남긴다.
- StrictIfExists - 체크섬 파일이 있을 경우에만 계산한 체크섬과 저장소의 체크섬이 일치하지 않을 경우 캐싱하지 않는다.
- Strict - 계산한 체크섬과 저장소의 체크섬이 일치하지 않을 경우나 체크섬 파일이 없다면 캐싱하지 않는다.
다음은 캐시 관련 설정이다.
Not Found Cache TTL
넥서스가 원격 저장소에서 아티팩트를 못 찾았을 경우 설정한 시간이 지난후에 재시도한다. 기본 값은 24시간이다.
Artifact Max Age
원격 저장소에서 새 버전을 다운로드 받기전 아티팩트의 최대 시간을 설정한다. 릴리스 저장소일 경우 -1 이며 스냅샷은 24시간이다.
Metadata Max Age
넥서스는 원격 저장소에서 설정한 시간이 지나면 메타 데이타를 다운로드 받는다. 기본 설정은 24시간이다.
...
저장소에 아티팩트 올리기
메이븐을 통해 저장소에 아티팩트를 디플로이할 수 있지만 넥서스 관리자에서도 할 수 있다. 업로드는 호스트 저장소만 가능하다. MariaDB JDBC 를 3rd party 저장소에 디플로이해보자.
- 관리자로 로그인한후에 저장소 목록중 3rd party를 클릭하여 하단에 설정 화면을 띄운다.
- GAV(Group, Artifact, Version) Definition 탭에서 GAV Parameters 를 선택하고 GAV와 Packaing 을 다음과 같이 설정한다.
- Group: org.mariadb.jdbc
- Artifact: mariadb-java-client
- Version: 1.1.7
- Packaging: jar 선택
- Select Artifact(s) to Upload... 를 클릭하고 다운로드받은 mariadb jar 파일을 선택한다.
- Add Artifact 버튼을 클릭하여 선택한 아티팩트를 추가한다.
하단의 Upload Artifact(s) 를 클릭하면 아티팩트가 업로드된다.
추가한 아티팩트는 Browse Index 탭에서 확인해 볼수 있다.
만약 방금 추가한 아티팩트가 보이지 않으면 Refresh 를 누르면 된다.
또 아티팩트를 클릭하면 우측에 Maven 탭에서 메이븐에 연동하기 위한 XML 정보를 볼수 있으며 Artifact 탭을 누르면 다운로드도 받을수 있고 삭제도 가능하다.
추가된 아티팩트는 파일 시스템에 저장되므로 ls 명령어를 통해서도 확인해 볼 수 있다. ls 명령어로 저장소의 파일 시스템을 보면 아티팩트 추가를 확인할 수 있다.
ls -l ../sonatype-work/nexus/storage/thirdparty/org/
이 때문에 넥서스를 백업할 경우 파일 시스템내 프록시 저장소는 제외해도 문제가 없다.
Scroll ignore |
---|