Nexus 설치 요구사항
- 1vCPU & 2GB 메모리
- 22 port & 8081 포트 오픈
- OpenJDK 8 이상
- Nexus 프로세스는 root 계정이 아닌 Nexus 사용자로 실행
- 공식 문서 시스템 요구사항 참고
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/
'DevOps > Nexus' 카테고리의 다른 글
[Nexus] Nexus 란? (0) | 2022.11.28 |
---|