본문 바로가기
DevOps

[Linux] 쉘 스크립트를 활용한 배포 자동화

by bkuk 2023. 4. 7.

해당 학습을 통해 단순히 톰캣 서버에 소스코드를 배포하는 경험에서 한발 더 나아가 수동으로 배포하던 작업을 쉘 스크립트를 활용해 배포를 자동화하는 과정까지 진행한다.

 

톰캣 서버 설치

  • Tomcat 8.0.x 버전을 다운로드 https://tomcat.apache.org/
  • 톰캣의 기본 포트는 8080이며, 포트 변경은 TOMCAT_HOME/conf/server.xml 파일에서 설정 변경
  • TOMCAT_HOME/bin/startup.sh 를 실행해 서버 시작 후 서버 정상 실행 확인
  • 접속이 되지 않을 경우 톰캣 서버의 포트에 대한 방화벽 해제를 확인
# 1. 일반 사용자 권한에서 방화벽 해제가 불가함으로, ROOT 사용자로 변경 후 방화벽을 제거할 것
su -
# 1-1 비밀번호 설정이 안되있을 경우 아래 명령어로 root에 대한 password 설정
sudo passwd

# 2. ROOT 사용자로 변경된 쉘
root@tester-virtual-machine:~#

# 3. 8080번 포트에 대한 방화벽 해제
firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 3-1. 사전에 방화벽 설치가 되어있지 않다면 설치 후 위 명령 다시 실행
apt install firewalld

# 4. 방화벽 해제에 따른 reload
firewall-cmd --reload

 

실습 코드 배포

  • 계정 Home 디렉토리에 배포할 레포지토리 clone
  • 저장소 디렉토리에서 프로젝트 빌드
# 1. 우선 아래 명령 실행
mvc clean package

# 2. 테스트 실패시 테스트 스킵할 것.
mvn clean package -Dmaven.test.skip=true
  • TOMCAT_HOME/webapps 디렉토리의 ROOT 디렉토리 삭제
  • 프로젝트 빌드시 생성된 프로젝트 폴더로 이동 후 ROOT 디렉토리로 이름을 변경
  • 서버 시작 후 테스트

 

로그 모니터링

  • 서버가 정상적으로 실행되고 있는지 log 파일을 통해 모니터링
# TOMCAT_DIR=~/apache-tomcat-8.5.87

tail -f $TOMCAT_DIR/logs/catalina.out

 

배포를 자동화할 쉘 스크립트 구성

#!/bin/bash		=> 사용할 쉘 지정

REPOSITORY_DIR=~/jwp-basic	=> 레포 디렉토리 이름 변수 지정
TOMCAT_DIR=~/apache-tomcat-7.5.87	=> 톰캣 디렉토리 이름 변수 지정

cd $REPOSITORY_DIR
pwd
git pull
mvn clean package -Dmaven.test.skip=true

$TOMCAT_DIR/bin/shutdown.sh

rm -rf $TOMCAT_DIR/webapps/ROOT
pwd

mv $REPOSITORY_DIR/target/jwp-basic $TOMCAT_DIR/webapps/ROOT
pwd

$TOMCAT_DIR/bin/startup.sh

tail -f $TOMCAT_DIR/logs/catalina.out