요구사항
-지금까지 구현한 기능을 개발 서버에 톰캣 서버를 설치한 후 배포한다
-서버가 정상적으로 실행되고 있는지 톰캣 로그 파일( 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://아이피주소:포트번호)
2. 실습 코드 배포 (jwp-basic)
참고. 프로젝트 저장소
https://github.com/slipp/jwp-basic/tree/step15-di-framework-completed
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
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
'독서 > 📚' 카테고리의 다른 글
[Next Step] 12.8 웹서버 도입을 통한 서비스 운영(p458) 정리 (0) | 2023.11.10 |
---|---|
[Next Step] 10.4 배포 자동화를 위한 쉘 스크립트 개선 (p362) 정리 (0) | 2023.11.10 |
무료 전자 도서관 이용 후기 (with 교보문고 전자 도서관 앱) (0) | 2023.11.03 |
[Next Step] 3.3 원격 서버에 배포 (p84) 정리 (0) | 2023.07.11 |
[도서 리뷰] 비전공자를 위한 이해할 수 있는 IT 지식 (0) | 2022.05.06 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!