Daily Develope

[Nexus] Nexus를 활용한 Ubuntu 패키지 저장소 구축 및 사용 본문

카테고리 없음

[Nexus] Nexus를 활용한 Ubuntu 패키지 저장소 구축 및 사용

noggame 2023. 11. 13. 07:43

의의

다운로드 속도나 비공개 패키지 등 환경 조건에 따라서 패키지 저장소를 별도 구축해야하는 경우가 있다. 일반적으로 패키지 저장소는 서버 형태로 배포되기에, 본 게시글에서는 Linux 및 Container를 활용한 Nexus 구축 방법에 대해 정리하고있다.

구축환경

  • OS : Ubuntu
  • Client : Nexus Container (with Docker)
  • Proxy : NginX
  • (편의상 샘플코드의 sudo 생략)

절차

1) Neuxs 설치 (Package Repository)

  1. Docker Image 다운로드
docker pull sonatype/nexus3:latest
  1. Container 생성
docker run -d -p 8081:8081 --name nexus -v /some/dir/nexus-data:/nexus-data sonatype/nexus3:latest

# -d : 백그라운드 실행
# -p : local의 8081 포트와 nexus container의 8081 포트 연결
# --name : Container 이름
# -v : local의 /some/dir/nexus-data 폴더와 nexus container의 /nexus-data 연결 (재실행되는 경우 기존 패키지 유지를 위해 필요)
  1. 기타
  • Container 생성시 오류가 발생하는 경우 "docker logs nexus" 명령으로 로그 확인
  • local의 폴더(volume)를 연결한 경우 경우에 따라 접근권한 문제가 발생할 수 있음에 주의 (해당 문제 발생시 755 권한 부여)

2) NginX 설치 (Proxy)

Proxy의 경우 Ubuntu Host 환경에 설치를 예시로 진행

  1. OS에 NginX 설치
apt-get update
apt-get install nginx
  • 설치 확인
systemctl status nginx
  1. 포트 얀결
  • /etc/nginx/sites-available/default 파일을 아래와 같이 수정
# Host에 8081 포트 연결 요청시 Local(Container)의 8081 포트로 대신 연결하도록 설정

server{
    listen 8081;
    listen [::]:8081;

    # ...(중략)...

    location / {

        # 패킷 헤더 설정
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;

        # 로컬 8081 포트로 연결
        proxy_pass http://127.0.0.1:8081;
    }
}
  1. 적용
systemctl reload nginx

3) Neuxs 설정

  1. Nexus 접속 (아래 둘 중 하나)
  1. 초기 admin 비밀번호 설정
  2. blob 신규 생성
  • admin 로그인
  • 상단 톱니바퀴 클릭
  • 좌측 [Repository] - [Blob Stores] 클릭
  • [Create Blob Store] 클릭
  • Type을 File로 선택하고 Blob 이름 입력 후 저장 (Save)
  1. repository 신규 생성
  2. kakao의 apt repository로 연결하는 것을 예시로 진행
  • admin 로그인
  • 상단 톱니바퀴 클릭
  • 좌측 [Repository] - [Repositories] 클릭
  • [Create repository] 클릭
  • apt (proxy) 클릭
  • repository 설정
    • Name 항목에 Repository 이름 입력
    • Distibution 항목에 Repository 별칭 입력 (예. OS 버전명 기재 xenial, bionic, focal, etc)
    • Proxy의 Remote storage 항목에 카카오 Repository인 http://mirror.kakao.com/ubuntu/ 를 입력
  • Blocked 및 Auto blocking enabled 비활성화
  • 저장 (Save)

Nexus Repository 연결 (Ubuntu 예시)

OS의 기본 package repository 변경

  1. Nexus 접속 및 좌측 Browse 에서 앞서 생성한 Reposisory 확인 및 URL copy 클릭&복사
예) http://127.0.0.1/repository/ubuntu/
  1. 연결하려는 ubuntu기반 guest os에서 repository 설정
cd /etc/apt
vi sources.list
  1. sources.list 파일에서 기술된 주소를 1번 과정에서 복사한 주소로 대체

package repository 초기화

기존 package 및 목록 삭제

apt clean
rm -rf /var/lib/apt/lists/*

package 연결 확인

apt-get update
Comments