0. 넥서스 저장소 란?
Nexus Repository는 Maven에서 사용할 수 있는 오픈 소스 저장소 중 하나입니다.
외부 리포지토리 접근이 어려운 경우 넥서스 리포지토리를 사내 리포지토리로 사용할 수 있으며, 팀에서 자주 사용하는 라이브러리를 넥서스 리포지토리에 업로드하여 팀 간에 공유할 수 있습니다.
Nexus Repository는 Docker 및 Helm과 같은 다양한 유형도 지원합니다.
1. 구성 요소 및 Nexus Repository 설치 파일 다운로드
Nexus Repository 설치를 거친 구성 요소는 다음과 같습니다.
버전 | |
우분투(OS) | 18.04(x64) |
연결점 | 3.45.0-01 |
자바 | 1.8 |
설치할 Nexus 버전(3.45.0-01)에는 Java 8 버전이 필요합니다.
먼저 원하는 버전의 Nexus Repository 파일을 다운로드합니다.
Ubuntu 가상 머신에서 다양한 버전의 Java를 사용하기 위해 Binary로 설치를 진행했습니다.
Binary 설치가 필요 없다면 apt를 이용하여 Java 설치를 진행하셔도 무방합니다 🙂
ORACLE 페이지에서 Openjdk-8 바이너리 파일을 다운로드합니다.
https://www.oracle.com/java/technologies/downloads/
2. Java 및 Nexus 리포지토리 설치
nexus는 루트 사용자로 실행하는 것을 권장하지 않기 때문에, 연결점 사용자를 추가합니다.
$ sudo adduser nexus
$ visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
nexus ALL=(ALL) NOPASSWD:ALL
선택한 경로에 Nexus Repository 파일의 압축을 풉니다.
나의 경우에는 /고르다 경로에 위치.
이전에 만든 연결점 사용자 권한을 변경하십시오.
$ 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
jdk가 설치된 경로를 확인하여 JAVA_HOME 환경변수 등록 후 연결점 사용자 계정의 ~/.bashrc 파일에서 등록을 진행해주세요!
Java Binary 설치를 진행하시려면 아래 글을 참고해주세요 🙂
Java 바이너리 파일 압축 해제를 진행합니다.
$ tar -xzvf jdk-8u361-linux-x64.tar.gz
# Nexus 설치 경로에 Java Binary 파일을 옮겨서 사용할 예정입니다 !
$ mv jdk1.8.0_361/ /opt/nexus/
$ chown -R nexus:nexus /opt/nexus/jdk1.8.0_361
$ 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/jdk1.8.0_361 # Java Binary 파일의 경로 입력
export PATH="$PATH:$JAVA_HOME/bin"
$ source ~/.bashrc
$ java -version
java version "1.8.0_361"
Java(TM) SE Runtime Environment (build 1.8.0_361-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.361-b09, mixed mode)
3. 넥서스 설정
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"
넥서스 포트 설정 /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
넥서스 실행 후 연결이 정상인지 확인!
$ /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에 관리자로 로그인하기 위한 초기 비밀번호는 /opt/sonatype-work/nexus3/admin.password에서 찾을 수 있습니다!
아이디 : 관리자
비밀번호 :
$ cat /opt/sonatype-work/nexus3/admin.password
c439bacf-2d4a-4200-a696-5478da9f08d2