Java 애플리케이션을 배포하는 방법

Java 애플리케이션을 배포하는 방법

데몬 프로세스로 실행되어야 하는 Java 애플리케이션을 만들었습니다. SysVinit를 사용하는 Amazon Linux AMI를 사용하고 있고 데몬에 이미 init 스크립트가 있어서 파일을 어디에 저장할지 약간 혼란스럽습니다.

처음에 저는 그 폴더에 일반 프로그램이 있을 것이라고 추측했기 때문에 jar그 폴더에 파일을 넣으려고 했습니다. 그러나 제 프로그램은 2개의 라이브러리를 사용하므로 실제로 는 2개의 라이브러리가 있는 1개의 파일이 있습니다./usr/binjarlib

폴더와 폴더가 같은 폴더에 있어야 하기 때문에 jar파일을 넣은 /usr/bin다음 라이브러리를 넣는 것이 걱정됩니다 . 또한 나중에 다른 프로그램에서 이러한 라이브러리를 업데이트하면 시스템이 복잡해질 수 있다고 생각합니다. 실수로 일부 기능이 손상됩니다. , 말할 것도 없이 너무 많은 파일이 사방에 흩어져 있기 때문에 상황이 번거로워지기 시작합니다./usr/libjarlib

그러나 나는 표준을 고수하는 것을 좋아하기 때문에 내 프로그램을 위한 임의의 폴더를 만들고 그 안에 필요한 모든 것을 넣고 싶지 않습니다.

Linux에 이러한 시스템을 배포하는 올바른 방법이 있습니까? 일부 라이브러리가 필요한 Java 데몬을 배포하는 가장 좋은 방법은 무엇입니까?

답변1

JAR디렉토리에 파일을 넣는 것은 /usr/bin전혀 좋은 생각이 아닙니다. 여기에는 여러 가지 이유가 있는데, 첫 번째이자 가장 중요한 것은 보안입니다. 어느 정도 애플리케이션은 격리되어야 합니다. 시스템 전체 소프트웨어와 함께 바이너리와 알 수 없거나 안전하지 않은 파일을 배치하면 공격 표면이 필요 이상으로 넓어집니다. 별도의 디렉터리를 만들면 논리적 분리, 보안 등 많은 이점이 있습니다. 최근에 읽은 책을 강력히 추천하고 싶습니다.지속적인 전달.

나의 충고:

  • 자체 홈 디렉터리를 사용하여 이 Java 애플리케이션에 대한 별도의 사용자 및 그룹을 만듭니다 app-user.
  • 거기에 모든 아티팩트를 배포하고,
  • 이 Java 애플리케이션을 실행하는 systemd 장치 또는 sysv 장치를 만들고 app-user홈 디렉터리에서 라이브러리를 로드합니다.app-user

관련 정보