간단하게 개발한 성격유형 테스트를 드디어 배포했다...!!!
평소처럼 EC2 인스턴스를 생성해서 배포할 생각이었는데 Elastic Beanstalk
의 존재를 알게 되었다.
아아니.. 코드를 업로드하기만 하면 서버 구성을 알아서 해준다고? 간단한 프로젝트니까 간단하게 배포를 하면 얼마나 좋을까!! 바로 사용해보았다.
(하지만 늘 그렇듯 그리 간단하진 않았다...)
간단하게 EB가 무엇인지 알아보자
애플리케이션을 실행하는 인프라에 대해 자세히 알지 못해도 AWS 클라우드에서 애플리케이션을 신속하게 배포하고 관리할 수 있다. 애플리케이션을 업로드하기만 하면 Elastic Beanstalk에서 용량 프로비저닝, 로드 밸런싱, 조정, 애플리케이션 상태 모니터링에 대한 세부 정보를 자동으로 처리한다.
외에 자세한 정보는 필요하지 않았다 바로 웹 앱을 생성해 보았다.
Django
프로젝트기에 Python
선택해주었다.
소스는 추후에 업로드 하기로 하고 샘플 애플리케이션
으로 바로 시작해주었다.
조금 기다리면 애플리케이션이 생성된다. 초록불!!!!!
(그러나 다시 초록불을 보기까지는 .. 오랜 시간이 걸렸다..)
상용화 할 예정이기에 https를 적용해주었다. 도메인은 가비아
에서 구매했다.
도메인 등록과 SSL 인증서 요청과정은 생략
빨리빨리의 민족에게 고통스러운 인고의 시간.. 이 지나면 발급됨을 확인할 수 있다.
환경 > 구성 > 로드밸런서 > 편집 > 리스너 추가 에서
다음과 같이 HTTPS
프로토콜을 등록해주고 발급받은 SSL 인증서
를 등록해준다.
호스팅 영역 > 레코드 생성 에서
다음과 같이 Elastic Beanstalk을 대상으로 레코드를 생성한다.
여기는 몇가지 방식이 있는데 아마존 안내서에 나와있다. 그 중 나는 구성파일을 생성하는 방식을 택했다.
Django 프로젝트 최상단에 .ebextensions
디렉토리를 생성하고 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가 적용된 도메인으로 접속이 가능하다!
서버 구성은 아주 간단하고 쉽고 빨랐다.