카테고리 없음

AWS #2. RDS 구매하고 MySQL 세팅하기

luminous_dev 2025. 2. 6. 08:16

 

  • RDS 구매하기
    1. 미리 가입한 AWS에 로그인합니다.
    2. 아래 링크에 접속합니다.
 

https://ap-northeast-2.console.aws.amazon.com/console/home?region=ap-northeast-2

 

ap-northeast-2.console.aws.amazon.com

 

RDS를 검색하고 데이터베이스 클릭 > 데이터베이스 생성 

 

 

 

 

 

 

 

 

프리티어 선택 (요금 부과 방지 위해!!!)

 

FAQ

AWS는 신규 AWS 고객에게 프리 티어를 제공합니다. AWS 프리 티어에서는 매월 다음과 같은 서비스를 제공합니다. Amazon EC2 Linux 또는 RHEL 또는 SLES t2.micro 인스턴스 750시간 사용(1GiB 메모리, 32비트 및

aws.amazon.com

 

 

 

 

 

 

★퍼블릭 액세스 기능 : 예

이 설정이 되어있어야 우리 컴퓨터에서 AWS RDS 의 MySQL과 연결이 가능

IPv4의 경우 실행 중인 EC2 인스턴스에 연결되지 않은 유휴 상태의 탄력적 IP 주소와 같은 경우는 요금이 발생

RDS DB 인스턴스 생성 시 퍼블릭 액세스를 허용하시는 경우 퍼블릭 IPv4가 할당

프라이빗으로 사용하시는 경우에는 퍼블릭 IPv4가 사용되지 않기 때문에 이로 인한 비용은 발생하지 않음 

  •  
  • VPC 보안 그룹: "새로 생성" 선택
  • 새 VPC 보안 그룹 이름: springboot-db-security
  • 가용 영역: 옵션 중 아무거나 선택

 

 

 

추가 구성 > 초기 데이터베이스 이름 에 "shop" 을 입력

 

 


> 데이터베이스 생성 클릭



 


이번년도부터는 IPV4 사용 시 시간당 요금이 과금됩니다.

따라서 데이터 베이스 생성 전 VPC 설정을 통해 프라이빗한 IP로 접속하는 것 권장합니다. 

 

반드시 데이터베이스 생성하면서 해주세요!! (생성 후에는 변경할 수 없습니다.)

 

 

 

 

 

 

 

 

처음에 2a로 했다가 아래와 같은 에러 났음

 

 

 

 

RDS 생성 시 연결


RDS 포트 열어주기 

 

1. springboot-database 클릭

 

 

연결 & 보안 > 보안 > VPC 보안 그룹 의 springboot-db-security 클릭

 

 

보안 그룹 ID 클릭

 

인바운드 규칙 편집 클릭

 

 

소스 클릭해서 0.0.0.0/0, ::/0 생성 확인 후 "규칙 저장" 클릭

 


인텔리제이에서 확인하기

아래 링크 이동 후 springboot-database 클릭

 

https://ap-northeast-2.console.aws.amazon.com/rds/home?region=ap-northeast-2#databases:

 

ap-northeast-2.console.aws.amazon.com

 

 

 

 

앤드포인트 확인 후 복사

 

 

배포하고자 하는 프로젝트를 인텔리제이에서 열고 Database탭 열기

  • Name: springboot-database
  • Host: 나의 엔드포인트
  • User: 나의 Username(마스터 사용자 이름)
  • Password: 나의 비밀번호 (마스터 암호)
  • Database: shop

 

 


스프링 부트를 MySQL과 연결하기 (application.properties)

spring.datasource.url=jdbc:mysql://나의엔드포인트:3306/shop
spring.datasource.username=나의USERNAME
spring.datasource.password=나의패스워드
spring.jpa.hibernate.ddl-auto=update

EC2 구매하기

EC2 콘솔 페이지 

 

https://ap-northeast-2.console.aws.amazon.com/ec2/home?region=ap-northeast-2#Home:

 

ap-northeast-2.console.aws.amazon.com

 

Ubuntu Server 20.04 또는 22.04 버전을 구매

 

 

Ubuntu 버전 중요!!  ( Ubuntu로 20.04 or 22.04) 

 

 

t2.micro = 무료 서비스 (1년 기한)

 

KEY 생성하기를 클릭 후, key를 발급 받기 (서버 접속 시, 매우 중요!!!)

 

 


EC2 서버 종료 방법 

인스턴스 상태 > 중지 또는 종료 

 


EC2에 접속하기 

SSH(Secure Shell Protocol)

다른 컴퓨터에 접속할 때 쓰는 프로그램

다른 것들 보다 보안이 상대적으로 뛰어남

 

접속할 컴퓨터가 22번 포트가 열려있어야 접속 가능

AWS EC2의 경우, 이미 22번 포트가 열려있음 

 

 

 

window - git bash라는 프로그램 이용

gitbash를 실행하고, 아래 입력

ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피

 

ex) ssh -i /path/my-key-pair.pem ubuntu@13.125.250.20

