본문 바로가기

항해 99/Web

AWS - EC2, RDS 활용 배포

RDS 구매 및 MySQL 세팅

1. AWS 로그인 후 대시보드 접속

 

2. RDS 검색 후 결과 클릭

 

3. 데이터베이스 생성 클릭

 

4. 표준생성, MySQL 클릭

 

5. 프리 티어를 선택

 

6. 입력

  • DB 인스턴스 식별자에 DB 이름 입력(이름은 원하는대로)
  • 마스터 사용자 이름과 암호에 만들고 싶은 계정의 아이디, 비밀번호 입력(DB 접속용으로 사용)

 

7. DB 인스턴스 크기와 스토리지 설정은 Defualt 값 사용

 

8. 연결 → 추가 연결 구성 탭 클릭

 

설정

  • 퍼블릭 엑세스 기능 : 예
    • 이 설정을 해야 컴퓨터에서 AWS RDS의 MySQL과 연결 가능
  • VPC 보안 그룹 : 새로 생성
    • 보안 그룹 이름 지정
  • 가용 영역 : 옵션 중 선택

 

9. 추가 구성 → 초기 데이터베이스 이름 입력

 

10. 데이터베이스 생성 클릭

 

 

RDS 포트 열기

1. db 선택

 

2. 연결& 보안 → 보안 → VPC 보안 그룹의 springboot-db-security 클릭

 

3. 보안 그룹 ID 클릭

 

4. 인바운드 규칙 편집 클릭

 

5. 소스 → 위치 무관 클릭(0.0.0./0, ::/0 생성 확인 후 규칙 저장)

 

 

 

Intellij 연결

인텔리제이 DB 아이콘 클릭 → Data Source → MySQL 선택

  • Name : AWS 에서 설정한 DB 식별자 이름
  • Host : AWS 대시보드 엔드 포인트
  • User : RDS 에서 설정한 Username
  • Password : RDS 에서 설정한 비밀번호
  • Database : RDS 에서 설정한 DB 이름

 

Test Connection 성공 시 OK 클릭으로 DB와 연결

 

// application.properties
spring.datasource.url=jdbc:mysql://나의엔드포인트:3306/shop
spring.datasource.username=나의USERNAME
spring.datasource.password=나의패스워드
spring.jpa.hibernate.ddl-auto=update
  • application.properites 파일은 GitHub Repository에 .gitignore 사용해 제외 또는 application.yml로 변환 후 암호화 후 올리기

 

 

EC2 구매

1. Name : 선택

2. Ubuntu로 20.04 or 22.04 선택

 

3. t2.micro 선택(1년 무료)

 

4. KEY 생성하기 클릭, key 발급

 

5. 나머지 체크리스트 체크 후 Launch instance 클릭

 

EC2 서버 종료하기

대상 인스턴스 마우스 우클릭 → 인스턴스 상태 클릭 → 중지 or 종료 클릭

 

 

EC2 접속

git bash 실행 후 명령어 입력

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

// 예시
ssh -i /path/my-key-pair.pem ubuntu@13.125.250.20
  • Key fingerprint 관련 메시지가 나올 경우 Yes를 입력
  • git bash를 종료할 때는 exit 명령어를 입력하여 ssh 접속을 먼저 끊기

간단한 리눅스 명령어

ls: 내 위치의 모든 파일을 보여준다.

pwd: 내 위치(폴더의 경로)를 알려준다.

mkdir: 내 위치 아래에 폴더를 하나 만든다.

cd [갈 곳]: 나를 [갈 곳] 폴더로 이동시킨다.

cd .. : 나를 상위 폴더로 이동시킨다.

cp -r [복사할 것] [붙여넣기 할 것]: 복사 붙여넣기

rm -rf [지울 것]: 지우기

sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다.
sudo su: 관리가 권한으로 들어간다. (나올때는 exit으로 나옴)

 

 

EC2 준비 및 배포

1. intellij : Gradle → Tasks → build → build 실행

 

2. 좌측 프로젝트 파일 → build → libs → .jar 파일 확인

 

3. ssh로 접속한 Ubuntu에서 OpenJDK 설치

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

 

4. Filezilla 사용 배포 파일 업로드

  • Host: 내 EC2서버의 ip // User: ubuntu 로 입력

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

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

 

스프링 부트 작동

java -jar JAR파일명.jar

 

AWS 80, 8080 포트 열기(AWS Security Group 인바운드 요청 포트)

 

Edit inbound rules 선택

 

  • 80포트: HTTP 접속을 위한 기본포트
  • 8080포트: 스프링 부트 기본포트

접속

http://내 public 아이피:8080

 

종료

  • 터미널에서 ctrl + c

 

포트포워딩 & nohup 적용

포트포워딩 룰

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

 

서비스 시작

java -jar JAR파일명.jar

 

웹 브라우저에서 접속

http://내AWS아이피/

 

 

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

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

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

 

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

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

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

 

다시 켜기

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

 

브라우저에서 접속하기

http://내AWS아이피/