springboot + +react + RDS(mysql) 배포하기 (AWS)

reenact_l·2024년 1월 24일
0

server

목록 보기
11/11

BACKEND 배포 (SPRINGBOOT)

(putty / intelliJ / filezilla 사용)
1. rds 생성 및 연결

https://dev-chw.tistory.com/26

https://rhdqors.tistory.com/32

  • db 작성후 보안그룹에서 3306포트르 열어둘것

  • 사실상 내꺼 인스턴스랑만 접속하기 때문에 굳이 ip주소 세세하기 설정할 필요는 없는 듯 하다

  • rds 생성후 엔드포인트 복사

  • 인텔리제이 데이터베이스 클릭 / datasource mysql 선택 (아마 지금까지 데이터를 썼으면 localhost로 db가 하나 있을거임)

  • name(db이름 지어두기), host(rds 엔드포인트 복붙), user(rds 생성시 사용한 id), passoword(rds 생성시 사용한 비밀번호), database(db이름)

이후 인텔리제이에서 런해서 연결되면 성공

  1. spring ec2에 올리기
    https://velog.io/@jonghyun3668/SpringBoot-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-EC2-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0

결론 :
ec2인스턴스 생성 [백엔드용 인스턴스]

sudo apt-get update
sudo apt-get upgrade
git clone [git address]

cd [파일 이름]
ls 해서 build파일 확인하기
./gradlew build
cd build/libs

nohup java -jar buildName-0.0.1-SNOPSHOT.jar &

하지만 .. ./gradlew build에서 빌드가 안되는 에러 발생 ㅠ

  1. filezilla 복기

https://velog.io/@rong5026/AWS-EC2-FileZilla-%EC%97%B0%EA%B2%B0

  • 앞서 2번 수행 후에 jar 파일이 빌드가 안되는 것을 확인

  • 윈도우 인텔리제이 상에서는 빌드가 완료되기때문에 우분투 상의 문제라고 생각

  • 우분투상에서 에러 해결보다는 빌드 파일을 우분투로 옮기는게 더 빠르다고 판단..

  • 인텔리제이에서 파일 build

  • .jar 파일 filizilla로 이동시키기
    - 새타이틀 - 프로토콜(sftp) 로그온 유형(키파일) 사용자(ubuntu) 키파일(인스턴스 생성 및 푸티 사용할때 쓴 ppk파일)

    • 연결
    • 연결되었다고 알림이 뜬다.
    • filizilla window 저장목록 부분에서 내꺼 .jar 파일 더블클릭 하면 자동으로 ec2 ip주소로 .jar 파일 이동

filezilla에서 사용자는 aws에서 생성했을때 os를 뭐로 골랐는지에 따라 다름 난 우분투를 골랐기에 사용자가 ubuntu

** filezilla를 통해 파일 이동 후 푸티에서 ls를 통해서 .jar파일 들어왔는지 확인

  1. snopshot and .jar

https://rhdqors.tistory.com/32

  • java -jar codename.0.0.1-SNAPSHOT.jar
  • nohup java -jar buildName-0.0.1-SNOPSHOT.jar &
    둘 중 하나로 실행
  1. nohup: ignoring input and appending output to 'nohup.out'
    https://spartacodingclub.kr/community/fastqna/all/62fcc5d638e6ffe21f0b0b09/nohup%20%EC%98%A4%EB%A5%98

    결론 : nohup : ignoring input and appending output to 'nohup.out' 메시지는 에러가 아니라 배포파일이 실행되고 있다는 뜻

  2. postman or http상에서의 확인

  • aws에서 할당받은 ip주소 복사
  • ip주소:8080뒤에 spring에서 작성한 url입력하면 return 된다.
  1. 포트번호의 사용 :8080
    https://velog.io/@jinmin2216/Spring-%EB%82%98%EB%A7%8C%EC%9D%98-%EA%B2%8C%EC%8B%9C%ED%8C%90-%EB%A7%8C%EB%93%A4%EA%B8%B0-9-%EC%97%B0%EB%8F%99-JAR-%EB%B0%B0%ED%8F%ACFileZilla-%ED%85%8C%EC%8A%A4%ED%8A%B8Swagger

  2. ec2 복기하기

  1. rds 와 mysql and aws에서 보안그룹 규칙 참조
    https://deepmal.tistory.com/9

RDS , EC2를 연결하기 위해선 보안규칙 설정 3306

EC2 디폴트 포트번호 8080

FRONTEND 배포 (REACT)

  1. S3 만들기
    https://dibrary.tistory.com/184

  2. nginx 설치하기
    https://dev-san.tistory.com/30

  3. nginx react 올리기
    https://sihus.tistory.com/31

  4. nginx react 올리기2
    https://blog.naver.com/PostView.nhn?blogId=dilrong&logNo=221497936351

nginx 기본 포트 주소 80

sites-available/default 와 관련해서..

server {
  listen 80;
  location / {
    root   /root/build/build; - build파일이 있는 경로 지정
    index  index.html index.htm; - index html 지정
    server_name $uri; - 어떤 url이 들어와도 다 index html로 보내겟다
    try_files $uri $uri/ /index.html; 
  }
}

aws 요금 & 프리티어

rds의 경우 750시간 무료

  • 안쓸때는 일시정지 시켜두는게 좋음
  • 일시정지 시키고 7일 후에 다시 자동으로 시작함
  • 완전히 db 사용이 끝난경우 스냅샷 찍어서 rds 마무리지어야 과금 방지

인스턴스 안쓸때는 무조건 일시정지

  • 일시정지와 종료는 다름...
  • t2.micro 같은 경우는 조금 덜하지만 데이터 모델을 올리거나 하는경우에 깜빡하면 바로 과금
profile
icantdoanything

0개의 댓글