AWS

AWS EC2를 이용하여 django 배포하기 (1)

Developer trainee_J ^~^ 2023. 6. 5. 20:42

이번 포스팅은 아마존에서 제공하는 클라우드 컴퓨팅 서비스를 이용하여 django를 배포한 과정을 적어보려고한다. 

 

왜 AWS를 이용하여 배포를 하는가? 

 

프로야구 집계 데이터 제공 프로젝트를 진행하면서 Airflow, DB, django 등 각각의 서비스를 기존에 사용중인 PC에 올려서 배포를 하려했으나, PC를 항상 켜두어야 한다는 점과 운영체제가 Windows라는 점 때문에 차라리 AWS를 이용하여 배포하면 언제든지 활성화 되어있는 서버 환경과 ubuntu 운영체제를 쉽게 이용할 수 있다는 강점이 있어서 AWS를 사용하기로 했다. 

 

AWS 계정 생성 

AWS EC2를 이용하기 위해서는 우선 계정부터 생성해야한다. 

 

무료 클라우드 컴퓨팅 서비스 - AWS 프리 티어

Q: AWS 프리 티어란 무엇입니까? AWS 프리 티어는 고객에게 서비스별로 지정된 한도 내에서 무료로 AWS 서비스를 살펴보고 사용해 볼 수 있는 기능을 제공합니다. 프리 티어는 12개월 프리 티어, 상

aws.amazon.com

새로운 계정을 생성하면 1년간 무료로 프리 티어를 이용할 수 있다. 

 

EC2 인스턴스 생성 

 

0. EC2 인스턴스란?

가상머신을 생성하고 실행하는데 사용되는 가상 컴퓨팅 환경으로 서버라고 생각하면 될 것 같다.

 

1.  EC2 인스턴스 시작하기 

 

AWS 홈페이지에서 좌측 상단에 있는 서비스 -> 컴퓨팅 -> EC2를 클릭한 후 

 

인스턴스 시작버튼을 눌러준다. 

 

이제 생성할 인스턴스에 대한 정보를 입력해준다. 

인스턴스의 이름 지정

 

사용할 OS 이미지

여러 환경이 있지만 필자는 Ubuntu를 사용했다. 여기서 주의할 점은 "프리 티어 사용 가능" 문구가 있는 것만 무료로 사용이 가능하다. 

인스턴스 유형 선택

메모리나 CPU 스펙을 선택하는 부분, OS선택과 마찬가지로 프리 티어 사용 가능 문구가 있는 옵션을 선택해준다. 

 

키 페어 선택

AWS에서 가상 서버에 접근하려면 키 페어가 필요하다. 여기서 필자는 개인키를 생성해서 지정해줬다. 

키 페어를 생성하면 .pem파일이 다운로드되는데 이 파일은 인스턴스의 터미널에 접속할 때 사용되므로 잘 보관 해둬야한다. 

 

 

네트워크 설정란이다. 이 옵션은 인스턴스 생성 후 수정해줄것이기 때문에 그대로 남겨두고 넘어간다. 

 

스토리지 구성란이다. 기본적으로 8G가 잡혀있지만 프리 티어를 사용하는 유저는 30G까지 사용가능하므로 30G로 설정했다. 

 

 

이제 하단에 있는 인스턴스 시작을 눌러주면 인스턴스가 시작된다. 

 

2.  EC2 보안그룹 설정하기 

default상태의 인스턴스는 포트가 열려있지 않기 때문에 서버에서 django를 실행시켜도 외부환경에서 절대 접속할 수 없다. 그렇기 때문에 사용할 포트를 미리 열어 둬야한다. 

 

좌측메뉴에 인스턴스 - 인스턴스를 누르면 내가 생성한 인스턴스들이 보일것이다.

 

여기서 보안그룹의 이름을 확인한 뒤  좌측 메뉴의 네트워크 및 보안 - 보안 그룹을 눌러준다. 

lauch-wizard-3가 방금 생성한 인스턴스의 보안그룹이고 이 보안그룹의 인바인드 규칙을 편집해준다. 

내가 오픈할 포트는 django에서 사용할 8000포트와 DB가 사용할 3306포트이다. 

ip를 지정할수도 있지만 우선은 모든 ip가 사용할 수 있도록 0.0.0.0/0 으로 설정했다. 

 

다시 인스턴스 화면으로 돌아와서 보안그룹을 확인하면 8000과 3306포트가 열려있는 것을 확인할 수 있다. 

2. 인스턴스에 연결하기 

 

이제 인스턴스에 연결하는 과정이다. 연결에는 웹 화면에서 터미널을 여는 방법과 내 터미널에서 인스턴스 터미널에 접속하는 방법이 있다. 처음에는 웹 화면에서만 열 수 있는 줄 알고 엄청 느린 환경에서 작업을 해야했다...

아무튼 인스턴스 터미널에 접속해보자 여기서 필요한 것은 아까 다운로드 받아 둔 키 페어가 필요하다. 

powershell을 킨 후 다운로드 받은 .pem 파일이 있는곳으로 이동한다. 

그 다음에 

화면 상단에 있는 연결 버튼을 누른 후

예 아래 쪽에 있는 명령어를 복사하여 powershell에 입력한다. 

그러면 연결을 할거냐고 물어보는데 yes라고 입력해주면 된다. 

 

 

이렇게 하면 간단하게 서버환경을 구성할 수 있다. 

 

필자는 이 상태에서 가장먼저 Docker 위 Airflow구축을 목표로 했었는데 잘 되지 않았다. 

이유는 Airflow가 원하는 메모리인 4G보다 턱없이 적은 1G의 메모리만 가지고 있어서 Airflow를 띄우면 인스턴스가 엄청 느려지며 터미널 접속조차 되지않았다.. 그래서 아쉬운대로 Airflow는 기존처럼 개인 PC에서 배포하고 나머지 django와 DB는 인스턴스에서 배포하려고한다. 

 

포스팅이 너무 길어져서 mariadb 설치, django설치 및 실행, CI/CD 환경 구축과정은 다음포스팅에서 다뤄볼것이다.