• Home
  • About
    • lahuman photo

      lahuman

      열심히 사는 아저씨

    • Learn More
    • Facebook
    • LinkedIn
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

Nexus 설치 및 설정

23 Feb 2022

Reading time ~2 minutes

Nexus 설치 및 설정

설치 전 알아야 할 사항 정리

  1. 2022-01-23 기준 JDK8만 지원(다른버젼으로 설치 불가)
  2. 권장 CPU가 4코어 이상(최소 2코어에서 동작)
  3. 메모리 2GB 이상(EC2 서버의 경우 4GB(medium) 이상 권장)
  4. 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 오류가 발생합니다.

참고자료

  • Nexus 3.x를 이용한 사설 NPM 저장소 만들기
  • AWS Simple Storage Service (S3)


nexusrepository Share Tweet +1