웹사이트 검색

Ubuntu 22.04에 Nexus Repository Manager를 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 22.04(Jammy Jellyfish)
  • Ubuntu 20.04(Focal Fossa)

이 페이지에서

  1. 전제 조건
  2. 자바 OpenJDK 8 설치
  3. 시스템 설정
  4. Nexus Repository Manager 설치
  5. Nexus를 SystemD 서비스로 실행\n
  6. 역방향 프록시로 Nexus 실행\n
  7. Nexus Repository Manager 설치
  8. 결론

Nexus는 DevOps 세계에서 가장 인기 있는 리포지토리 관리자 중 하나입니다. 빌드 아티팩트를 저장하고 검색할 수 있으며 Visual Studio 및 Jenkins와 같은 CI 및 IDE 통합 도구를 통해 아티팩트를 푸시하고 풀하는 기능도 제공합니다.

Nexus 리포지토리 관리자에는 상용 버전과 오픈 소스 버전의 두 가지 버전이 있습니다. PyPi, Docker, Yum, APT, Helm, npm, Go, R 등과 같은 많은 형식을 지원합니다.

Nexus를 리포지토리로 사용하면 개발자가 중앙 집중식 리포지토리 관리자에서 패키지를 가져오고 관리할 수 있으며, 이는 개발자 팀에게 모든 패키지에 대한 단일 소스를 제공합니다.

이 튜토리얼에서는 Ubuntu 22.04 서버에 Nexus Repository Manager를 설치하는 방법을 설명합니다. 이 튜토리얼에는 리버스 프록시로 사용될 Java OpenJDK 및 Nginx 웹 서버와 같은 일부 패키지 설치도 포함되어 있습니다.

전제 조건

시작하기 전에 다음 요구 사항이 필요합니다.

  • Ubuntu 22.04 서버.
  • sudo/administrator가 활성화된 루트가 아닌 사용자.\n
  • Ubuntu 서버 IP 주소를 가리키는 도메인 이름(프로덕션용).\n

자바 OpenJDK 8 설치

Nexus Repository Manager에는 Java OpenJDK 및 JRE v8이 필요했습니다. 기본 Ubuntu 리포지토리는 여러 Java 버전을 제공하므로 이제 Ubuntu 리포지토리에서 Java OpenJDK 및 JRE v8을 설치합니다.

패키지를 설치하기 전에 아래의 apt 명령을 실행하여 리포지토리 패키지 인덱스를 업데이트하고 새로 고칩니다.

sudo apt update

이제 아래의 apt 명령을 통해 Java OpenJDK 8을 설치합니다. 설치를 확인하라는 메시지가 표시되면 Y를 입력하고 ENTER를 눌러 계속 진행합니다.

sudo apt install openjdk-8-jdk

Java가 설치되면 다음 명령을 사용하여 시스템에서 Java 버전을 확인하십시오.

java -version

다음 스크린샷에 출력이 표시됩니다.

시스템 설정

Nexus를 설치하려면 유효한 셸을 사용하여 새로운 전용 Linux 사용자를 생성해야 하며 하드 및 소프트 제한에 대한 최대 개방 파일을 65536으로 설정해야 합니다.

다음 명령을 실행하여 이름이 nexus인 Nexus 전용 사용자를 새로 만듭니다.

sudo useradd -d /opt/nexus -s /bin/bash nexus
sudo passwd nexus

다음으로 아래 명령을 사용하여 ulimit를 65536으로 설정합니다. 이는 현재 시스템의 시스템에만 일시적으로 영향을 미칩니다. 영구적으로 만들려면 다음 단계에서 수행할 새 구성 파일을 만들 수 있습니다.

ulimit -n 65536

ulimit를 영구적으로 설정하려면 nano 편집기를 사용하여 새 구성 파일 /etc/security/limits.d/nexus.con을 만드십시오.

sudo nano /etc/security/limits.d/nexus.conf

파일에 다음 구성을 추가합니다. 이 예에서는 값이 65536인 특정 사용자 넥서스에 대한 ulimit를 설정합니다.

nexus - nofile 65536

파일을 저장하고 완료되면 편집기를 종료하십시오.

모든 기본 요구 사항이 준비되고 구성되면 Ubuntu 시스템에 Nexus Repository Manager를 설치할 준비가 된 것입니다.

넥서스 저장소 관리자 설치

Nexus Repository Manager는 Sonatype 공식 다운로드 페이지에서 다운로드할 수 있는 배포 패키지를 통해 설치할 수 있습니다. 이 글을 쓰는 시점에서 Nexus의 최신 버전은 v3.41.1입니다. 이제 nexus Repository Manager 배포 패키지를 다운로드하고 nexus 설치를 구성합니다.

아래와 같이 wget 명령을 통해 Nexus Repository Manager 패키지를 다운로드합니다. 다운로드 프로세스가 완료되면 현재 작업 디렉토리에 nexus-3.41.1-01-unix.tar.gz 파일이 표시됩니다.

