TIL - AWS | EC2, RDS 배포

한성봉·2021년 7월 9일
0

AWS 배포

지난번 RDS 생성하는 과정까지 해보았다. 이후 EC2 서버에 배포하고 싶은 프로젝트를 클론받아 RDS 와 연동해 gunicorn으로 연동하는 작업을 해보겠다.
우선 EC2 서버에 접속해보자.

우선 우리가 EC2를 생성하며 받았던 aws_pem파일이 있는 폴더로 이동한 후 접속하자

EC2 서버 접속

  • EC2 서버 접속
$ ssh -i <파일이름.pem> ubuntu@ <EC2 퍼블릭 IPv4 주소>

이후 local 개발환경과 같은 설정을 하기 위해 미니콘다를 설치하자.
미니콘다 공식 홈페이지

이후 각자 EC2 생성 때 만들었던 환경에 맞게 미니콘다를 설치하자. 나는 ubuntu 를 받았기 때문에 Linux installers 에서 파이썬 버전에 맞게 다운 받았다.

미니콘다 설치

  • 미니콘다 설치
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
  • 미니콘다 권한설정
$ chmod Miniconda3-latest-Linux-x86_64.sh
  • 미니콘다 실행
$ ./Miniconda3-latest-Linux-x86_64.sh

이후 나오는 화면에서 Yes 를 하여 진행!

  • 로컬 환경과 같게 설정
$ source .bashrc

명령어 실행 후 우리가 익숙하게 보던 듯이 명령어 줄 제일 앞에 (base) 생성

우분투 환경 셋팅

  • apt-get update
$ sudo apt-get update
$ sudo apt-get upgrade
  • gcc 설치
$ sudo apt-get install gcc

gcc 컴파일러는 mysqlclient 설치 충돌이 나지 않게 하는 명령어이다.

  • mysqlclient 설치
$ sudo apt-get install libmysqlclient-dev

이후 부터는 프로젝트를 할 때마다 만들었다 콘다 가상환경을 만들어주면 된다.

$ conda create -n <가상환경 이름> python='version'
  • 가상환경 실행
$ conda activate <생성한 가상환경 이름>

배포할 프로젝트 클론

  • 프로젝트 클론하기
$ git clone <배포할 프로젝트 repository>

requirement.txt 다운

$ pip install -r requirement.txt

이전 프로젝트에서 설치했던 환경과 같은 환경으로 설치가 된다. -r은 한번에 내려받는 명령어이다.

EC2 ip settings.py 설정

  • settings.py 로 이동
$ vi gonggol/settings.py

EC2 IP 주소 적혀있는 부분에 자신의 EC2 주소를 넣어주면된다.

my_settings.py 설정

vi my_settings.py
### my_settings.py
SECRET_KEY = 'django-insecure-(*dxkt(57rc7mak7hhr-w*5278inku_rb&ck8l0$@73xu)(j^s'

DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '프로젝트 이름',
        'USER': 'root',
        'PASSWORD': 'RDS 비밀번호',
        'HOST': 'RDS 엔드포인트',
        'PORT': '3306',
    }
}

ALGORITHM = 'HS256'

이후 local DB에 있던 데이터를 RDS에 이전하는 작업을 한 뒤 서버를 실행시키면 문제없이 동작할 것이다. 문제가 있다면 오류를 수정하면서 해결해보자..

이후 포스트맨에서 항상 로컬로 요청하던 것을 EC2서버로 요청이 잘 되는지 확인해 보자.

http://localhost:8000/product?categoryId=2
http://EC2 IP:8000/product?categoryId=2

위에서 아래로 변경해준 뒤 포스트맨으로 요청하면 확인이 가능하다.

하지만 우리는 gunicorn이라는 WAS(Web Application Server)를 통해 배포해야한다. WAS로 하는 이유는 별도로 자세하게 포스팅하겠다.

Gunicorn 설치

  • gunicorn 설치
pip install gunicorn
  • gunicorn 서버 실행
nohup gunicorn --bind=0.0.0.0:8000 gonggol.wsgi &
  • 실행 확인
ps -ef | grep python

PID 확인 가능

  • gunicorn 서버 끄기
Kill <PID>

프로젝트 당시에 오류가 없었다면 다음 과정을 진행하면 별 문제없이 배포가 가능 할 것이다. 여기까지 AWS EC2, RDS 배포에 대한 글을 마치겠다.

0개의 댓글