일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- cloudera
- dataengineer
- 블로그
- AWS SageMaker
- 개발자혜성
- 개발자
- apache spark
- 데이터엔지니어
- eks
- 추천시스템
- Data engineering
- kubernetes
- mlops
- recommendation system
- 빅데이터
- 하둡에코시스템
- hadoop
- 클라우데라
- spark
- Spark structured streaming
- kafka
- pyspark
- Python
- 데이터엔지니어링
- Terraform
- 빅데이터플랫폼
- BigData
- 하둡
- DataEngineering
- redis bloom filter
- Today
- Total
Hyesung Oh
[AWS/cloud] 왕초보도 따라하는 AWS EC2 ubuntu 인스턴스 생성 및 Elastic Beanstalk 이용한 Django 웹 어플리케이션 배포하기 본문
[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
- 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
[커맨드]
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 주소
- 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
- 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 확인
settings.py -> ALLOWED_HOST =['위의 노란색 IP']
파일을 저장한 후 eb deploy를 실행해 애플리케이션을 배포합니다. eb deploy를 실행하면 EB CLI가 프로젝트 디렉터리의 콘텐츠를 번들링한 후 이를 환경에 배포합니다. + eb deploy 후 eb open 시에 아무런 에러 메세지 없으면 성공!
'Cloud > AWS' 카테고리의 다른 글
Aurora3.0 Mysql 8.0 TempTable engine 동작 이해 (0) | 2024.03.30 |
---|---|
PyAthena를 사용한 AWS Athena cross account access feat. assume role chaining (0) | 2023.07.22 |