상황

Restfull으로 개발된 SpringBoot 애플리케이션을 AWS EC2에 배포하였다.

어 그런데 일정 시간이 지나면 자동으로 연결이 끝어지면서 서버가 종료하게 된다.

학교 선배님에게 듣기로는 서버는 절대 죽어서는 안되고 계속 돌아가야 한다고 하여 방법을 찾게 되었다.

 

nohup, disown 명령어

// 공통 명령어
bashCopy code
nohup command-to-be-run &

// 포그라운드 프로세스 Spring jar파일 기준 방법
nohup java -jar ~.jar &
// 백그라운드 프로세스 기준 
disown

해당 nohup: ignoring input ~ 메시지가 뜨면 성공

nohup은 "no hangup"을 의미하며, 프로세스를 시작할 때 사용된다. 이는 터미널 세션 종료 시에 신호를 무시하도록 프로세스에 지시하는 것을 의미한다. & 기호는 명령어는 해당 프로세스를 백그라운드에서 실행하도록 한다.

disown 은 bash 셸의 내장 명령으로, 이미 실행 중인 백그라운드 프로세스에 대해 사용되며 현재 셸의 작업 목록에서 작업을 제거한다. disown이 실행되면, 해당 프로세스는 셸에서 분리되어 사용자가 로그아웃하더라도 계속 실행되게 된다.

따라서 위 명령어는 ~.jar를 실행하고, 이 프로세스를 백그라운드에서 계속 실행하도록 하며, 터미널이나 쉘이 닫혀도 종료되지 않도록 한다.

요약: 프로그램을 터미널 세션 종료 시에 신호를 무시하도록 설정 후 백그라운드로 실행시켜 사용자가 로그아웃을 하거나 네트워크 연결이 끊어져도 중단되지 않게 해준다.

 

특이사항

  • nohup 명령어로 실행되는 프로세스는 자동으로 재시작 되지 않는다.
    • 서버가 중지되거나 재부팅 된다면 수동으로 다시 실행시켜 주어야 한다.
  • nohup java -jar ~.jar > output.log 2>&1 & 명령어를 통해
    • nohup.out 파일에 출력을 저장하지 않고 다른 파일에 저장하는 것이 가능하다.

 

'Development > Spring' 카테고리의 다른 글

스프링 프로젝트 명명규칙  (0) 2023.08.05
multipart.MaxUploadSizeExceededException 해결  (0) 2023.07.30
Tomcat, Jetty, Undertow  (0) 2023.07.16
Spring vs SpringBoot  (0) 2023.07.16
DTO, POLO 데이터 객체  (0) 2023.07.01

1. WAR 파일

WAR(WEB Application aRchive) 파일은 웹 애플리케이션을 Java EE 서버에서 실행하기 위해 사용되는 형식입니다. 이 파일은 JSP, HTML, javascript, css, image, xml, java 클래스, java 라이브러리 등 웹 애플리케이션을 구성하는 모든 파일을 포함하고 있습니다. 이 파일은 웹 서버가 애플리케이션을 배포하고 실행하는 데 필요한 구조와 메타데이터를 가지고 있습니다.
  • 자바 설치
  • 웹/애플리케이션 서버 설치
  • 애플리케이션의 WAR 배포

2. JAR 파일

JAR(Java ARchive) 파일은 Java 클래스 파일, 관련 메타데이터 및 리소스를 하나의 파일로 묶은 것입니다. 이는 일반적으로 라이브러리나 실행 가능한 Java 애플리케이션으로 사용됩니다. JAR 파일은 플랫폼 독립적이며, Java Virtual Machine(JVM)에서 직접 실행할 수 있습니다.
  • 자바 설치
  • JAR 파일 실행 (임베디드 서버 사용) 
    • Spring-boot-starter-tomcat 톰캣
    • Spring-boot-starter-jetty 제티
    • Spring-boot-starter-Undertow 언더토우
    • https://suhanlim.tistory.com/247 각 웹서버 정리

 

1. 프로젝트 경로로 이동

2. cmd에서 gradlew build 명령어 실행

Mac OS 기준: ./gradlew clean build 명령어 실행

3. build -> libs 디렉토리 확인

4. cmd에 java -jar 파일명.jar 입력시 실행

'Development > Spring' 카테고리의 다른 글

Controller, Service, Repository 분할  (0) 2023.05.26
Spring Boot Starter Actuator을 이용해 지금까지의 접근 횟수 보기  (0) 2023.05.23
엔티티 매핑  (0) 2023.04.27
영속성 컨텍스트  (0) 2023.04.24
빈 스코프  (0) 2023.03.21

+ Recent posts