DevOps/CI CD

Nexus Repository 설치

journalctl 2023. 4. 15. 16:15

0. Nexus Repository 란?

Nexus Repository

Nexus Repository는 Maven에서 사용할 수 있는 오픈소스 Repository 중 하나입니다.

 

외부 Repository에 접근하기 어려운 경우 Nexus Repository를 사용하여 사내 Repository로 사용할 수 있으며, 팀에서 공통으로 사용하는 라이브러리를 Nexus Repository에 업로드하여 팀간의 공유할 수 있습니다.

 

Nexus Repository는 Docker, Helm 같이 다양한 종류도 지원합니다.



1. 구성 요소 및 Nexus Repository 설치 파일 다운로드

Nexus Repository 설치에 진행한 구성 요소는 다음과 같습니다.

  버전
Ubuntu (OS) 18.04 (x64)
Nexus 3.45.0-01
Java 1.8

 

설치할 Nexus 버전(3.45.0-01)은 Java 8 버전을 필요로 합니다.

Nexus 공식 페이지 화면 - 요구되는 Java 버전

 

 

먼저 원하는 버전의 Nexus Repository 파일을 다운로드 합니다.

https://help.sonatype.com/repomanager3/product-information/download/download-archives---repository-manager-3

 

Download Archives - Repository Manager 3

Nexus Repository OSS is distributed with Sencha Ext JS pursuant to a FLOSS Exception agreed upon between Sonatype, Inc. and Sencha Inc. Sencha Ext JS is licensed under GPL v3 and cannot be redistributed as part of a closed source work.

help.sonatype.com

Nexus 공식 페이지 화면 - Nexus Repository 파일 다운로드

 

Ubuntu 가상머신에서 여러 버전의 Java를 사용하기 위해서 Binary로 설치를 진행하였습니다.
Binary 설치가 필요하지 않다면 apt를 사용하여 Java 설치를 진행하셔도 무방합니다 :)


2. Java 및 Nexus Repository 설치

nexus는 root 사용자로 실행하는것을 권장하지 않기 때문에, nexus 사용자를 추가합니다.

$ sudo adduser nexus

$ visudo

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
nexus   ALL=(ALL)       NOPASSWD:ALL

 

Nexus Repository 파일을 원하는 경로에 압축을 해제합니다. 저의 경우는 /opt 경로에 위치하였습니다.

앞서 생성한 nexus 사용자로 권한을 변경합니다.

$ tar -xzvf nexus-3.45.0-01-unix.tar.gz

$ ls -al
drwxr-xr-x 10 root root      4096 Apr 15 06:33 nexus-3.45.0-01
-rw-r--r--  1 root root 210211563 Dec 27 22:59 nexus-3.45.0-01-unix.tar.gz
drwxr-xr-x  3 root root      4096 Apr 15 06:33 sonatype-work

$ mv nexus-3.45.0-01 /opt/nexus
$ mv sonatype-work /opt

$ chown -R nexus:nexus /opt/nexus
$ chown -R nexus:nexus /opt/sonatype-work

$ ls -l
drwxr-xr-x 10 nexus nexus 4096 Apr 15 06:33 nexus
drwxr-xr-x  3 nexus nexus 4096 Apr 15 06:33 sonatype-work

 

JAVA_HOME 환경변수를 등록하기 위해 jdk가 설치된 경로를 확인 후 root, nexus 사용자 계정에 ~/.bashrc 파일에 등록을 진행해주세요 !
Java Binary 설치를 진행할 경우 아래 글을 참고해주세요 :)
더보기

Java Binary 파일 압축 해제를 진행합니다.

$ tar -xzvf openjdk-8u42-b03-linux-x64-14_jul_2022.tar.gz

# Nexus 설치 경로에 Java Binary 파일을 옮겨서 사용할 예정입니다 !
$ mv java-se-8u42-ri/ /opt/nexus/
$ chown -R nexus:nexus /opt/nexus/java-se-8u42-ri