-> 받은 파일에서 진짜 끌어다놔야지 접속 됨..

 

이렇게 되면 성공한 것..

 

 

 

 

 

우측 Gradle > Task > build > build두번 클릭 

 

 

(ssh로 접속한)Ubuntu에서 OpenJDK 설치하기(반드시 17v)

좌측 build 폴더 > libs 아래에 .jar 확장자로 끝나는 파일이 생기면 빌드 성공 

 

 

sudo apt-get update
sudo apt-get install openjdk-17-jdk
java -version

  • Filezilla를 이용해서 배포 파일을 업로드하기
    • 파일질라 실행, 다음과 같이 설정

Filezilla의 키 

 

 

 

마우스로 드래그 해서 파일을 업로드/다운로드

왼쪽(본인 컴퓨터)에서 개발 완료된 myselectshop 프로젝트 폴더의 build > libs로 이동

오른쪽(EC2)으로 드래그

 

 

 

 


아래 실행시키면 아래 url로 배포 완료할 수 있음 

http://내 public 아이피:8080

 

1. 스프링 부트 작동시키기

myselectshop-0.0.1-SNAPSHOT.jar 아까 넣은 거 넣어서 

java -jar JAR파일명.jar

  • AWS에서 80, 8080 포트를 열어주기
    • EC2 서버(=가상의 내 컴퓨터)에서 포트를 따로 설정하는 것 외에도, AWS EC2에서도 자체적으로 포트를 열고/닫을 수 있게 관리
    • AWS EC2 Security Group에서 인바운드 요청 포트를 열어줘야 함

 

클릭 > Edit inbound rules

 

 

두가지 범위의 8080포트 인바운드 규칙으로 추가하기

소스 있는 부분이 처음에는 IPV4로 잡힐거임 -> 저장하면 사용자~로 들어감

 

→ 80포트: HTTP 접속을 위한 기본포트

→ 8080포트: 스프링 부트 기본포트

 

http://내 public 아이피:8080

 


포트 번호 없애기 (:8080 없애기)

HTTP 요청에서는 80포트가 기본이기 때문에, 굳이 :80을 붙이지 않아도 자동으로 연결

포트 번호를 입력하지 않아도 자동으로 접속되기 위해,  80포트로 오는 요청을 8080 포트로 전달하게 하는 포트포워딩(port forwarding) 사용

 

 

1. 포트 번호 없애기 - 리눅스 자체 포트포워딩을 작동시키기

  • 띄워둔 터미널에서 새롭게 설정을 적용하기 전에 돌아가고 있던 서비스는 일단 끄기 (터미널에서 ctrl + c)

  • 포트포워딩 룰을 입력
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

 

다시 서비스 시작 

java -jar JAR파일명.jar

 

 

이제 포트 번호를 뗴고 접속해보기

http://내AWS아이피/


1. SSH 접속을 끊어도 서버가 계속 돌게 하기

현재 상황)

Git bash 또는 맥의 터미널을 종료하면 (=즉, SSH 접속을 끊으면) 프로세스가 종료되면서, 서버가 돌아가지 않고 있음

우리가 원격접속을 끊어도, 서버는 계속 동작해야함

 

1) 원격 접속을 종료하더라도 서버가 계속 돌아가게 하기

# 아래의 명령어로 실행하면 된다
nohup java -jar JAR파일명.jar &

 

 

 

 

nohup은 **"no hangup"**의 줄임말로, 터미널 세션을 종료하더라도 해당 명령어로 실행한 프로세스가 계속해서 실행

 

2. 서버 종료하기 - 강제종료하는 방법

# 아래 명령어로 미리 pid 값(프로세스 번호)을 본다
ps -ef | grep java

# 아래 명령어로 특정 프로세스를 죽인다
kill -9 [pid값]

 

pid

 

3. 다시 켜기

# 아래의 명령어로 실행하면 된다
nohup java -jar JAR파일명.jar &

 

 

 

$ ssh -i /c/Users/ryust/Downloads/spart_web.pem ubuntu@3.37.123.33
nohup java -jar myselectshop-0.0.1-SNAPSHOT.jar & 순서로 하기