Django 서비스 배포를 위해 AWS의 elasticbeanstalk에 대해 공부한 내용을 정리합니다.
Elasticbeanstalk
- 자동적으로 ec2 인스턴스를 생성합니다.
- ec2 생성 및 배포를 위한 단축키로 생각하면 좋습니다.
- git branch와 연동하여 test / service 서버 배포를 쉽게 할 수 있습니다.
- 로드밸런서, 오토 스케일링 등 배포에 필요한 작업들을 자동적으로 진행 해 줍니다.
EB CLI를 활용하여 Django 앱 배포
참고 : https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/create-deploy-python-django.html
- EB CLI를 설치 한 뒤,
eb init
명령어를 통해 EB 환경 설정을 진행 해 줍니다.1
2pipenv install awsebcli --dev eb init
- AWS IAM을 통해 사용자를 추가하고, access-id / secret-key를 발급 받아 EB init 도중에 사용자를 입력하여 줍니다.
- 이때 user의 secret-key는 두번 다시 확인 할 수 없으므로, 다운로드 받아 잘 보관 해 두는것이 좋습니다.
- 실제 서버에서는 python manage.py runserver가 아닌, WSGI를 활용하여 서버를 실행합니다. ( 속도 등의 다양한 이유로 )
- 프로젝트의 root에
.ebextensions
폴더를 생성 하고, 해당 폴더 속에django.config
파일을 생성 한 뒤 아래의 내용을 입력합니다.1
2
3option_settings: aws:elasticbeanstalk:container:python: WSGIPath: config.wsgi
-
option_settings
는 Elastic beanstalk를 구성하고 있는 auto scaling, loadbalancer, elasticbeanstalk과 같은 구성 요소들의 셋팅 값을 설정하는 공간입니다. -
aws:elasticbeanstalk:container:python
는 python의 환경 변수를 설정 하겠다는 의미입니다. -
WSGIPath: config.wsgi
는 WSGIPath의 값을 config.wsgi로 설정 하겠다는 의미입니다. -
config/wsgi 가 아닌 것에 주의 ! / 를 사용하면 제대로 인식하지 못함 ( 플랫폼 정보 : arn:aws:elasticbeanstalk:ap-northeast-2::platform/Python 3.7 running on 64bit Amazon Linux 2/3.1.1 )
- 아래의 명령어를 통해 EB환경의 로그 ( django error log / http connection log / eb log … ) 들을 확인 할 수 있습니다.
1
eb logs
-
Git / EB 연동 하기 참고 : https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/eb3-cli-git.html
-
가상 환경에 설치 된 패키지들을 EB에 설치 해 주려면, 프로젝트의 root에 requirements.txt를 만들어 놓으면 EB가 이를 인식하여 패키지들을 자동적으로 설치 해 줍니다.
-
pipenv_to_requirements
패키지를 활용하면 requirements.txt를 쉽게 생성 할 수 있습니다. - Git과 EB가 연동 되어 있다면, 커밋 된 내용만 EB에 반영되므로 배포 전 반드시 커밋을 하셔야 합니다.
1
2eb deploy # EB 배포 eb open # EB 확인
Elasticbeanstalk 장단점
장점
- 코드 배포가 상당히 간단합니다.
- ec2 인스턴스 생성, 로드밸런서 설정 등을 자동적으로 진행 해 줍니다.
- git 연동도 상당히 쉬워 서버 배포에 어려움이 없습니다.
단점
- 로드밸런서, S3등 자동적으로 만들어지는 서비스가 많아 가격이 비쌀 수 있을 것 같습니다. ( 정확히 확인 되지 않음 )
- AWS에 이미 구축된 서비스의 경우, EB로 옮기기엔 쉽지 않습니다.
"Django" 카테고리의 최근 포스팅
카테고리 모든 글 보기Zappa를 활용하여 Django 배포하기 - S3에 연결하기 | 2020. 10. 11 |
---|---|
Zappa를 활용하여 Django 배포하기 - MySQL RDS에 연결 & Migrate 하기 | 2020. 10. 10 |
Django - django-dotenv 사용하기 | 2020. 10. 09 |
That port is already in use error in macOS | 2020. 10. 08 |
Zappa를 활용하여 Django 배포하기 - not authorized to perform error | 2020. 10. 04 |
Zappa를 활용하여 Django 배포하기 | 2020. 10. 03 |
Elastic Beanstalk - Django AWS S3 연결하기 ( static file ) | 2020. 09. 29 |
Elastic Beanstalk - Django AWS postgresql RDS migration 진행하기 | 2020. 09. 28 |
Elastic Beanstalk "Command 01_migrate failed" Error | 2020. 09. 28 |
Django 서버 에러 받기 - sentry 사용하기 | 2020. 09. 28 |