본문 바로가기

DevOps/Nexus

[Nexus] Nexus 3 AWS EC2 설치

반응형

Nexus 설치 요구사항

  1. 1vCPU & 2GB 메모리
  2. 22 port & 8081 포트 오픈
  3. OpenJDK 8 이상
  4. Nexus 프로세스는 root 계정이 아닌 Nexus 사용자로 실행
  5. 공식 문서 시스템 요구사항 참고
    https://help.sonatype.com/repomanager3/product-information/system-requirements

1. yum 패키지 업데이트

sudo yum update -y

 

 

2. OpenJDK 1.8 & weget 설치

sudo yum install java-1.8.0-openjdk.x86_64 -y
sudo yum install wget -y

 

 

3. Nexus 설치를 위한 디렉토리 생성

sudo mkdir /app && cd /app

 

 

4. Nexus 다운로드

sudo wget -O nexus.tar.gz https://download.sonatype.com/nexus/3/latest-unix.tar.gz

※ Nexus 다운로드 링크

https://help.sonatype.com/repomanager3/product-information/download

 

Nexus 다운로드 파일 tar 해제

sudo tar -xvf nexus.tar.gz

 

디렉토리 이름 변경

sudo mv nexus-3* nexus

 

 

5. Nexus 서비스 계정 추가 및 권한 변경

sudo groupadd -g 500 nexus
sudo useradd -u 500 -g 500 nexus

 

Nexus 디렉토리 권한 변경

sudo chown -R nexus:nexus /app/nexus
sudo chown -R nexus:nexus /app/sonatype-work

 

 

6. /app/nexus/bin/nexus.rc 파일 열기

sudo vi  /app/nexus/bin/nexus.rc

 

주석 해제 후 아래와 같은 설정

run_as_user="nexus"

 

 

7. 기본 Nexus 데이터 디렉토리를 변경

sudo vi /app/nexus/bin/nexus.vmoptions

 

-Dkaraf.data 파라미터를 수정하면 데이터 저장 디렉토리 변경 가능

-Xms2703m
-Xmx2703m
-XX:MaxDirectMemorySize=2703m
-XX:+UnlockDiagnosticVMOptions
-XX:+LogVMOutput
-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
-Dkaraf.startLocalConsole=false
-Djdk.tls.ephemeralDHKeySize=2048

-Dkaraf.data=../sonatype-work/nexus3 → -Dkaraf.data=/nexus-data

/nexus-data 디렉토리가 없으면 디렉토리 생성 필요

# mkdir /nexus_data

# chown -R nexus:nexus nexus_data

※ 설정 파일 변경시에는 항상 백업 필요

 

8. Nexus 서비스 추가

nexus systemd unit file 생성

sudo vi /etc/systemd/system/nexus.service

아래 내용 추가

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

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

[Install]
WantedBy=multi-user.target

 

 

9. Nexus 서비스 관리

sudo chkconfig nexus on
sudo systemctl start nexus

 

Nexus 서비스 기동 후 프로세스 및 서비스 포트를 확인시 8081 포트가 정상적으로 뜨지 않는것을 확인하였습니다.

ps -ef | grep nexus
nexus    19810     1 99 01:47 ?        00:00:08 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.amzn2.0.1.x86_64/jre/bin/java -server -Dinstall4j.jvmDir=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.amzn2.0.1.x86_64/jre -Dexe4j.moduleName=/app/nexus/bin/nexus -XX:+UnlockDiagnosticVMOptions -Dinstall4j.launcherId=245 -Dinstall4j.swt=false -Di4jv=0 -Di4jv=0 -Di4jv=0 -Di4jv=0 -Di4jv=0 -Xms1024m -Xmx1024m -XX:MaxDirectMemorySize=1024m -XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -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 -Dkaraf.startLocalConsole=false -Djdk.tls.ephemeralDHKeySize=2048 -Djava.endorsed.dirs=lib/endorsed -Di4j.vpt=true -classpath /app/nexus/.install4j/i4jruntime.jar:/app/nexus/lib/boot/nexus-main.jar:/app/nexus/lib/boot/activation-1.1.1.jar:/app/nexus/lib/boot/jakarta.xml.bind-api-2.3.3.jar:/app/nexus/lib/boot/jaxb-runtime-2.3.3.jar:/app/nexus/lib/boot/txw2-2.3.3.jar:/app/nexus/lib/boot/istack-commons-runtime-3.0.10.jar:/app/nexus/lib/boot/org.apache.karaf.main-4.3.6.jar:/app/nexus/lib/boot/osgi.core-7.0.0.jar:/app/nexus/lib/boot/org.apache.karaf.specs.activator-4.3.6.jar:/app/nexus/lib/boot/org.apache.karaf.diagnostic.boot-4.3.6.jar:/app/nexus/lib/boot/org.apache.karaf.jaas.boot-4.3.6.jar com.install4j.runtime.launcher.UnixLauncher start 9d17dc87 0 0 org.sonatype.nexus.karaf.NexusMain

