본문 바로가기

장고(DJango)

(작성중) 장고 배포 하기 (gunicorn, Nginx)

우리가 그동안 장고를 실행할 때 python manage.py runserver 를 입력하여 개발 하는 도중 서버를 실행하여 각종 테스트를 해봤다. 하지만 장고의 내장서버를 이용하여 실제로 운영하는데에는 많은 한계가 있다. 내장 서버는 오직 개발 테스트 용으로만 써야 한다.

 

Now’s a good time to note: don’t use this server in anything resembling a production environment. It’s intended only for use while developing.

장고 튜토리얼에 게시되어 있는 글이다. 이것을 실제 배포용 서버로 사용하지 마라. 오로지 개발을 위해 사용하라. 라고 되어 있다.

 

자 그럼 이제 실제로 배포를 하기위해 필요한 것들을 하나하나 알아보자.

 

우선, 클라이언트와 서버의 통신에 대해 생각해보자. 클라이언트가 서버에 요청을 보내면 "웹서버"는 그 응답을 받아 정적 페이지의 경우는 직접 처리를 하고, 동적 페이지의 경우는 코드를 실행하여야 하기 떄문에 "장고"에게 전달한다. 하지만 대부분의 웹 서버는 파이썬 프로그램을 호출하는 기능이 없다. 그래서 웹서버와 장고를 중계 해주는 WSGI(Web Server Gateway Interface)서버가 반드시 필요하다. 웹서버가 클라이언트에게 요청받아 동적 페이지를 생성해야 하는 경우 WSGI서버를 호출하고, WSGI 서버는 이를 파이썬에 맞게 고친 후 장고(WSGI 에플리케이션)를 호출한다. 즉 WSGI는 중계기 역할을 하는 것이다.

 

다음과 같은 구조라고 생각하면 된다.

Nginx 는 주로 파이썬과 함께 이용하는 웹서버이고, WSGI 서버에는 대표적으로 Gunicorn, uWsgi가 있는데 이번 포스트에서는 Gunicorn을 사용해 보겠다. Gunicorn은 간단하고, 서버의 리소스를 적게 쓴다고 한다. uWsgi의 경우는 오로지 C언어로만 구현되었고 조금더 하드(?)하다고 한다.

 


설치

 

우선 Gunicorn 먼저 설치한다.

pip install gunicorn