wget https://download.sonatype.com/nexus/3/nexus-3.41.1-01-unix.tar.gz

이제 아래 tar 명령을 통해 nexus-3.41.1-01-unix.tar.gz 파일을 추출합니다. 그리고 nexus-3.41.1-01과 sonatype-work라는 두 개의 디렉토리가 있어야 합니다.

nexus-3.41.1-01 디렉토리는 Nexus 패키지의 기본 디렉토리이고 sonatype-work 디렉토리는 Nexus의 기본 작업 디렉토리입니다.

tar xzf nexus-3.41.1-01-unix.tar.gz

그런 다음, 다음 명령을 사용하여 추출된 디렉토리를 /opt로 이동하십시오. Nexus 패키지 디렉토리는 /opt/nexus이고 Nexus 작업 디렉토리는 /opt/sonatype-work입니다.

mv nexus-3.41.1-01 /opt/nexus
mv sonatype-work /opt/

마지막으로 아래 chown 명령을 통해 두 디렉토리의 소유권을 사용자 및 그룹 넥서스로 변경합니다.

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

다음으로 일부 Nexus 구성 파일을 편집하여 Nexus 설치를 설정합니다.

nano 편집기를 사용하여 /opt/nexus/bin/nexus.rc 파일을 엽니다.

sudo nano /opt/nexus/bin/nexus.rc

run_as_user 옵션의 주석을 제거하고 값을 nexus로 변경합니다. 이 구성을 사용하면 시스템 사용자 nexus로 Nexus 애플리케이션을 실행하게 됩니다.

run_as_user="nexus"

파일을 저장하고 완료되면 편집기를 종료하십시오.

다음으로 nano 편집기를 사용하여 /etc/nexus/bin/nexus.vmoptions 구성 파일을 열어 Nexus의 최대 힙 메모리를 설정합니다.

sudo nano /etc/nexus/bin/nexus.vmoptions

다음 옵션에서 Nexus 설치의 기본 최대 메모리 힙을 변경합니다. 서버에 있는 메모리에 따라 크기를 1024m로 변경할 수 있습니다.

-Xms1024m
-Xmx1024m
-XX:MaxDirectMemorySize=1024m

파일을 저장하고 완료되면 편집기를 종료하십시오.

이제 nano 편집기를 사용하여 구성 파일 /opt/sonatype-work/nexus3/etc/nexus.properties를 편집합니다.

sudo nano /opt/sonatype-work/nexus3/etc/nexus.properties

옵션 application-host 옵션의 주석을 제거하고 값을 127.0.0.1로 변경합니다. 즉, localhost 또는 IP 주소 127.0.0.1에서 Nexus를 실행하게 됩니다.

application-host=127.0.0.1

파일을 저장하고 편집기를 종료합니다.

이제 Nexus Repository Manager가 다운로드 및 구성되었습니다. 다음으로 Nexus용 시스템 서비스 파일을 설정합니다.

Nexus를 SystemD 서비스로 실행

기본 설치에서 Nexus Repository Manager는 /opt/nexus/bin 디렉토리에서 사용할 수 있는 바이너리 명령 nexus를 통해 수동으로 실행할 수 있습니다. 그러나 Nexus를 보다 쉽게 관리할 수 있도록 Nexus용 시스템 서비스 파일을 설정합니다.

systemd 서비스 파일로 Nexus를 실행하면 systemctl 명령을 통해 nexus 프로세스를 관리할 수 있습니다.

이제 nano 편집기를 사용하여 새 서비스 파일 /etc/systemd/system/nexus.service를 만듭니다.

sudo /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

파일을 저장하고 완료되면 편집기를 종료하십시오.

다음으로 다음 명령을 실행하여 시스템 관리자를 다시 로드하고 Nexus용 새 서비스 파일을 적용합니다.

sudo systemctl daemon-reload

아래의 systemctl 명령을 통해 nexus.service를 시작하고 활성화합니다. Nexus Repository Manager는 이제 로컬 IP 주소 127.0.0.1에서 기본 포트 8081로 시작합니다. 또한 nexus.service는 시스템 부팅 시 자동으로 실행됩니다.

sudo systemctl start nexus.service
sudo systemctl enable nexus.service

마지막으로 다음 명령을 실행하여 nexus.service를 확인하고 서비스가 실행 중인지 확인합니다.

sudo systemctl status nexus.service

Nexus가 시스템 서비스로 실행되면 이제 Nexus에 대한 역방향 프록시를 설정할 수 있습니다.

리버스 프록시로 Nexus 실행

Nexus Repository Manager는 이제 로컬 IP 주소 127.0.0.1에서 기본 포트 8081로 실행 중입니다. 네트워크 외부에서 액세스할 수 있도록 하려면 표준 HTTP/HTTPS 포트에서 실행되는 Nginx 역방향 프록시를 사용합니다.