$ java -version
Command 'java' not found, but can be installed with:

apt install default-jre
apt install openjdk-11-jre-headless
apt install openjdk-8-jre-headless

# nexus 계정으로 접속하여 ~/.bashrc 파일에 Java 환경변수를 등록합니다.
$ su - nexus
$ vi ~/.bashrc
export JAVA_HOME=/opt/nexus/java-se-8u42-ri # Java Binary 파일의 경로 입력
export PATH="$PATH:$JAVA_HOME/bin"

$ source ~/.bashrc
$ java -version
openjdk version "1.8.0_42"
OpenJDK Runtime Environment (build 1.8.0_42-b03)
OpenJDK 64-Bit Server VM (build 25.40-b25, mixed mode)

# root 계정으로 접속하여 ~/.bashrc 파일에 Java 환경변수를 등록합니다.
$ su - root
$ vi ~/.bashrc

# 끝 하단에 추가합니다.
export JAVA_HOME=/opt/nexus/java-se-8u42-ri # Java Binary 파일의 경로 입력
export PATH="$PATH:$JAVA_HOME/bin"

$ source ~/.bashrc
$ java -version
openjdk version "1.8.0_42"
OpenJDK Runtime Environment (build 1.8.0_42-b03)
OpenJDK 64-Bit Server VM (build 25.40-b25, mixed mode)


3. Nexus 설정

Nexus가 실행될 때 사용자를 nexus로 설정하기 위해서 /opt/nexus/bin/nexus.rc 파일을 수정합니다.

vi /opt/nexus/bin/nexus.rc
# run_as_user="" 부분의 앞에 주석을 꼭 제거한 후 저장해주세요. !
run_as_user="nexus"

$ cat /opt/nexus/bin/nexus.rc
run_as_user="nexus"

 

Nexus의 Port 설정은 /opt/nexus/etc/nexus-default.properties 파일에서 할 수 있습니다.

$ vi /opt/nexus/etc/nexus-default.properties

... 생략 ...
## DO NOT EDIT - CUSTOMIZATIONS BELONG IN $data-dir/etc/nexus.properties
##
# Jetty section
application-port=8081 # Port 설정 부분 !
application-host=0.0.0.0
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
nexus-context-path=/

 

Ubuntu 가상머신이 부팅 시 자동으로 실행될 수 있도록 /etc/init.d에 등록합니다.

$ sudo ln -s /opt/nexus/bin/nexus /etc/init.d/nexus

 

nexus 계정으로 접속하여 Nexus 실행 후 정상적으로 접속되는지 확인합니다 !

$ su - nexus
$ /etc/init.d/nexus start
Starting nexus

$ netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      13546/java
tcp        0      0 127.0.0.1:32851         0.0.0.0:*               LISTEN      13546/java
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      -

$ curl -v http://localhost:8081
* Rebuilt URL to: http://localhost:8081/
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 8081 (#0)
> GET / HTTP/1.1
> Host: localhost:8081
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200
< Date: Sat, 15 Apr 2023 07:06:56 GMT
< Server: Nexus/3.45.0-01 (OSS)
< X-Content-Type-Options: nosniff
< X-Frame-Options: DENY
< X-XSS-Protection: 1; mode=block
< Content-Type: text/html
< Last-Modified: Sat, 15 Apr 2023 07:06:56 GMT
< Pragma: no-cache
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate, post-check=0, pre-check=0
< Expires: 0
< Content-Length: 8920
<
... 생략 ...

 

브라우저를 이용하여 Nexus에 접속하여 확인합니다. :)

Nexus 메인 페이지 화면

 

Nexus에 관리자로 로그인하기 위해서 초기 비밀번호는 /opt/sonatype-work/nexus3/admin.password에서 확인할 수 있습니다. !

ID : admin

PW : 

$ cat /opt/sonatype-work/nexus3/admin.password
c439bacf-2d4a-4200-a696-5478da9f08d2