[wecode Bonusweek] EC2 RDS 연동 gunicorn 배포하기

Jeongin·2020년 5월 8일
1

AWS

목록 보기
5/5

0. EC2서버에 접속

>>> ssh -i 파일이름.pem ubuntu@공인아이피


1. 미니콘다 설치하기

EC2서버 환경이 ubuntu이므로 ubuntu 64bit를 선택 마우스 오른쪽 버튼 메뉴에서 링크 주소 복사를 선택해 복사 해준다.   미니콘다 설치프로그램 다운로드

다음과 같은 순서로 진행한다.

  1. 설치스크립트 다운로드
>>> wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
  1. 다운로드가 되면 실행권한 주기
>>> Miniconda3-latest-Linux-x86_64.sh
  1. 설치하기
>>> ./Miniconda3-latest-Linux-x86_64.sh
  1. bash shell 스크립트로 변경된 환경설정 저장. 명령라인 앞에 (base) 가 표시된다.
>>> source .bashrc

2. 패키지 업데이트 및 업그레이드

>>> sudo apt-get update
>>> sudo apt-get upgrade

3. gcc설치하기

gcc를 설치해야 mysqlclient를 설치할 때 오류가 발생하지 않는다. gcc란?

>>> sudo apt-get install gcc

4. mysql 클라이언트 설치하기

>>> sudo apt-get install libmysqlcliend-dev

5. conda 프로젝트 가상환경 생성하기

>>> conda create -n 가상환경명 python=3.7

생성 한 가상환경으로 이동해준다.

>>> conda activate 가상환경명

6. 내 프로젝트 깃 내려받기

>>> git clone 깃허브주소
>>> cd 폴더명

내려받은 폴더로 이동한다.

7. requirements.txt로 패키지 설치하기

내 프로젝트에 사용된 패키지를 한 번에 설치하기

>>>	pip install -r requirements.txt

아래의 명령어로 requirements.txt있는 목록이 설치되었는지 확인할 수 있다.

>>> pip freeze

8. settings.py에 EC2서버 공인아이피 추가하기

EC2서버의 공인아이피(퍼블릭아이피)를 확인하여 settings.py에 추가해준다.
그리고 timezone을 Asia/Seoul로 수정해준다.

9. mysettings.py 만들기

manage.py가 있는 위치에 mysettings.py를 생성해준다. 내용은 내 프로젝트에서 했던 파일을 가져오는데 몇가지를 변경 해주어야 한다.

  • host 내가 생성한 RDS에 접속하여 엔드포인트를 확인하여 입력한다.
  • password 내가 RDS에서 데이터베이스를 생성할 때 설정한 비밀번호 이다.

    서버가 동작하는지 확인해본다.
>>> python manage.py runserver 0:8000

포스트맨으로 엔드포인트를 호출해본다. 아이피주소는 공인아이피로 입력한다.

>>> http://공인아이피주소/엔드포인트

정상적으로 리턴 값을 받으면 EC2서버를 통해 정상적으로 배포가 된 것이다.

10. gunicorn 설치하기

pip install gunicorn

django에서 사용하는 python manage.py runserver 명령어는 단일스레드로 동작하여 개발 및 테스트로는 적당하지만 리퀘스트가 많을 수 있는 운영환경에서는 적합하지 않으므로
멀티스레드를 지원하는 웹애플리케이션 서버프로그램인 gunicorn을 설치하여 배포한다.

gunicorn은 웹애플리케이션서버가 우리가 사용한 django웹애플리케이션을 돌려주는 방식이다.
ssh세션이 끊어져도 서버를 동작시키기 위해서 nohup이라는 툴을 사용해 백그라운드로 동작되도록 한다.

백그라운드 동작 없이 서버 실행하는 명령어

>>> gunicorn --bind=0.0.0.0:8000 이름.wsgi

백그라운드에서 동작할 수 있게 실행하는 명령어
wsgi - django의 웹애플리케이션을 지정 - django프로젝트폴더에 있는 wsgi 파일임
& - 백그라운드에서 동작하는 명령

>>> nohup gunicorn --bind=0.0.0.0:8000 이름.wsgi &

잘 실행이 됬는지는 아래의 명령어로 확인한다.

>>> ps -ef | grep python

포스트맨으로 정상 호출 되는지 확인해 볼 수 있다.

서버가 동작할 필요가 없을 때에는 종료 명령어 kill [PID번호]를 입력하여 종료시킨다. ps명령어를 입력하여 확인해보면 서버가 꺼진 것을 볼 수 있다.

kill 8292

0개의 댓글