AWS/EC2

스프링 EC2에 배포 (with. Git)

초코chip 2024. 5. 30. 17:57

프로젝트 파일 Clone

  • git clone <깃 프로젝트 주소>
  • ls -al: clone상태 확인
  • cd <프로젝트 폴더>: 프로젝트 폴더로 이동

 

 

설정 파일 작성

프로젝트 관련 .gitignore처리된 파일들은 직접 작성을 하거나 ec2서버에 올릴 필요가 있음

 

직접 작성 (vim)

  • 작성을 해줘야하는 디렉토리로 이동
  • vim <파일명>
    • i키 : 작성
    • esc: 작성 취소
    • :wq : 저장하고 종료
    • :q!: 저장하지 않고 종료

 

 

파일 업로드(SCP)

로컬 pc파일을 EC2에 업로드할 때 아래 명령어 사용

  • scp -i [pem파일경로] [업로드할 파일 이름] [ec2-user계정명]@[ec2 instance의 public DNS]:~/[경로]
  • 예시: scp -i "my_key_0.pem" /home/tesb/Documents/sending_test.py ubuntu@ec2-3-35-148-232.ap-northeast-2.compute.amazonaws.com:~/

 

+ 파일 다운로드

EC2에 있는 파일을 로컬 PC에 다운로드할 때 아래 명령어 사용

  • scp -i [pem파일경로] [ec2-user계정명]@[ec2 instance의 public DNS]:~/[경로] [다운로드 파일의 로컬 경로]
  • 예시: scp -i "my_key_0.pem" ubuntu@ec2-3-35-148-232.ap-northeast-2.compute.amazonaws.com:~/downloading_test.py /home/tesb/Documents/

 

 

스프링 프로젝트 빌드

스프링 프로젝트 최상위 폴더에서 ./gradlew를 이용해 빌드 파일(.jar)를 생성하면되는데, 처음 실행하면 실행 권한이 없어서 오류가 발생

 

따라서 실행 권한을 추가한다음에 빌드를 진행한다.

  • chmod +x ./gradlew
  • ./gradlew clean build  ( clean 속성을 넣어야 이전에 빌드한 기록이 있더라도 문제 없이 빌드 가능 )

 

 

 

빌드한 프로젝트 실행

  • 빌드가 성공하면, build/libs 디렉토리에 빌드 파일(.jar)가 존재
  • 이중에서 plain이 안붙은 빌드파일을 실행

 

 

그냥 실행

터미널을 종료하면 프로세스가 종료됨

  • 실행 및 확인: java -jar <빌드 파일.jar>

 

 

백그라운드 실행

터미널을 종료해도 EC2에서 계속 실행됨

  • 실행: nohup java -jar <빌드 파일.jar> &
  • 확인: tail -f nohup.out

 

 

문제1: 포트 죽이기

내가 사용하려는 포트가 이미 사용중이여서 프로젝트 실행이 안될때

  • sudo lsof -i :<포트번호>
  • sudo kill -9 <PID>

 

문제2: EC2 - RDS 연동 안됨

  • EC2에서 RDS접근이 안되는 문제 발생 -> Build 실패 발생
  • 원인: RDS와 EC2의 보안그룹이 달라서 발생한 문제
  • 해결 방법: RDS에서 EC2 보안그룹 허용 처리 진행
    1. EC2의 보안 그룹 id값 복사
    2. RDS의 보안 그룹에서 3306포트에 해당 EC2 보안 그룹 추가
1 2

 

'AWS > EC2' 카테고리의 다른 글

FastAPI EC2 배포  (0) 2024.05.31
AWS EC2 준비  (0) 2024.05.30