netstat -an | grep 8081

 

로그 확인시 orientdb 버전을 지원하지 않는다고 확인되었습니다. (Amazon linux2 에서 설치 진행)

 

Database created with orientdb version not supported anymore

cd /app/sonatype-work/nexus3/log

view nexus.log

2022-11-29 01:48:14,575+0000 ERROR [FelixStartLevel]  *SYSTEM org.sonatype.nexus.orient.restore.RestoreServiceImpl - Failed transition: NEW -> STARTED
com.orientechnologies.orient.core.exception.ODatabaseException: Database created with orientdb version not supported anymore, use export+import to migrate the database^M
        DB name="component"
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.initAtFirstOpen(ODatabaseDocumentTx.java:3194)
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.open(ODatabaseDocumentTx.java:271)
        at org.sonatype.nexus.orient.DatabaseManagerSupport.connect(DatabaseManagerSupport.java:178)
        at org.sonatype.nexus.orient.DatabaseManagerSupport.createInstance(DatabaseManagerSupport.java:312)
        at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
        at org.sonatype.nexus.orient.DatabaseManagerSupport.instance(DatabaseManagerSupport.java:289)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
        at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
        at java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:290)

 

Amazon linux2 에서는 설치 파일로 Nexus 설치 지원을 하지 않아, CentOS 7 버전으로 위의 방법으로 다시 설치를 진행하였더니 에러없이 설치가 진행되었습니다.

 

Nexus 설치시 메모리 관련 로그를 확인할 수 있습니다. Nexus의 기본 메모리 설정 값이 2703m 이기 때문에, 만약 서버의 메모리가 부족하면 메모리를 증설하고, 메모리 여유가 없다면 메모리 설정 값을 조정 해야 합니다.

 

WARN  [FelixStartLevel] 

*SYSTEM com.orientechnologies.orient.core.engine.OMemoryAndLocalPaginatedEnginesInitializer 

- Not enough physical memory available for DISKCACHE

 

* 2703m → 1024m 으로 조정

sudo vi /app/nexus/bin/nexus.vmoptions

-Xms1024m
-Xmx1024m
-XX:MaxDirectMemorySize=1024m
-XX:+UnlockDiagnosticVMOptions
-XX:+UnsyncloadClass
-XX:+LogVMOutput
-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=/nexus/nexus-data
-Djava.io.tmpdir=../sonatype-work/nexus3/tmp
-Dkaraf.startLocalConsole=false

 

 

10. Nexus 접속 테스트

http://ip:8081/ 으로 접근할 수 있으며, 보안 그룹에 8081 포트 오픈 필요

nexus 를 처음 실행하면 Admin 계정으로 로그인이 필요하다.
ID: admin
Password: nexus 설치 디렉토리의 admin.password 파일에 최초 비밀번호가 저장되어 있다.

다음으로 비밀번호 재 설정 및 기타 설정을 수행

 

패스워드 재설정

Enable Anonymous Access:
 - 기본적으로 사용자들이 자격증명(credential) 없이 접속할 수 있도록 허용한다.
 - 검색, 브라우징, 컴포넌트 다운로드를 리포지토리로 부터 수행할 수 있다.
 - 조직 내 보안 규정을 고려하여 신중히 선택해야합니다.

 

Disable Anonymous Access:
 - 자격증명이 있는 사용자만이 접근할 수 있도록 제한한다.
 - 우리는 여기서 Disable Anonymous Access 를 선택하였다.

 

설정 완료

 

 

[참고]

https://devopscube.com/how-to-install-latest-sonatype-nexus-3-on-linux/

https://devocean.sk.com/blog/techBoardDetail.do?ID=163423 

https://potato-yong.tistory.com/144

반응형

'DevOps > Nexus' 카테고리의 다른 글

[Nexus] Nexus 란?  (0) 2022.11.28