다음 apt 명령을 실행하여 Nginx 웹 서버를 Ubuntu 시스템에 설치합니다. 설치를 확인하라는 메시지가 표시되면 Y를 입력하고 ENTER를 눌러 계속 진행합니다.

sudo apt install nginx

Nginx가 설치되면 다음 systemctl 명령을 실행하여 nginx 서비스를 확인하고 확인합니다. nginx 서비스가 활성화되고 시스템 부팅 시 자동으로 실행되는 것을 볼 수 있습니다. 그리고 nginx 서비스의 상태가 실행 중입니다.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

다음으로 nano 편집기를 사용하여 새 서버 블록 구성 /etc/nginx/sites-available/nexus을 만듭니다.

sudo nano /etc/nginx/sites-available/nexus

다음 Nginx 구성을 파일에 추가하고 도메인 이름을 변경해야 합니다.

upstream nexus3 {
  server 127.0.0.1:8081;
}

server {
    listen 80;
    server_name nexus.hwdomain.io;

    location / {
        proxy_pass http://nexus3/;
        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;
    }
}

파일을 저장하고 편집기를 종료합니다.

다음으로 다음 명령을 실행하여 sites-enabled 디렉토리에 대한 구성 파일의 심볼릭 링크를 생성하여 Nexus에 대한 서버 블록 구성을 활성화합니다. 그런 다음 Nginx 구성을 확인하여 Nginx가 올바르게 구성되었는지 확인합니다.

sudo ln -s /etc/nginx/sites-available/nexus /etc/nginx/sites-enabled/
sudo nginx -t

Nginx 구성이 제대로 구성된 경우 "test is successfull"과 같은 출력 메시지가 표시되어야 합니다.

마지막으로 다음 명령을 실행하여 Nginx 서비스를 다시 시작하고 Nexus에 대한 새 서버 블록 구성을 적용합니다.

sudo systemctl restart nginx

이제 Nginx 웹 서버를 Ubuntu 시스템의 Nexus Repository Manager에 대한 리버스 프록시로 설정했습니다. 이제 도메인 이름을 통해 Nexus 설치에 액세스할 수 있습니다.

넥서스 저장소 관리자 설치

이 시점에서 Nexus 저장소 관리자는 Nginx 리버스 프록시에서 실행됩니다. 그리고 설치 도메인 이름을 통해 액세스할 수 있습니다.

웹 브라우저를 열고 Nexus 설치의 도메인 이름(예: http://nexus.hwdomain.io)을 방문합니다. 그러면 아래와 같이 기본 Nexus 페이지가 표시됩니다.

Nexus 관리자 대시보드에 로그인하려면 "로그인" 버튼을 클릭하세요.

Nexus의 기본 관리자 비밀번호는 기본 사용자 이름이 admin인 /opt/sonatype-work/nexus3/admin.properties 파일에 저장됩니다.

터미널로 돌아가서 다음 명령을 실행하여 Nexus 로그인을 위한 기본 비밀번호를 가져옵니다. 그런 다음 Nexus의 기본 비밀번호를 복사합니다.

cat /opt/sonatype-work/nexus3/admin.properties

그런 다음 사용자 관리자를 입력하고 Nexus 비밀번호를 붙여넣습니다. 그런 다음 "로그인"을 클릭합니다.

이제 Nexus Repository Manager의 설정 마법사가 나타납니다. 계속하려면 "다음"을 클릭하십시오.

Nexus 설치를 위한 강력한 새 비밀번호를 입력하고 반복합니다. 그런 다음 "다음"을 다시 클릭하십시오.

\익명 액세스\ 구성의 경우. "익명 액세스 비활성화" 옵션을 선택하고 "다음"을 클릭하십시오.

이제 "마침"을 클릭하여 Nexus 구성을 완료하세요.

Nexus 구성이 완료되면 이제 Nexus 관리 대시보드가 표시됩니다. 아래 스크린샷에서 Nexus Repository Manager를 볼 수 있습니다.

마지막으로 상단의 상태 확인 버튼을 통해 Nexus 설치를 확인합니다. 이제 모든 시스템 상태가 녹색으로 선택되어 있는지 확인하십시오. 이는 Nexus 설치 및 구성이 성공적임을 의미합니다.

결론

이 자습서에서는 Ubuntu 22.04 서버에 Nexus Repository Manager를 설정했습니다. 또한 Nginx 웹 서버를 Nexus의 리버스 프록시로 구성했습니다. 이제 프로젝트의 리포지토리를 Nexus 리포지토리 관리자에 추가하고 프로젝트 소스를 중앙 집중화하여 애플리케이션을 쉽게 빌드하고 개발자에게 배포할 수 있습니다.

프로덕션에서 Nexus를 실행하는 데 관심이 있는 경우 Letsencrypt를 통해 SSL/TLS로 넥서스에 대한 보안을 설정할 수 있습니다.