2022 10 10 - WIYA-waitinyourarea/wiya GitHub Wiki

2022-10-10(월)

1. Amazon EC2 인스턴스 생성

  • Amazon EC2(Elastic Compute Cloud)
  • 확장 가능 컴퓨팅 스토리지를 제공
    • 애플리케이션을 개발할 때, 서버 하드웨어를 먼저 구축하지 않아도 됨
  • 확장, 축소, 사용량 스파이크를 처리할 수 있어 트래픽 예측 필요성이 낮아짐
  • AMI를 프리티어로 사용 가능한 우분투 서버 18.04 LTS로 선택
  • 프리티어 선택지 중 가장 적절한 t2.micro를 선택
  • 보안 그룹에 기본적으로 열려있는 22 포트와 80포트와 프로젝트에 설정해놨던 8090 포트의 수신을 허가

2. Amazon RDS 인스턴스 생성

  • Relational Database Service
  • AWS환경에서 제공하는 관계형 데이터베이스
  • 확장 가능한 관계형 데이터베이스 서비스
  • 프리티어 중 가장 현재 프로젝트 버전과 인접한 MySQL 8.0.28을 선택
  • 퍼블릭 엑세스를 허용하여, 위에서 만든 EC2에 올릴 애플리케이션에서 해당 RDS에 접근하거나, 다른 사용자가 접근 가능할 수 있도록 한다.
  • 해당 설정은 위에서 사용자 이름암호가 있어야 연결할 수 있기 때문에 킬 수 있다.
  • 보안 그룹에 3306 포트의 모든 수신을 허용하는 규칙을 추가하고 저장
  • 밑의 설정을 Application.properties에 DB Source 설정 추가
# DB Source URL
spring.datasource.url=jdbc:mysql://"RDS의 엔드포인트":3306/"접속하려는 MySQL의 데이터베이스 이름"
# DB username
spring.datasource.username="마스터 사용자 이름"
# DB password
spring.datasource.password="비밀번호"

3. EC2 접속 및 배포

  • SSH로 접속
  • 앞 전에 다운받은 키페어 파일의 권한을 열기
sudo chmod 400 "키페어 파일 경로"
  • 우분투 EC2 연결
ssh -i "키페어 파일 경로" ubuntu@"EC2 인스턴스의 아이피"
  • 프로젝트를 빌드한 후 .Jar 파일을 FileZilla를 통해서 EC2 인스턴스로 올린다
  • apt를 통하여 JDK 설치 후 .jar 파일 실행
java -jar 파일명.jar
  • 2가지 문제점
    1. 인스턴스의 연결을 끊으면 스프링 부트 프로젝트도 종료됨
    2. 서비스를 위해서는 기본포트인 80 즉 포트 번호를 입력하지 않아도 애플리케이션에 접근이 가능하도록 해야함
  • 1번 해결
    • nohup명령어는 세션 연결을 종료해도, 프로그램을 중지하지 말고 실행하라는 명령어이다.
    • 뒤에 &는 해당 프로그램을 백그라운드에서 실행하라는 의미
    • 이렇게 되면 인스턴스의 연결을 끊어도 접속이 가능하다
nobup java -jar 파일명.jar &
  • 2번 해결
    • 포트포워딩
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8090
  • 위 명령어는 80포트로 접근을 할떄 8090 포트로 리다이렉트하라는 의미이다.