Nexus 설치 · 5 min read · Nov 27, 2025

우분투 20.04에 Nexus Repository Manager 설치 및 구성하는 방법

Nexus는 전체 소프트웨어 개발 생명주기를 보호하는 플랫폼을 제공하는 리포지토리 관리자입니다. 의존성을 수집하고 관리할 수 있으며 소프트웨어 배포를 쉽게 만들어줍니다. 모든 구성 요소, 바이너리 및 빌드 아티팩트의 단일 소스입니다. Gradle, Ant, Maven 및 Ivy를 지원하며, 개발자가 바이너리, 컨테이너, 조립품 및 완제품을 통해 구성 요소를 관리할 수 있도록 합니다. 또한 LDAP 및 Atlassian Crowd와 같은 기존 사용자 및 인증 시스템과 Nexus를 통합할 수 있습니다.

이 튜토리얼에서는 우분투 20.04에 Nexus 리포지토리 관리자를 설치하는 방법을 보여줍니다.

전제 조건

  • 우분투 20.04가 실행되는 서버.
  • 서버에 구성된 루트 비밀번호.

시작하기

시작하기 전에 시스템 패키지를 최신 버전으로 업데이트해야 합니다. 다음 명령어를 사용하여 업데이트할 수 있습니다:

apt-get update -y

서버가 업데이트되면 다음 단계로 진행할 수 있습니다.

Java 설치

Nexus는 Java 기반이므로 시스템에 Java 8 버전을 설치해야 합니다. 다음 명령어로 설치할 수 있습니다:

apt-get install openjdk-8-jdk -y

Java가 설치되면 다음 명령어로 설치된 Java 버전을 확인할 수 있습니다:

java -version

다음과 같은 출력이 표시되어야 합니다:

openjdk version "1.8.0_282"
OpenJDK Runtime Environment (build 1.8.0_282-8u282-b08-0ubuntu1~20.04-b08)
OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)

Java가 설치되면 다음 단계로 진행할 수 있습니다.

Nexus 설치

시작하기 전에 Nexus를 실행할 별도의 사용자를 생성해야 합니다. 다음 명령어를 실행하여 생성할 수 있습니다:

useradd -M -d /opt/nexus -s /bin/bash -r nexus

다음으로, nexus 사용자가 비밀번호 없이 모든 사용자로 sudo를 실행할 수 있도록 허용합니다. 다음 명령어를 실행하여 수행할 수 있습니다:

echo "nexus ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/nexus

다음으로, Nexus를 위한 디렉토리를 생성하고 다음 명령어로 Nexus의 최신 버전을 다운로드합니다:

mkdir /opt/nexus  
wget https://sonatype-download.global.ssl.fastly.net/repository/downloads-prod-group/3/nexus-3.29.2-02-unix.tar.gz

다운로드가 완료되면 다음 명령어를 실행하여 다운로드한 파일을 /opt/nexus 디렉토리에 추출합니다:

tar xzf nexus-3.29.2-02-unix.tar.gz -C /opt/nexus --strip-components=1

다음으로, 다음 명령어를 실행하여 nexus 디렉토리에 적절한 소유권을 설정합니다:

chown -R nexus:nexus /opt/nexus

다음으로, nexus.vmoptions 구성 파일을 편집하고 최대 메모리 크기를 정의합니다:

nano /opt/nexus/bin/nexus.vmoptions

Java 최대 메모리 크기를 설정하고 “../sonatype-work”를 “./sonatype-work”로 교체합니다:

-Xms1024m
-Xmx1024m
-XX:MaxDirectMemorySize=1024m

-XX:LogFile=./sonatype-work/nexus3/log/jvm.log
-XX:-OmitStackTraceInFastThrow
-Djava.net.preferIPv4Stack=true
-Dkaraf.home=.
-Dkaraf.base=.
-Dkaraf.etc=etc/karaf
-Djava.util.logging.config.file=/etc/karaf/java.util.logging.properties
-Dkaraf.data=./sonatype-work/nexus3
-Dkaraf.log=./sonatype-work/nexus3/log
-Djava.io.tmpdir=./sonatype-work/nexus3/tmp

파일을 저장하고 닫은 후 nexus.rc 파일을 편집하고 사용자로 실행하도록 정의합니다:

nano /opt/nexus/bin/nexus.rc

