안녕하세요 물개발자입니다.
google trend에 django를 찾아보면 위와 같은 검색어 흐름을 볼 수 있습니다. Django에 관심을 가지는 개발자 숫자가 많아지고 있음을 알 수 있습니다. 그리고 최근에 제가 근무하는 회사 지인이 AWS 환경에서 django 서비스를 운용해보고자 하는 경우가 있어 이와 같이 문서로 정리해봅니다.
다행히 aws에서 아래와 같이 친절한 한글 문서를 제공하고 있으니 이것을 기반으로 하겠습니다.
Django 애플리케이션을 Elastic Beanstalk에 배포
https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/create-deploy-python-django.html
기억하면 좋은 것들
requirements.txt
pip freeze > requirements.txt
EB는 관리형 서비스로 내부적으로 EC2를 생성을 합니다. 그리고 개발자가 개발한 django 앱을 실행하는데요, 실행에 필요한 패키지는 requirements.txt 에 기록된 패키지명과 버전이 기준이 됩니다. 그러니 개발과정에서 추가되거나 버젼이 변경이 되는 경우 반드시 requirements.txt 파일에 기록할 필요가 있습니다.
WSGIPath
.ebextensions/django.config
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: ebdjango/wsgi.py
문서에서는 ebdjango/wsgi.py로 적혀있습니다만, 본인의 프로젝트명에 따라서 변경해 주어야 합니다. manage.py의 위치를 기준으로 wsgi.py의 상대 경로를 지정해 주면 됩니다.
예를 들어 저와 같이 아래의 구조를 가지고 있다면 main/wsgi.py 가 맞습니다.
$ tree
.
├── main
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
eb init
eb init -p python-3.6 django-tutorial
You have not yet set up your credentials or your credentials are incorrect
You must provide your credentials.
(aws-access-id):
이와 같이 aws-access-id의 입력을 요구하고 있습니다. 아래의 링크를 통해서 profile 생성할 수 있습니다.
https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/create-deploy-python-django.html
그리고 만들어진 프로필 이름을 명시하면 계속 진행할 수 있습니다. 명령어 실행 결과 아래와 같이 region 설정이 되어있을 수 있는데요.
default_region: us-west-2
$ cat .elasticbeanstalk/config.yml
branch-defaults:
default:
environment: null
global:
application_name: django-tutorial
branch: null
default_ec2_keyname: null
default_platform: python-3.6
default_region: us-west-2
include_git_submodules: true
instance_profile: null
platform_name: null
platform_version: null
profile: aws-profile
repository: null
sc: null
workspace_type: Application
us-west-2는 아래 링크에서 확인할 수 있듯이 oregon 이므로 서울로 변경하고 싶다면 region 옵션도 추가해 주어야 합니다.
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html
eb init -p python-3.6 django-tutorial --profile [프로필이름] -region ap-northeast-2
키 페어
EB 가 관리하는 EC2 자원에 접근하기 위한 키 설정 과정입니다. 이 과정을 그냥 지나치면 ssh 명령어로 접근할 수 없으니 기존에 키 페어가 있다면 사용하고 그렇지 않은 경우 새로 만들어도 문제가 되지는 않습니다. 새로 만들어진 경우 그 키는 ~/. ssh 경로에 자동으로 생기니 놀라지 않으셔도 됩니다.
마무리
EC2를 직접 사용하는 IAAS 방식과 EB를 활용하는 PASS 방식 모두 클라우드 자원을 이용하는 접근하는 방식입니다. 각각이 주는 장단점이 있기 때문에 절대적으로 한 방식이 옳다고 얘기하는 것은 무리가 있습니다. 하지만 AWS에서 제공하는 서비스를 쉽게 활용하고 싶고, 서버 관리에 부담이 느껴지다면 EB를 선택하는 것도 좋은 선택이 될 수 있겠습니다.
'Develop' 카테고리의 다른 글
장고로 프로젝트 시작할 때 내가 설치하는 필수 패키지 (0) | 2020.03.18 |
---|---|
Python 가상 환경(virtualenv)이 필요한 이유 (0) | 2020.03.17 |
우분투 리눅스에서 자주 사용하는 툴 (0) | 2019.09.18 |
개발과정에서 자주 사용하는 명령어 모음 (0) | 2019.09.15 |
불필요한 브렌치 자동 제거 스트립트 (0) | 2019.09.13 |