Setting

폐쇄망 Nexus 구축하기

SHXL2 2024. 10. 25. 17:08
반응형

오늘은 폐쇄망엥서 사용할 Nexus 서버 구축에 대해 알아보겠습니다.

서버 환경은 Linux Rocky9 입니다. Nexus는 JDK를 기반으로 돌아가기 때문에 Java 설치가 필요합니다. Java가 설치되어 있지 않은 경우 이 글을 확인해 주세요.

 


Nexus

Nexus는 Sonatype에서 개발한 저장소 관리 툴로, 개발자들이 소프트웨어 패키지를 쉽게 저장, 공유할 수 있도록 돕는 레포지토리 매니저입니다. Nexus를 이용하여 빌드 아티팩트(jar, war)와 의존성을 관리하고 이를 개발 환경에서 사용할 수 있습니다.

 

Nexus를 사용하게 된 이유는 다음과 같습니다.

외부망과 폐쇄망 간의 중간 지대인 DMZ에 Nexus 서버를 배치하여 필요한 의존성을 가져오게 하고, 폐쇄망에 있는 개발 환경에서는 Nexus 서버만을 통해 의존성을 관리할 수 있게 하여 보안과 개발 효율성을 모두 충족할 수 있습니다.

 

1. Nexus 설치하기

1-1. 다운로드

# nexus 디렉토리 생성
mkdir /home/nexus

# nexus 다운로드
wget https://download.sonatype.com/nexus/3/nexu-3.70.3-01-java8-unix.tar.gz

 

직접 설치하기

 

1-2. 압축 해제

tar -xvf nexus-3.70.3-01-java8-unix.tar.gz

 

1-3. 서버 실행

# 방화벽 8081포트 허용
firewall-cmd --zone=public --add-port=8081/tcp

cd nexus-3.70.3-01/bin
./nexus run

 

Nexus의 기본 포트는 8081입니다. 포트 정보를 변경하고 싶은 경우 아래 경로 접속 후 포트를 수정할 수 있습니다.

vi /home/nexus/nexus-3.70.3-01/etc/nexus-default.properties

 

 

2. 설정

서버가 실행되면 접속IP:8081로 접속합니다. 우측 상단에 Sign In을 통해 로그인을 합니다.

 

관리자 계정(admin)의 패스워드는 아래 경로에서 확인할 수 있습니다. 패스워드 확인 후 신규 패스워드로 변경합니다.

 

접근 제한을 설정합니다.

Enable anonymous access :  자격증명없이 접속 허용

Disable anonymous access : 자격증명된 사용자만 접근 가능

 


Repository 타입

Repository 타입에는 proxy, group, hosted가 있습니다.

  • proxy : 외부 레포지토리를 프록시 합니다. 내부 환경에서 외부로 직접 접근이 불가능한 경우 프록시를 활용할 수 있습니다.
  • group : 여러 레포지토리를 그룹핑합니다.
  • hosted : 실제 현재 nexus에 라이브러리를 제공합니다. 자체 개발 라이브러리를 업로드하고 공유할 때 hosted 레포지토리를 설정합니다.

 

3. Nexus Repository 연결하기

본 예제에서는 proxy 레포지토리를 연결해 테스트를 진행합니다.

proxy 레포지토리는 Maven 기본 저장소인 repo1.maven.org/maven2/에서 의존성을 가져옵니다. (repo.maven.org는 Maven Central의 공식 엔드포인트이며, repo1.maven.org는 이 저장소의 별칭으로 사용되는 도메인입니다)

 

테스트 프로젝트 생성 후 maven/settings.xml 파일에 아래 내용을 추가합니다.

Local maven repository 기본 경로

  • window : C:\Users\계정명\.m2
  • mac : ~/.m2

 

settings.xml

  <servers>
    <server>
    	<id>nexus</id>
    	<username>admin</username>
    	<password>접속패스워드</password>
    </server>
  </servers>
  
  <mirrors>
  	<mirror>
  		<id>nexus-repo</id>
  		<mirrorOf>external:http:*</mirrorOf>
  		<url>http://NEXUS서버IP:8081/repository/maven-central/</url>
  		<blocked>false</blocked>
  	</mirror>
  	<!--
    <mirror>
      <id>maven-default-http-blocker</id>
      <mirrorOf>external:http:*</mirrorOf>
      <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
      <url>http://0.0.0.0/</url>      
    </mirror>
    -->
  </mirrors>

 

프로젝트의 pom.xml에 아래와 같이 repositories를 추가합니다.

pom.xml

<repositories>
    <repository>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.org/maven2/</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <releases>
            <enabled>false</enabled>
        </releases>
    </repository>
    <repository>
        <id>public</id>
        <url>http://NEXUS서버IP:8081/repository/maven-central/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

 

기본 Maven 경로인 https://repo.maven.org/maven2를 사용하지 않기 위해 snapshots, releases에 enabled를 false로 설정하고, Nexus repository를 추가합니다.

이후 Maven - cleanMaven - install을 진행해보면 아래와 같이 Nexus 서버로부터 의존성을 가져오게 됩니다.

 

참고문서 
 

nexus 3 설치하기 – [일반 설치]

nexus3는 다양한 레포지토리를 사용할 수 있는 사설 저장소 이다. maven, docker, pypi, apt, yum 다양한 패키지 저장소를 한 곳에서 관리가 가능하다는 장점을 가지고 있다. 목차 nexus3 일반 설치 – OS에

showinfo8.com

반응형