포트폴리오/AWS CICD

EC2 배포

서버관리자 페페 2024. 5. 1. 17:43

 

메인 서브
1. EC2에 git 설치 maven / java / javac 추가 설치 
2. 배포 스크립트 만들기 gradle -> maven 컴파일 명령어 변경
nohup 오류 처리
java 환경변수 / sudo us 권한
git pull부터 전부 하지말고 디버깅하듯이 한줄로 배포 검증하기
 
 
3. 스프링부트 프로젝트로 RDS 접근  

 

-

 

1. 배포 스크립트 작성

책에서 gradle -> maven은 빌드가 아닌 package임 주의

 

원본 참조 : https://velog.io/@shawnhansh/AWS-EC2%EC%97%90-SpringBoot-gradle-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8jar-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0

#!/bin/bash

REPOSITORY=/home/ec2-user/app/step1   
PROJECT_NAME=RESTful1 

cd $REPOSITORY/$PROJECT_NAME/ 

echo "> Git Pull"
git pull

echo "> 프로젝트 Build 시작"
./mvnw package

echo ">step1 디렉토리로 이동"
cd $REPOSITORY 

echo "> Build 파일복사"
cp $REPOSITORY/$PROJECT_NAME/target/*.jar $REPOSITORY/ /

echo "> 현재 구동중인 애플리케이션 pid 확인"
CURRENT_PID=$(pgrep -f ${PROJECT_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)  

echo "> JAR Name: $JAR_NAME"
nohup java -jar $REPOSITORY/$JAR_NAME 2>&1 &

 

그레이들은 build, 메이븐은 target 내부에 생성

 

war일지라도 생성은 Jar로 된다

 

pom.xml에 packagin 정보가 있어야 함

그러나 tomcat은 web 디펜던시에 이미 있다고 함.

jetty 쓸때 exclude

 

 

 

(스프링 공식문서)

https://docs.spring.io/spring-boot/docs/2.0.0.M4/reference/html/howto-embedded-web-servers.html

테스트 임의 쉊ㅇ

 

 

2. 

*실행되자마자 hikaripool shutdown 발생

 

2. 

 

local intellij에서는 실행 잘됨

 

3. OPEN api 사용시 @Value를 사용했었다.

해당 값이 있는 application.properties가 ec2 빌드시 끌어오지 않는가?

 

https://velog.io/@shawnhansh/AWS-EC2%EC%97%90-SpringBoot-gradle-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8jar-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0

 

참고해서 프로퍼티 추가

후에도 동일오류 발생

 

 

 

 

 

4. 한번에 하려고 하지 말고 디버깅하듯이 target class 들어가서 직접 실행하기

 

실행 후 내장 톰캣 서버 실행할 수 없다는 오류

 

(StackOverflow)

https://stackoverflow.com/questions/43579432/spring-boot-unable-to-start-embedded-tomcat-servlet-container

 

-> 포트번호 변경

-> 톰캣 디펜던시 추가

 

깃헙 수동 Pull

 

포트 8081로 변경후 war 실행하니 실행완

한줄 커맨드로만 실행해도 application.properties (server.port) 적용되니 기본 Properties는 컴파일시 자동으로 들어감 확인.

 

 

크롬에서도 elastic DNS -> 포트 붙여서 정상 배포 확인!!!

또 packaging을 war로 해서 git에서 pull 및 ./mvnw package(컴파일)은 war로 계속 생성되었었는데, jar로만 실행해서 오류가 났다

 

*책에서 배포는 jar로 하는 것

 

-

 

5. 다시 자동 배포 스크립트 설정

nohup로 해보기

기존 deploy.sh 놔두고 deploy3.sh로 생성 실행

 

 

./mvnw에 권한 줘도 동일 문제

 

문제1 : 설정된 8081 포트 아닌 8080으로 실행

문제2 : war를 jar로 바꾸어서 다시 실행하기

https://velog.io/@angela_/EC2-%EC%84%9C%EB%B2%84-%EB%B0%B0%ED%8F%AC%EC%8B%9C-build-%EC%98%A4%EB%A5%98

'포트폴리오 > AWS CICD' 카테고리의 다른 글

무중단 배포(nginx)  (1) 2024.05.02
Travis CI + S3 + Codeplay  (0) 2024.05.02
터미널 명령어  (0) 2024.05.01
EC2 RDS 연결  (0) 2024.04.30
EC2 개설  (0) 2024.04.30