DevChw
인생을 모험하는 개발자
DevChw
전체 방문자
오늘
어제
  • 전체보기 (33)
    • 모험가의 Spring (24)
      • Spring (21)
      • Spring 이론 (1)
      • Spring Project (0)
      • Spring Exception (2)
    • 모험가의 Node-js (0)
    • 모험가의 끄적노트 (9)
      • 진행했던 프로젝트 (2)
      • Study (6)
    • 모험가는 계발중 (0)
    • 모험가의 공상일기 (0)
    • 모험가는 여행중 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 앱
  • 앱개발
  • 바다거북수프
  • 바다거북스프

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
DevChw

인생을 모험하는 개발자

SpringBoot+AWS+RDS 서버 무중단 배포하기 -EC2편-
모험가의 Spring/Spring

SpringBoot+AWS+RDS 서버 무중단 배포하기 -EC2편-

2022. 10. 7. 18:03

 

 

SpringBoot+AWS+RDS 서버 배포하기 -RDS편-

개발을 하는 것도 좋지만 서버를 배포할 일이 생겼다. 처음에는 배포하는 게 뭐 그리 어렵겠냐 생각했는데 진짜 생각보다 많이 어렵다. 막상 배포를 끝내고 나니 생각보다 쉬운 것처럼 느끼지만

dev-chw.tistory.com

 

저번 글의 경우 RDS를 생성하였고 이제 SpringBoot에 연결 후 EC2를 사용해 배포해보도록 하자.

 

 

참고로 localhost자리에 엔드포인트 값만 넣어주면 바로 연동이 된다. 프로젝트에서 RDS가 연동이 잘 된 것을 확인했다면 바로 EC2에 배포를 시작해보자. RDS를 만드는 것보다 훨씬 간단하기 때문에 차근차근 따라온다면 어려울 게 없다.

 


 

준비사항

1. RDS가 연동된 프로젝트 준비

2. 준비된 프로젝트를 GitHub에 Push 해두기

 

 

위 준비사항이 완료되었다면 AWS EC2 인스턴스를 생성하자

AWS EC2는 가상의 컴퓨터라고 생각을 하면서 진행하면 이해하기 훨씬 도움될 것이다.

 

AWS -> EC2로 들어가 인스턴스 시작을 눌러주면

 

 

위와 같이 인스턴스를 생성하는 페이지로 이동한다. 이름은 자신이 원하는 대로, 우리는 Amazon Linux를 사용한다 -> 프리티어도 지원 가능!

 



 

인스턴스 유형은 기본값으로 두고 새 키 페어 생성을 해서 자신이 잘 보관해주자! 매우 중요한 파일이기 때문에 사라지면 곤란하다..

보안 그룹은 저번 편에서 우리가 미리 생성해두었기 때문에 생성해두었던 보안 그룹을 선택하도록 하자.

 

그 외에는 기본값으로 두고 인스턴스 생성!

 

 

인스턴스 상태가 위와 같이 실행 중이면 정상적으로 실행되고 있는 것이다.

이제 우리는 터미널에서 생성한 AWS EC2 인스턴스로 접속해줄 것이다. (약간 컴퓨터 가동한다고 생각하자)

 

// 권한을 pem 파일에 부여
chmod 600 ***.pem
// ssh 접속하기
ssh -i /Users/유저명/Desktop/testserver.pem ec2-user@{할당받은 public IP 주소}

 

경로의 경우 mac이라면 pem 파일을 option+cmd+c 하면 경로 복사가 되니 참고하도록 하자.

 

 

정상적으로 접속했을 시 터미널에 위와 같이 뜰 것이고 처음이기 때문에 가상의 컴퓨터에 git과 java를 설치하도록 하자

커맨드에서 $ 는 그냥 구분하려고 넣은 거니까 빼고 터미널에 적어주자

 

1. Git 설치

$ sudo yum install -y git

$ git --version

 

2. java 설치 (17 버전 예시)

자신이 진행한 프로젝트에 jdk 버전을 맞춰서 설치해주도록 하자.

$ wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm

$ sudo rpm -ivh jdk-17_linux-x64_bin.rpm

$ sudo alternatives --config java

$ java -version

 

완료되었다면 push 해둔 프로젝트를 가져와야 하기 때문에

$ mkdir {아무거나 폴더명}

$ cd {만든 폴더}

$ git clone {git 주소}

로 가져오자

 

가져왔다면 cd로 clone 한 프로젝트로 이동해 

$ sudo chmod 777./gradlew

를 통해 빌드 실행 권한을 주고

$./gradlew build

입력하여 프로젝트를 빌드해주면 되는데 생각보다 좀 걸리니 인내하도록 하자.

 

마지막으로

프로젝트 내에서

$ cd build

$ cd libs

$ java -jar 자신의 프로젝트. jar

위와같이 libs 폴더로 이동한 다음 jar 파일을 실행해주면 서버가 가동되기때문에 배포까지 완료된다.

 

생각보다 어렵지 않기 때문에 RDS 부분만 잘 마무리된다면 EC2로 배포하는 과정은 쉽다!

 

## 추가내용 (서버 무중단배포)

터미널을 종료하게되면 서버가 닫히는데 이를 방지하기 위해서 서버를 킬때

$ nohup java -jar 자신의 프로젝트.jar &

로 실행해주면 터미널을 닫아도 컴퓨터를 꺼도 절대로 서버가 꺼지지 않습니다

서버를 종료하기 위해서는

ssh -i 로 자신의 EC2에 접속한 후

$ ps -ef

를 통해 프로세스를 조회한 후 백그라운드에서 돌아가고 있는 jar파일의 pid 번호를 확인하고

$ kill -9 {pid번호}

명령어를 입력하여 종료한다 !

 

 

참조

 

[AWS] Spring Boot 프로젝트를 AWS EC2 에 배포하기 (mac)

Spring Boot 프로젝트를 AWS EC2 에 배포하기 프로젝트를 AWS EC2에 배포하기 위한 순서는 아래와 같다. Spring Boot 를 통해 프로젝트를 생성하기 (적어도 간단한 텍스트라도 출력되어야 좋음) Github / AWS

rypro.tistory.com

 

 

 

 

'모험가의 Spring > Spring' 카테고리의 다른 글

[ SpringSecurity + JWT + Redis ] 로그인과 RefreshToken을 이용한 AccessToken 재발급편 👨‍💻  (0) 2022.10.21
[ SpringSecurity + JWT + Redis ] 회원가입편  (0) 2022.10.20
SpringBoot+AWS+RDS 서버 배포하기 -RDS편-  (1) 2022.10.07
Docker + SpringBoot 개발환경 구축  (1) 2022.10.07
JPA findAll() 정렬해서 가져오는법  (0) 2022.10.01
    '모험가의 Spring/Spring' 카테고리의 다른 글
    • [ SpringSecurity + JWT + Redis ] 로그인과 RefreshToken을 이용한 AccessToken 재발급편 👨‍💻
    • [ SpringSecurity + JWT + Redis ] 회원가입편
    • SpringBoot+AWS+RDS 서버 배포하기 -RDS편-
    • Docker + SpringBoot 개발환경 구축
    DevChw
    DevChw
    자기계발도 하면서 여행도 다니면서 취미도 즐기면서 모험도 하면서 살고싶은 개발자가 되고싶은 초보개발자

    티스토리툴바