Nexus 설치 및 설정
설치 전 알아야 할 사항 정리
- 2022-01-23 기준
JDK8
만 지원(다른버젼으로 설치 불가) - 권장 CPU가 4코어 이상(최소 2코어에서 동작)
- 메모리 2GB 이상(EC2 서버의 경우 4GB(medium) 이상 권장)
- DBMS는 PRO 버젼만 지원(h2, postgresql)
설치 하기
AWS EC2 medium 이상의 환경에서 설치를 추천합니다. 또한 AWS Linux에서 진행하였습니다.
# JDK 1.8 설치
$ sudo yum install java-1.8.0-openjdk-devel.x86_64
# version 확인
$ java -version
# JAVA_HOME 위치 확인
$ which javac
/usr/bin/javac
$ readlink -f /usr/bin/javac
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.amzn2.0.2.x86_64/bin/javac
$ sudo vi /etc/profile
# 가장 하단에 아래 JAVA_HOME 추가
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.amzn2.0.2.x86_64
# JAVA_HOME 반영
$ source /etc/profile
$ echo $JAVA_HOME
# 최신 버젼 다운
$ wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz
# 다운로드 받은 파일 압축 해제
$ tar xzvf latest-unix.tar.gz
$ ls
latest-unix.tar.gz nexus-3.37.3-02 sonatype-work
# 실행 디렉토리로 이동
$ cd nexus-3.37.3-02/
# run으로 할 경우 로그가 화면에 보여서 오류시 확인 가능
$ ./bin/nexus run
# 성공적으로 기동하였을 경우 http://IP:8081/ 로 접근
# ID : admin
# 비밀번호는 아래 숨겨져 있음
$ cat /home/ec2-user/sonatype-work/nexus3/admin.password
# 이후 서비스 백그라운드 기동
$ ./bin/nexus start
npm repoistory 설정
blob 만들기
가장 먼저 Nexus Repoisoty를 저장할 물리 저장소를 생성해야 합니다.
Blob Stores
에서 Create Blob Store
버튼을 클릭해서 생성합니다.
type
은 2가지를 제공하는데, 하나는 File이고 다른 하나는 S3(AWS) 입니다.
File일 경우 큰 문제없이 처리가 가능합니다.
S3일 경우 IAM에서 사용자를 만들고 정책을 설정해야 합니다. AWS Simple Storage Service (S3)
기본으로 제공되는 File과 S3를 추가한 목록의 예제 입니다.
Repository 만들기
Repositrory는 많은 포멧을 제공합니다.
각 포멧의 저장소는 3가지 type
이 존재 합니다.
- proxy : 외부의 다른 경로를 proxy하는 역할
- hosted : 자체 모듈 저장소
- group : proxy 와 hosted 들을 묶을 수 있는 집단으로 나열하는 순서가 라이브러리 우선 탐색
먼저 Create repository 버튼을 눌러 npm(hosted) 를 선택하고 다음 선택하여 자체 모듈 저장소를 생성합니다.
Repository > Repositories > Select Recipe > npm (proxy)
- Name : npm-registry
- Remote storage : https://registry.npmjs.org/
- Blob store : s3-repository
Repository > Repositories > Select Recipe > npm (hosted)
- Name : npm-private
- Blob store : s3-repository
Repository > Repositories > Select Recipe > npm (group)
- Name : npm-group
- Blob store : s3-repository
- Members : npm-registry, npm-private
Roles 추가
Security > Roles > Create role
npm-client
과 npm-publisher
를 생성합니다.
사용자 (npm-client)
- Role ID, Role name : npm-client
- Privilleges
- nx-repository-view-npm-*-browse
- nx-repository-view-npm-*-read
배포자 (npm-publisher)
- Role ID, Role name : npm-publisher
- Privilleges
- nx-repository-view-npm-npm-private-*
- Roles : npm-client
계정 추가
이 부분은 편의에 따라서 설정하면 됩니다.
Security > Users > Create local user
사용자
- ID : client
- PW : client
- Role : npm-client
배포자
- ID : npm
- PW : npm
- Role : npm-publisher
Realms 설정
Security > Realms
npm Bearer Token Realm
을 Active 영역으로 이동 해야 합니다. 이 설정을 해주지 않으면 npm publish
시 publish Failed PUT 401
오류가 발생합니다.