본문으로 건너뛰기

5.3. Back-End 실행

5.3.1. requirements

  • JDK 8 버전 이상 설치
  • 18009 포트 사용 가능
  • Apache Maven 3.3.1 이상 설치

5.3.2. 환경설정 수정 및 배포 스크립트 실행

5.3.2.1. crud 디렉토리 파일 구성

  • application-real-db.properties : 데이터베이스 ip, schema, user, password 등 설정
  • datalifecycle-crud-0.0.1-SNAPSHOT.jar : 소스파일을 패키징한 실행 파일
  • deploy.sh : 전체 실행 명령어가 담긴 배포 스크립트 파일
  • logs : 로그파일을 포함하는 디렉토리
  • smartcity-dlm-crud : 데이터라이프사이클 백엔드 프로젝트 소스코드

5.3.2.2. DB설정 파일

  • spring.datasource.url : 데이터베이스의 ip 및 schema 설정
  • spring.datasource.username : 데이터베이스 유저이름
  • spring.datasource.password : 데이터베이스 비밀번호
  • spring.datasource.driver-class-name : jdbc 연결 드라이버

5.3.2.3. 배포 스크립트 파일

#!/bin/bash

dt=$(date '+%Y%m%d')
dd=$(date '+%d')
yymm=$(date '+%Y%m')

REPOSITORY=/home/cbnu/deploy/dlm/crud
PROJECT_NAME=smartcity-dlm-crud
SERVICE_NAME=datalifecycle-crud

cd $REPOSITORY/$PROJECT_NAME/
echo "> 프로젝트 Build 시작"
mvn clean package

echo "> crud 디렉토리로 이동"
cd $REPOSITORY
echo "> Build 파일 복사"

cp $REPOSITORY/$PROJECT_NAME/target/*.jar $REPOSITORY/
echo "> 현재 구동중인 애플리케이션 pid 확인"
CURRENT_PID=$(pgrep -f ${SERVICE_NAME}*.jar)
echo "> 현재 구동중인 애플리케이션 pid: $CURRENT_PID"

if [ -z "$CURRENT_PID" ]; then
echo "> 현재 구동 중인 애플리케이션이 없으므로 종료하지 않습니다."
else
echo "> kill -15 $CURRENT_PID"
kill -15 $CURRENT_PID
sleep 5
fi

echo "> 새 애플리케이션 배포"
JAR_NAME=$(ls -tr $REPOSITORY/ | grep *.jar | tail –n 1)

nohup java -jar \
-Dspring.config.location=classpath:/application.properties,classpath:/application-real.properties,$REPOSITORY/application-real-db.properties $REPOSITORY/$JAR_NAME > $REPOSITORY/logs/${dt}_${SERVICE_NAME}.log 2>&1 &
  • 소스파일인 smartcity-dlm-crud를 Maven을 이용하여 빌드한 뒤 실행하는 과정
  • 프로세스가 실행 중이면 프로세스를 종료한 뒤 실행
  • 로그파일은 logs 디렉토리에 실행한 “날짜_datalifecycle-crud.log” 이름으로 생성
  • 다시 배포 스크립트 파일이 실행될 때까지 생성된 로그파일에 로그가 기록되며, 배포스크립트 파일을 다시 실행할 시 새로운 로그파일이 생성됨
  • 다른 디렉토리위치 혹은 다른 서버에서 다운로드 및 빌드 시 “REPOSITORY” 변수를 해당 디렉토리 위치에 맞게 변경해야 함
  • DB정보 변경 후 실행 시 application-real-db.properties 파일 변경 후 deploy.sh 파일 실행
  • 실행 명령어

    ./deploy.sh