독서/📚

[Next Step] 6.6 쉘 스크립트를 활용한 배포 자동화(p218) 정리

leejinwoo1126 2023. 11. 3. 22:22
반응형


 

요구사항

-지금까지 구현한 기능을 개발 서버에 톰캣 서버를 설치한 후 배포한다

-서버가 정상적으로 실행되고 있는지 톰캣 로그 파일( catalina.out )을 통해 모니터링 한다

-쉘 스크립트를 만들어 배포 과정을 자동화 한다

 

① 톰캣 서버 설치

② 실습 코드 배포

③ 톰캣 서버 로그 모니터링

④ 쉘 스크립트 통해 배포 자동화 

 

참고. 영상 자료

https://www.youtube.com/watch?v=ZsiO27LeW34
https://www.youtube.com/watch?v=9Rr4gMRyUtQ
https://www.youtube.com/watch?v=bzM1WL4qdoA


1. 톰캣 서버 설치

톰캣 디렉토리 구조 

- bin : 톰캣 서버 시작/종료,  catalina.sh 옵션 설정도 가능 

- logs : 톰캣 실행 로그 파일 관리 (catalina.out)

- conf : 환경 설정 파일 관리

- webapps : 웹 애플리케이션을 독립적으로 관리 가능하도록 서비스 지원

ㄴdefault로 5개 폴더가 있음

ㄴ설정하지 않을 경우 webapps/ROOT 폴더를 기본 접속

- work : 배포 소스 컴파일 결과가 생성되는 폴더 (*.class, *.java)

 

배포의 경우 아래 두 가지 방식으로 설정 가능 

- *.war 파일 사용 

- *.war 파일 압축 푼 디렉토리 사용 (해당 방식으로 배포*)

 

톰캣 다운로드 

- wget으로 공식 사이트 에서 tar.gz 파일 링크를 복사하여 다운 받는다 (버전 v8.0.x ~ v8.5.x)

- 또는 직접 다운로드 후 scp 명령어 사용하여 옮긴다

 

다운로드 후 압축 풀기

$ wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.95/bin/apache-tomcat-8.5.95.tar.gz

$ tar -xvf apache-tomcat-8.5.95.tar.gz

 

 

심볼릭 링크 설정 

$ cd /home/ubuntu
$ ln -s apache-tomcat-8.5.95/ tomcat

 

 

톰캣 실행 

~/tomcat/confg/server.xml port를 8090으로 변경

이때 방화벽(ufw)에 8090/tcp 허용되어 있어야 한다

 

 

그리고 ~/tomcat/bin/startup.sh 실행 후 브라우저로 접속하여 톰캣 기본 페이지 확인 가능하다 (http://아이피주소:포트번호)

ROOT 폴더에 index.html이 반겨준다

 


 

2. 실습 코드 배포 (jwp-basic)

참고. 프로젝트 저장소 

https://github.com/slipp/jwp-basic/tree/step15-di-framework-completed

 

GitHub - slipp/jwp-basic: 자바 웹 프로그래밍 기본 실습

자바 웹 프로그래밍 기본 실습. Contribute to slipp/jwp-basic development by creating an account on GitHub.

github.com

 

clone 프로젝트

repositorie 디렉토리 이동 후 clone 한다

$ git clone https://github.com/slipp/jwp-basic.git

$ cd jwp-basic

$ git checkout step15-di-framework-completed

$ git branch -vv        // 현재 브랜치별로 최종 로그 확인가능

 

 

Maven Build 

해당 jwp-basic 프로젝트 폴더로 이동 후 

$ mvn clean package -DskipTests

#또는 
$ mvn clean pacakge -Dmaven.test.skip=true

 

빌드 결과는 프로젝트 루트 경로에 target 폴더에 생성된다

 

 

프로젝트 배포 및 톰캣 재실행

- target 디렉토리 안에 있는 빌드 결과 디렉토리(jwp-basic)를 사용하여 톰캣 배포하도록 한다

- tomcat 이 켜져 있다면 아래와 같이 종료 할 수 있도록 한다

$ ps -ef | grep tomcat 
$ kill -9 $PID

$PID : 실행중인 tomcat process 고유 식별자

 

Tomcat의 webapps ROOT 폴더를 지우고 빌드 결과 디렉토리를 옮겨 ROOT로 rename 한다

$ cd ~/tomcat/webapps
$ rm -rf ROOT
$ mv ~/repositories/jwp-basic/target/jwp-basic ~/tomcat/webapps/ROOT

$ ../bin/startup.sh

 

정상적으로 배포 확인 완료


3. 톰캣 서버 로그 모니터링

톰캣의 디렉토리 중  logs/catalina.out 통해 로그를 확인 가능하다

$ cd ~/tomcat/logs/
$ tail -500f catalina.out

톰캣 실행 후 catalina.out 로그

 


4. 쉘 스크립트 배포 자동화

지금까지 해 온 명령어 절차를 shell script로 정의하여 사용할 수 있도록 한다

 

명령어 절차

① 프로젝트 이력 최신화

② Maven Build 실행

③ Tomcat 종료 ( shutdown.sh )

④ Tomcat webapps 디렉토리에서 ROOT 삭제

⑤ 프로젝트 target 디렉토리 이동 후 빌드 결과 폴더를 webapps에 ROOT로 rename 하여 옮김

Tomcat 재시작 ( startup.sh )

⑦ 로그 확인 ( catalina.out )

 

scripts 디렉토리 및 deploy.sh 생성

$ mkdir scripts
$ cd scripts
$ vim deploy.sh

 

deploy.sh 작성

#!/bin/bash
REPOSITORY_DIR=~/repositories/jwp-basic
TOMCAT_DIR=~/tomcat

# 1.프로젝트 이력 최신화
cd $REPOSITORY_DIR
git pull

# 2.Maven Build 실행
mvn clean package -DskipTests

# 3.Tomcat 종료 
$TOMCAT_DIR/bin/shutdown.sh

# 4.Tomcat webapps 디렉토리에서 ROOT 삭제
rm -rf $TOMCAT_DIR/webapps/ROOT

# 5.빌드 결과 폴더를 webapps에 ROOT로 rename 하여 옮김
cd target
mv $REPOSITORY_DIR/target/jwp-basic  $TOMCAT_DIR/webapps/ROOT

# 6.Tomcat 재시작 
$TOMCAT_DIR/bin/startup.sh

# 7.로그 확인 
tail -500f $TOMCAT_DIR/logs/catalina.out

저장 후 나가기(esc + :wq)

 

 

권한 수정 및 deploy.sh 실행

$ chmod -R 755 deploy.sh
$ ./deploy.sh

 

반응형