[Django] Elastic Beanstalk 서버 구성 + https 적용하기

울상냥·2023년 4월 17일
0

배포

목록 보기
15/18
post-custom-banner

간단하게 개발한 성격유형 테스트를 드디어 배포했다...!!!
평소처럼 EC2 인스턴스를 생성해서 배포할 생각이었는데 Elastic Beanstalk의 존재를 알게 되었다.
아아니.. 코드를 업로드하기만 하면 서버 구성을 알아서 해준다고? 간단한 프로젝트니까 간단하게 배포를 하면 얼마나 좋을까!! 바로 사용해보았다.
(하지만 늘 그렇듯 그리 간단하진 않았다...)

간단하게 EB가 무엇인지 알아보자

Elastic Beanstalk(EB) 이란

애플리케이션을 실행하는 인프라에 대해 자세히 알지 못해도 AWS 클라우드에서 애플리케이션을 신속하게 배포하고 관리할 수 있다. 애플리케이션을 업로드하기만 하면 Elastic Beanstalk에서 용량 프로비저닝, 로드 밸런싱, 조정, 애플리케이션 상태 모니터링에 대한 세부 정보를 자동으로 처리한다.

장점

  • 빠른 서버환경 구축
  • 사용에 따른 추가 요금이 없다. 리소스에 대한 비용만 지급하면된다.

단점

  • 세부 설정에 대한 유연성이 떨어진다.
  • 버그 발생시 원인을 찾기 어렵다.
  • 설정 변경시 서버가 일시적으로 중단됨.

외에 자세한 정보는 필요하지 않았다 바로 웹 앱을 생성해 보았다.

Elastic Beanstalk 웹 앱 생성

Django 프로젝트기에 Python 선택해주었다.
소스는 추후에 업로드 하기로 하고 샘플 애플리케이션 으로 바로 시작해주었다.

조금 기다리면 애플리케이션이 생성된다. 초록불!!!!!
(그러나 다시 초록불을 보기까지는 .. 오랜 시간이 걸렸다..)

엔드포인트로 접속하면 나를 이리도 반겨준다 Congratulations

https 적용

상용화 할 예정이기에 https를 적용해주었다. 도메인은 가비아 에서 구매했다.

SSL 인증서 요청

도메인 등록과 SSL 인증서 요청과정은 생략

빨리빨리의 민족에게 고통스러운 인고의 시간.. 이 지나면 발급됨을 확인할 수 있다.

로드밸런서 설정

환경 > 구성 > 로드밸런서 > 편집 > 리스너 추가 에서

다음과 같이 HTTPS 프로토콜을 등록해주고 발급받은 SSL 인증서 를 등록해준다.

Route53 레코드 생성

호스팅 영역 > 레코드 생성 에서

다음과 같이 Elastic Beanstalk을 대상으로 레코드를 생성한다.

http -> https redirect 설정

여기는 몇가지 방식이 있는데 아마존 안내서에 나와있다. 그 중 나는 구성파일을 생성하는 방식을 택했다.
Django 프로젝트 최상단에 .ebextensions 디렉토리를 생성하고 https-redirect.config
를 작성해 주었다.

https-redirect.config

Resources:
  AWSEBV2LoadBalancerListener:
    Type: 'AWS::ElasticLoadBalancingV2::Listener'
    Properties:
      DefaultActions:
        - Type: redirect
          RedirectConfig:
            Protocol: HTTPS
            Port: '443'
            Host: '#{host}'
            Path: '/#{path}'
            Query: '#{query}'
            StatusCode: HTTP_301
      LoadBalancerArn:
        Ref: AWSEBV2LoadBalancer
      Port: 80
      Protocol: HTTP
  AWSEBV2LoadBalancerListener443:
    Type: 'AWS::ElasticLoadBalancingV2::Listener'
    Properties:
      Certificates:
        - CertificateArn: Replace with Certificate ARN
      DefaultActions:
        - Type: forward
          TargetGroupArn:
            Ref: AWSEBV2LoadBalancerTargetGroup
      LoadBalancerArn:
        Ref: AWSEBV2LoadBalancer
      Port: 443
      Protocol: HTTPS

모든 설정을 마치고 나면 https가 적용된 도메인으로 접속이 가능하다!

서버 구성은 아주 간단하고 쉽고 빨랐다.

profile
안되면 되게하라
post-custom-banner

0개의 댓글