Server/django

[Django] 장고 기초 - AWS 배포하기

또잉코딩 2020. 3. 5. 14:49

1. AWS 과금 주의

2. AWS 계정 생성 (회원가입)

3. elastic beanstalk 명령어를 입력하기 위해서 awsebcli 설치

pip install awsebcli --upgrade --user

 

.gitignore 생성

먼저 깃에 프로젝트를 올린다. 곧 beanstalk관련 된 파일들이 생기는데 이것들을 굳이 저장소에 올릴 필요가 없으니 gitignore파일을 수정 해준다.

### Django ###

*.log

*.pot

*.pyc

__pycache__/

local_settings.py

db.sqlite3

media

 

# Elastic Beanstalk Files

.elasticbeanstalk/*

!.elasticbeanstalk/*.cfg.yml

!.elasticbeanstalk/*.global.yml

 

필요한 파일 생성

먼저 manage.py 가 위치한 폴더에 requirements.txt 파일을 만든다.

requirements 파일은 의존성 파일로, 프로젝트가 실행될 때 필요한 설정들을 적는 파일이다.

 

더불어 manage.py 가 위치한 폴더에 .ebextensions 폴더를 만들어주고, 그 안에 django.config라는 의존성 파일을 만들어준다.

option_settings:

    aws:elasticbeanstalk:container:python:

        WSGIPath: <프로젝트이름>/wsgi.py

 

github에 add - commit - push 를 한다.

 

AWS에 배포하기

가상환경을 끄고 다음과 같은 명령어를 입력해본다.

$ eb init -p python-3.6 <앱 이름>

eb init이 처음이라면 AWSAccessKeyId와 AWSSecretKey를 입력하라고 나올 수 있다. 그럴 때는 aws사이트에 접속해 우측 상단 콘솔에 로그인 버튼을 클릭하고, 상단의 계정이름을 선택하면 드롭다운 메뉴에 내 보안 자격 증명 메뉴를 선택한다. 팝업이 뜨면 확인 해주고 엑세스 키 탭을 선택한다. 그리고 새 엑세스 만들기를 클릭하면 자신의 아이디와 시크릿키가 기재된 파일이 다운로드 된다. 그 아이디와 시크릿키를 터미널에 입력하면 된다.

 

조금 기다리면 <앱 이름>이라는 이름의 앱이 만들어졌다. 라는 문구가 뜨며 왼쪽 탭에 .elasticbeanstalk 폴더가 생성되는 것을 확인 할 수 있는데 eb가 우리 프로젝트에 활성화 되었다는 뜻임을 알 수 있다.

활성화가 되었으니 이제 장고에 걸맞는 환경을 만들어줘야 한다.

$ eb create django-env

aws라는 시스템을 이용하는 것은 우리의 프로젝트가 다른 컴퓨터의 서버를 할당받아서 쓰는 과정이다. 그렇기 때문에 eb create django-env 는 장고로써 사용할 수 있는 환경을 서버 컴퓨터로부터 할당받는 과정이라고 말 할 수 있다.

이렇게 환경설정이 끝나면 프로젝트를 위한 도메인이 하나 할당된다.

$ eb status

할당된 도메인을 확인해 보기 위해 eb status 를 입력하고 CNAME을 확인해 보면, 노란색으로 표시된 CNAME이 바로 우리의 프로젝트를 확인 해 볼 수 있는 도메인이다. 할당된 도메인을 우리 프로젝트에게 알려주기 위해 settings.py를 수정한다.

ALLOWED_HOSTS = [ '<할당받은 CNAME>' ]

그리고 변경된 사항을 git에 업로드 해준다.

 

만든 앱을 서버로 배포

$ eb deploy

위의 명령어를 입력해 Success가 뜨면 성공, 에러가 뜨면 다시 시도해 볼 수 있다.

$ eb open

위의 명령어로 방금 배포한 사이트를 열 수 있다. CNAME을 직접 주소창에 입력해도 된다.

$ eb terminate --all

어플리케이션 삭제

 

 

aws 공식 가이드

Django 애플리케이션을 Elastic Beanstalk에 배포 - AWS Elastic Beanstalk

 

https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/create-deploy-python-django.html

Django 애플리케이션을 Elastic Beanstalk에 배포

docs.aws.amazon.com

각종 에러모음

Django(장고) 프로젝트 Elastic Beanstalk로 서버에 쉽게 배포하기

 

Django(장고) 프로젝트 Elastic Beanstalk로 서버에 쉽게 배포하기

제작한 웹사이트를 서버에 배포하는 일이란 생각보다 쉬운 일이 아니다. 개인 컴퓨터를 하루종일 켜둘 의향이 있지 않은 이상 AWS(Amazon Web Service)나 마이크로소프트의 Azure를 통해 프로젝트를 배포하는 것이 일반적이다.

medium.com

aws 공식 사이트

Amazon Web Services (AWS) - Cloud Computing Services

 

클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

미디어 및 엔터테인먼트 Live Nation Entertainment, AWS를 사용하여 혁신 속도를 높이고 비용을 절감하며 애플리케이션 가용성을 개선 세계 최고의 라이브 엔터테인먼트 기업이 어떻게 AWS 클라우드를 사용하여 고객에게 개선된 경험을 더욱 빠르게 제공하는지 알아보십시오. 자세히 알아보기  보다 나은 고객 경험 추구 Live Nation은 콘서트를 제작하고, 티켓을 판매하고, 밴드를 음악과 연결해주는 세계 최고의 라이브 엔터테인먼트 기업입니다

aws.amazon.com

eb command not found 에러가 뜬 경우

Windows에 Python, pip 및 EB CLI 설치 - AWS Elastic Beanstalk

 

https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/eb-cli3-install-windows.html

Windows에 Python, pip 및 EB CLI 설치

docs.aws.amazon.com

eb init을 처음 했을 때 아이디,시크릿 키 발급하는 방법

http://wildpup.cafe24.com/archives/929

 

AWS Access Key와 Secret Key를 만들고 CLI 사용해보기 | 야생강아지 WILDPUP

Access Key와 Secret Key는 AWS의 CLI 도구나 API를 사용할 때 인증을 위하여 사용되는 수단이다

wildpup.cafe24.com