Intro

📌 AWS RDS와 로컬서비스 연결

  • H2 Database → In Memory DB라서 애플리케이션 종료 시, 모든 데이터 삭제됨

  • RDBMS인 MySQL을 AWS RDS 서비스에 설치 → 컴퓨터에 연결

  • 데이터를 AWS Cloud에 저장한 개념 → 휘발성 ❌

📌 AWS EC2 세팅 후, 구현한 API 서버배포

  • 모든 사람이 접속할 수 있는 원격자동컴퓨터가 필요

  • AWS EC2 : 원격자동컴퓨터


1 RDS 구매 후 MySQL 세팅

1️⃣ RDS 구매 (데이터베이스 생성)

2️⃣ RDS 포트열기

연결 및 보안 > VPC 보안그룹 > 보안그룹 ID > 인바운드 규칙편집

3️⃣ IntelliJ 연결

RDS 대시보드 > 엔드포인트 복사

application.properties

# MySQL Database
spring.datasource.url=jdbc:mysql://(RDS엔드포인트):3306/(DB이름)
spring.datasource.username=(이름)
spring.datasource.password=(비밀번호)
spring.jpa.hibernate.ddl-auto=update

2 EC2

1️⃣ EC2 구매

2️⃣ EC2 제약조건

📌 SSH(Secure Shell Protocol)

  • 다른 컴퓨터에 접속할 때 사용하는 프로그램
  • 접속할 컴퓨터의 22번 포트가 열려있어야 접속가능

3️⃣ EC2 Mac Linux명령어

ls : 내 위치의 모든 파일 보여줌

pwd : 내 위치 알려줌 (폴더경로)

mkdir : 내 위치 아래에 폴더생성

cd (갈곳) : 나를 (갈곳) 폴더로 이동시킴

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

cp -r (복사할것) (붙여넣기할것)

rm -rf (지울것)

sudo (실행할명령어) : 명령어를 관리자권한으로 실행

sudo su : 관리가 권한으로 들어감
# ① Keypair 접근권한 변경 (관리자권한)
sudo chmod 400 (받은Keypair끌어놓기)

# password : 맥북 개인 패스워드

# ② SSH 접속하기
ssh -i (받은Keypair끌어놓기) ubuntu@(AWS publicIPv주소)

3 EC2 배포

1️⃣ 배포파일 빌드

  • IntelliJ > Gradle 탭
  • Gradle > Tasks > build 파일 더블클릭

  • 좌측 build 폴더 > libs 아래 > .jar 확장자 파일 생성완료

2️⃣ OpenJDK 설치

# ③
sudo apt-get update

# ④
sudo apt-get install openjdk-17-jdk

# ⑤
java -version

3️⃣ Filezilla 배포파일 업로드

  • .jar 파일 → 로컬사이트에서 리모트사이트로 복사

4️⃣ 스프링부트 작동

# ⑥
java -jar (JAR파일명).jar

5️⃣ AWS 80, 8080 port 열기

보안 > 보안그룹 > 인바운드규칙편집

  • 80 port : HTTP 접속을 위한 기본port

  • 8080 port : Springboot 기본port

6️⃣ 서버 접속

http:13.209.98.106:8080

4 포트포워딩

1️⃣ 포트포워딩 개념

📌 포트포워딩(port forwarding) : 패킷이 네트워크게이트(라우터, 방화벽 등)를 지날 때 [IP+포트번호]결합의 통신요청을 다른 곳으로 넘겨주는 네트워크주소변환 응용

  • :8080 포트번호를 없애는 과정

  • http Request는 80port가 기본이라서 :80 붙이지 않음

  • 포트번호를 입력하지 않아도 자동으로 접속되기 위해,
    80 포트로 오는 요청 → 8000포트로 전달하게함

2️⃣ 포트포워딩 적용

# ⑦ 리눅스 자체 포트포워딩 작동
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
  • ①, ② → ⑦ → ⑥

  • 서버 접속 시, IP주소만 입력해도 접속가능


5 nohup

📌 nohup : SSH접속(맥 터미널)을 종료해도 EC2서버가 계속 동작하도록 하는 것

1️⃣ nohup 적용

# ⑥ 대체
nohup java -jar (JAR파일명).jar &

2️⃣ nohup 적용 후 서버 강제종료

# ⑧
ps -ef | grep java # PIP(프로세스번호) 확인

# ⑨
kill -9 (PIP값) # 특정 프로세스 죽임
profile
🐱Sunyeon-Jeong, mallang developer🐰

0개의 댓글