리눅스 Java 설치 및 스프링부트 프로젝트 내장 톰캣 실행 방법

스프링부트 프로젝트는 내장 톰캣이 있으므로, 톰캣을 따로 설치하지 않고 java로 실행할 수 있습니다.


리눅스 Java 설치

리눅스 JDK 압축 파일 다운

https://www.oracle.com/java/technologies/downloads/archive
오라클 로그인 후, 위 경로 우측에서 프로젝트 JDK 버전을 선택합니다.
jdk-17.0.15_linux-x64_bin.tar.gz 같은 압축 파일로 받으면 설치가 간편합니다.
rpm, deb 같은 패키지 설치 방식을 이용하는 것도 가능합니다.

JDK 설치 (압축 파일 해제)

sudo mkdir -p /opt/java
tar -xvzf jdk-17.0.15_linux-x64_bin.tar.gz -C /opt/java

파일질라로 JDK 파일을 리눅스 서버 유저 Home에 올린 뒤, /opt/java 폴더를 생성하고 압축 해제합니다.

Java 실행파일 심볼릭 링크 생성

ln -s /opt/java/jdk-17.0.15/bin/java /usr/bin/java

/usr/bin/java 경로에 java 실행 파일로 연결되는 심볼릭 링크를 생성합니다.

JAVA 버전 확인

java -version

심볼릭 링크 생성 후, 설치된 Java 버전을 확인할 수 있습니다.

Java 환경변수 설정

sudo vi /etc/profile

profile 파일 하단에 아래와 같이 입력 후 저장합니다.

export JAVA_HOME=/opt/java/jdk-17.0.15
export PATH=$JAVA_HOME/bin:$PATH

Java 폴더 경로를 환경변수로 설정합니다.

환경변수 설정 적용

source /etc/profile

profile 파일 변경사항을 적용합니다.

JAVA_HOME 확인

echo $JAVA_HOME

등록된 Java 환경변수 값 (/opt/java/jdk-17.0.15) 을 확인할 수 있습니다.


스프링부트 jar 빌드 방법

IntelliJ 스프링부트 jar 빌드

https://0songha0.github.io/op/2023-03-07-1#intellij-gradle-war-%EB%B9%8C%EB%93%9C-%EB%B0%A9%EB%B2%95
IntelliJ에서 Gradle로 스프링부트 프로젝트 jar 빌드 후 파일질라로 서버에 올립니다.


내장 톰캣 서버 실행 방법

deploy.sh 스크립트 또는 systemd 서비스로 스프링부트 프로젝트 실행이 가능합니다.
두 방식 모두 젠킨스와 연동하여 자동 배포 파이프라인을 만들 수 있습니다.

deploy.sh 스크립트 파일 작성 방법

#!/bin/bash
set -e  # 에러 발생 시 즉시 종료

# 기존 Java 프로세스 종료
PID=$(pgrep -f java || true)
if [ -n "$PID" ]; then
  kill -9 $PID

  # 종료 확인 (최대 10초)
  for i in {1..10}; do
    if ! ps -p $PID > /dev/null; then break; fi
    sleep 1
  done

  # 종료 실패 시
  if ps -p $PID > /dev/null; then
    echo "기존 프로세스 종료 실패!"
    exit 1
  fi
fi

# 최신 JAR 파일 찾기
APP_NAME=$(ls -t ./*.jar | head -n 1)
if [ -z "$APP_NAME" ]; then
  echo "실행할 JAR 파일을 찾을 수 없습니다."
  exit 1
fi

# 신규 애플리케이션 프로세스 실행
nohup java -Dspring.profiles.active=프로파일명 -jar "$APP_NAME" > /dev/null 2>&1 &
NEW_PID=$!

# 실행 확인 (최대 5초)
sleep 3
if ps -p $NEW_PID > /dev/null; then
  echo "애플리케이션 정상 실행 (PID: $NEW_PID)"
else
  echo "애플리케이션 실행 실패 (로그 확인 필요)"
  exit 1
fi

echo "배포 완료"

deploy.sh 스크립트로 실행하는 방식은 서버 재부팅 시 자동 시작이 불가합니다.
운영 환경에서 에러 발생 가능성이 높아 개발, 테스트용으로 적합합니다.

deploy.sh 스크립트 실행 권한 부여 명령어

chmod +x deploy.sh

스크립트 실행 권한을 부여하기 위해 최초 1회만 수행하면 됩니다.

deploy.sh 스크립트 실행 명령어

./deploy.sh

작성한 deploy.sh 스크립트를 실행하여 내장 톰캣을 실행할 수 있습니다.

systemd 서비스 파일 작성 방법

https://0songha0.github.io/op/2022-08-06-1
위 글을 참고하여 서비스 파일을 작성 및 등록하고, systemctl 명령어로 실행하면 됩니다.
서버 재부팅 시 자동 재시작이 가능해 deploy.sh 스크립트 실행 방식보다 운영 환경에 적합합니다.