Hyesung Oh

[AWS/cloud] 왕초보도 따라하는 AWS EC2 ubuntu 인스턴스 생성 및 Elastic Beanstalk 이용한 Django 웹 어플리케이션 배포하기 본문

Cloud/AWS

[AWS/cloud] 왕초보도 따라하는 AWS EC2 ubuntu 인스턴스 생성 및 Elastic Beanstalk 이용한 Django 웹 어플리케이션 배포하기

혜성 Hyesung 2019. 12. 26. 19:30
반응형

#AWS#EC2#ElasticBeanstalk

 

본인 pc 운영체제: window

생성한 ec2 운영체제 : ubuntu

1. ec2 인스턴스 생성 후 접속

- aws console 에 로그인해서 ec2

 

 

- 인스턴스 시작

 

 

- ec2 ami 에서 탬플릿 선택 (여기선 프리티어 선택) -> 검토 및 시작 -> 인스턴스 보기

 

 

* 주의 : 검토 및 시작 버튼 클릭 후 처음이자 마지막으로 ec2 접속키인 private key를 다운받을 수 있으므로 본인 pc (local) .ssh 디렉토리 하위에 저장해두는 것을 권장

pending 상태에서 10초 정도 기다리고 running 으로 바뀌는지 확인

- putty 접속 -> SSH -> auth -> private key load -> Session 으로 돌아가서 host Name 칸에 EC2 인스턴스의 IPv4 퍼블릭 IP 입력 (인스턴스 목록에서 확인 가능) -> session 명 적고 Save 클릭 -> Open

 

Browse 클릭 후 저장해둔 private key 로드
인스턴스 퍼블릭 IP
Session(최상위) 돌아가서 host name에 ip 입력 후 실행할 session 명(본인 맘대로) 적고 Save -> Open

 

- login as : ubuntu (ubuntu ec2 는 사용자명이 default로 ubuntu임)

 

 

2. 개발환경 구축

* 배포 사전 준비사항 : python3.x(버전 3.0 이상), pip3, awsebcli, virtualenv 

- ubuntu 환경에서 파이썬 설치하기

sudo apt-get update (update 해주지 않으면 설치에러 날 수도 있음)

sudo apt-get install python3.7

- pip3 설치

sudo apt install python3-pip

- 실행 경로 ~/.local/bin을 PATH 변수에 추가

이는 어디서든 pip3 명령어를 사용하기 위함

+보충설명 : 리눅스에서 명령어는 하나의 실행파일이라 볼 수 있다. 그 명령어에는 환경변수로 path 가 설정되어 있는데 이를 통해 어떤 경로에서든 명령어를 실행할 수 있다.

https://blueskywithyou.tistory.com/32

 

[참고] 리눅스에서 PATH (환경변수) 관련 설정 및 참고 내용

1. Path가 어떻게 걸렸는지 알고 싶다면? Shell 상에서 'export $PATH' 라고 입력하면 현재의 패스가 걸린 디렉토리가 전부 출력된다 혹은, 'export' 를 치면 전체 시스템상의 설정들 출력해 볼 수 있다. 2. 그럼..

blueskywithyou.tistory.com

[커맨드]

ls -a ~

nano .profile (Bash 에서는 .bash_profile 또는 .profile 파일을 텍스트 편집기로 열면 된다)

export PATH=LOCAL_PATH:$PATH

[키보드] crtl + x -> yes -> Enter(엔터키 누르면 파일명 그대로 저장)

다시 커맨드 창으로 돌아와서

source ~/.profile (현재 경로에 로드하는 커맨드)

pip3 --version (잘설치되었는지 확인)

- awsebcli 설치

pip3 install awsebcli --upgrade --user (awsebcli 설치)

eb --version (잘설치되었는지 확인)

- virtualenv 설치

pip3 install virtualenv

virtualenv 가상환경명(본인 원하는대로)

*실패시 virtualenv --python=python3.x(본인 버전) [가상환경명]

source 가상환경명/bin/activate (생성한 가상환결 활성화)

*비활성화는 deactivate

 

3. Elastic Beanstalk command 로 간단하게 배포하기

- 생성해둔 가상환경 활성 화 후 django 설치

source 가상환경명/bin/activate 

 

 

(web)~$ pip3 install django==2.0.2

- git clone 으로 django web application project 가져오기

git clone HTTPS 주소

 

https 주소 복사해서 붙여넣기

 

- EB 환경이 EC2에 설치할 module(django application build에 필요한 모듈) 관리

* 쉬운 방법

ec2에서 하지말고

본인 로컬환경(작업하면서 필요한 모듈 모두 설치된 상태)에서 작업할 때 터미널에서

pip freeze > requirement.txt 

명렁어를 통해 project 디렉토리 하위에 requirement.txt 생성 (로컬에서 작업하면서 설치했던 모듈들이 모두 적히게 됌)

(eb-virt) ~/ebdjango$ mkdir .ebextensions

- ebextensions 디렉토리 생성

(web) ~/ebdjango$ mkdir .ebextensions

.ebextensions 디렉터리 내에서 다음 텍스트가 있는 django.config라는 구성 파일을 추가합니다.

예 ~/프로젝트이름/.ebextensions/django.config

option_settings: aws:elasticbeanstalk:container:python: WSGIPath: ebdjango/wsgi.py

 

 

 

Django 배포연습 2 - nginx, wsgi 개념 · 초보몽키의 개발공부로그

Django 배포연습 2 - nginx, wsgi 개념 03 Mar 2018 | django deploy nginx wsgi nginx, uwsgi, docker를 활용한 배포 연습 과정을 기록한 글입니다. 개인 공부후 자료를 남기기 위한 목점임으로 내용상에 오류가 있을 수 있습니다. nginx, uwsgi를 통해서 아마존 EC2에서 장고 앱 어플리케이션을 실행시켜 보는 것을 목표로 한다. 최소한의 설정만을 포함한다. 1. 클라이언트 웹서버(Nginx)로

wayhome25.github.io

- elastic beanstalk 환경 생성

~/프로젝트디렉토리이름$ eb init -p python-3.6 django-tutorial(본인이 원하는 이름으로 설정 가능)

* 주의 : 프로젝트 디렉토리까지 이동해서 명령어를 실행해야함! git pull 또한 해당 프로젝트 디렉토리까지 이동해서 하는 것을 권장

ex)

 

 

Application django-tutorial has been created.

+ 번외

* eb init 후 key 입력 요구할 경우 aws configure 설정하기

- awscli 설치

pip3 install awscli

aws configure -> access key ID -> secret access key -> region : ap-northeast-2(한국기준) -> enter(나머지는 default로 설절)

 

 

key와 region을 제대로 입력하였다면 eb status -> output 메세지란의 cname 에서 host ip 확인 가능

 

그 다음 eb create django-env (마찬 가지로 본인이 원하는 이름으로 설정 가능)

약5분간의 시간이 소요된 후 완료가 되면

eb status 

를 통해 eb환경 host ip 확인

 

노란 색의 ip 를 settings.py 의 ALLOWED_HOST 목록에 추가한다.

 

settings.py -> ALLOWED_HOST =['위의 노란색 IP']

 

 

파일을 저장한 후 eb deploy를 실행해 애플리케이션을 배포합니다. eb deploy를 실행하면 EB CLI가 프로젝트 디렉터리의 콘텐츠를 번들링한 후 이를 환경에 배포합니다. + eb deploy 후 eb open 시에 아무런 에러 메세지 없으면 성공! 

 

반응형
Comments