다음 줄의 주석을 제거하고 nexus 사용자로 변경합니다:

run_as_user="nexus"

파일을 저장하고 닫은 후 다음 명령어로 Nexxus 서비스를 시작합니다:

sudo -u nexus /opt/nexus/bin/nexus start

다음으로, 다음 명령어로 Nexus를 확인합니다:

tail -f /opt/nexus/sonatype-work/nexus3/log/nexus.log

다음과 같은 출력이 표시되어야 합니다:

2021-02-23 12:20:51,839+0000 INFO  [jetty-main-1]  *SYSTEM com.softwarementors.extjs.djn.servlet.DirectJNgineServlet - Servlet GLOBAL configuration: registryConfiguratorClass=
2021-02-23 12:20:51,853+0000 INFO  [jetty-main-1]  *SYSTEM com.softwarementors.extjs.djn.jscodegen.CodeFileGenerator - Creating source files for APIs...
2021-02-23 12:20:52,582+0000 INFO  [jetty-main-1]  *SYSTEM org.sonatype.nexus.siesta.SiestaServlet - JAX-RS RuntimeDelegate: org.sonatype.nexus.siesta.internal.resteasy.SisuResteasyProviderFactory@649a69ca
2021-02-23 12:20:52,611+0000 INFO  [jetty-main-1]  *SYSTEM org.jboss.resteasy.plugins.validation.i18n - RESTEASY008550: Unable to find CDI supporting ValidatorFactory. Using default ValidatorFactory
2021-02-23 12:20:53,811+0000 INFO  [jetty-main-1]  *SYSTEM org.sonatype.nexus.siesta.SiestaServlet - Initialized
2021-02-23 12:20:53,817+0000 INFO  [jetty-main-1]  *SYSTEM org.sonatype.nexus.repository.httpbridge.internal.ViewServlet - Initialized
2021-02-23 12:20:53,852+0000 INFO  [jetty-main-1]  *SYSTEM org.eclipse.jetty.server.handler.ContextHandler - Started o.e.j.w.WebAppContext@7a65358d{Sonatype Nexus,/,file:///opt/nexus/public/,AVAILABLE}
2021-02-23 12:20:53,883+0000 INFO  [jetty-main-1]  *SYSTEM org.eclipse.jetty.server.AbstractConnector - Started ServerConnector@764a4935{HTTP/1.1, (http/1.1)}{0.0.0.0:8081}
2021-02-23 12:20:53,884+0000 INFO  [jetty-main-1]  *SYSTEM org.eclipse.jetty.server.Server - Started @37529ms
2021-02-23 12:20:53,884+0000 INFO  [jetty-main-1]  *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer - 
-------------------------------------------------

Started Sonatype Nexus OSS 3.29.2-02

-------------------------------------------------

이 시점에서 Nexus가 시작되었으며 포트 8081에서 수신 대기 중입니다. 다음 명령어로 확인할 수 있습니다:

ss -altnp | grep 8081

다음과 같은 출력이 표시되어야 합니다:

LISTEN    0         50                 0.0.0.0:8081             0.0.0.0:*        users:(("java",pid=5548,fd=795)) 

다음으로, 다음 명령어로 Nexus 서비스를 중지합니다:

/opt/nexus/bin/nexus stop

Nexus를 위한 Systemd 서비스 파일 생성

다음으로, Nexus 서비스를 관리하기 위해 systemd 서비스 파일을 생성해야 합니다. 다음 명령어로 생성할 수 있습니다:

nano /etc/systemd/system/nexus.service

다음 줄을 추가합니다:

[Unit]
Description=nexus service
After=network.target

[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/opt/nexus/bin/nexus start
ExecStop=/opt/nexus/bin/nexus stop
User=nexus
Restart=on-abort

[Install]
WantedBy=multi-user.target

파일을 저장하고 닫은 후 다음 명령어로 systemd 데몬을 다시 로드합니다:

systemctl daemon-reload

다음으로, 다음 명령어로 Nexus 서비스를 시작하고 시스템 재부팅 시 자동으로 시작되도록 설정합니다:

systemctl start nexus  
systemctl enable nexus

다음 명령어로 Nexus 서비스의 상태를 확인할 수도 있습니다:

systemctl status nexus

다음과 같은 출력이 표시되어야 합니다:

? nexus.service - nexus service
     Loaded: loaded (/etc/systemd/system/nexus.service; disabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-02-23 12:22:49 UTC; 15s ago
    Process: 6181 ExecStart=/opt/nexus/bin/nexus start (code=exited, status=0/SUCCESS)
   Main PID: 6368 (java)
      Tasks: 40 (limit: 4691)
     Memory: 642.9M
     CGroup: /system.slice/nexus.service
             ??6368 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -server -Dinstall4j.jvmDir=/usr/lib/jvm/java-8-openjdk-amd64/jre -Dexe4j.mo>

Feb 23 12:22:49 ubuntu2004 systemd[1]: Starting nexus service...
Feb 23 12:22:49 ubuntu2004 nexus[6181]: Starting nexus
Feb 23 12:22:49 ubuntu2004 systemd[1]: Started nexus service.
lines 1-13/13 (END)

작업이 완료되면 다음 단계로 진행할 수 있습니다.

Nexus를 위한 Nginx를 리버스 프록시로 구성

다음으로, Nginx를 설치하고 Nginx를 리버스 프록시로 구성해야 합니다. 먼저, 다음 명령어로 Nginx 패키지를 설치합니다:

apt-get install nginx -y

Nginx가 설치되면 다음 명령어로 Nginx 가상 호스트 구성 파일을 생성합니다:

nano /etc/nginx/conf.d/nexus.conf

다음 줄을 추가합니다:

upstream backend {
  server 127.0.0.1:8081;
}

server {
    listen 80;
    server_name nexus.example.com;

    location / {
        proxy_pass http://backend/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;
    }
}

파일을 저장하고 닫은 후 다음 명령어로 Nginx 구성 파일을 확인합니다:

ginx -t

다음과 같은 출력이 표시되어야 합니다:

ginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

마지막으로, 다음 명령어로 Nginx 서비스를 재시작하여 변경 사항을 적용합니다:

systemctl restart nginx

다음 명령어로 Nginx의 상태를 확인할 수도 있습니다:

systemctl status nginx

다음과 같은 출력이 표시되어야 합니다:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-02-23 12:24:57 UTC; 4s ago
       Docs: man:nginx(8)
    Process: 7106 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 7107 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 7123 (nginx)
      Tasks: 3 (limit: 4691)
     Memory: 3.5M
     CGroup: /system.slice/nginx.service
             ??7123 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??7124 nginx: worker process
             ??7125 nginx: worker process

Feb 23 12:24:57 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server...
Feb 23 12:24:57 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.

Nexus 웹 인터페이스에 접근

Nexus 웹 UI에 접근하기 전에 다음 명령어로 Nexus 관리자 비밀번호를 출력합니다:

cat /opt/nexus/sonatype-work/nexus3/admin.password

다음과 같은 출력이 표시되어야 합니다:

b7c899cf-c6d3-4d11-a4cb-9a44e5d1787e

이제 웹 브라우저를 열고 URL http://nexus.example.com을 사용하여 Nexus 웹 UI에 접근합니다. 다음 페이지로 리디렉션됩니다:

Nexus GUI

이제 로그인 버튼을 클릭합니다. Nexus 로그인 페이지로 리디렉션됩니다:

로그인

관리자 사용자 이름과 비밀번호를 입력하고 로그인 버튼을 클릭합니다. Nexus 설정 페이지가 표시되어야 합니다:

설정 마법사

다음 버튼을 클릭하여 계속 진행합니다. 다음 페이지가 표시되어야 합니다:

새 비밀번호 설정

새 비밀번호를 설정하고 다음 버튼을 클릭합니다. 다음 페이지가 표시되어야 합니다:

익명 접근 구성

“익명 접근 허용” 옵션을 선택하고 다음 버튼을 클릭합니다. 다음 페이지가 표시되어야 합니다:

설정 완료

완료 버튼을 클릭하여 설정을 완료하고 설정 기어 아이콘을 클릭합니다. Nexus 리포지토리 대시보드가 표시되어야 합니다:

Nexus Repository Manager 대시보드

결론

축하합니다! Nginx를 리버스 프록시로 사용하여 우분투 20.04 서버에 Nexus 리포지토리 관리자를 성공적으로 설치했습니다. 질문이 있으시면 언제든지 문의해 주세요.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.