uWSGI에 대한 정리 - vvonha/NaverAPI GitHub Wiki

uWSGI

❓ uWSGI는 무엇일까?

uWSGI란 WSGI라는 규칙을 따라서 만들어진 소프트웨어이며 정적인 웹 서버(Apache / Nginx)와 python으로 작성된 Web Framework(Flask / Django) 사이의 통신을 도와주는 역할을 한다.

WSGI(Web Server Gateway Interface) :
웹 서버 소프트웨어와 파이썬으로 작성된 웹 응용 프로그램 간의 표준 인터페이스입니다. 
표준 인터페이스는 여러 웹 서버에서 WSGI를 지원하는 응용 프로그램을 쉽게 사용할 수 있도록 합니다.
WSGI에 대한 추가 정보
기본적으로 웹 서버는 HTTP 형식의 요청을 받아서 처리한 뒤 응답해주는 기능을 한다. 
이와 같은 처리는 1차 적으로 nginx를 통해 이루어지며, 서버에서 처리해야 할 작업이 있다면 Flask와 같은 WAS 서버가 필요하다. 
하지만 Flask는 python으로 이루어져 있기 때문에 HTTP 요청을 이해할 수 없는데, 이때 uWSGI와 같은 소프트웨어가 필요한 것이다. 
즉, 파이썬 어플리케이션이 웹 서버와 통신하기 위한 명세라고 보면 된다.
정리하면, 파이썬 어플리케이션이 웹 서버와 통신하기 위한 명세가 WSGI인 것이다.

uWSGI는 일종의 어플리케이션 컨테이너(Application Container)로서 작동한다고 볼 수 있다. 적재한 Application(Django)을 실행만 시켜주는 역할을 하기 때문이다.

최종적으로 Django가 돌아가는 환경을 그려보면 아래와 같을 것이다.


uWSGI 설정 파일 만들기

확장자는 ini이다. 하나의 머신에 여러 프로젝트를 사용할 수 있으므로 uWSGI를 위한 디렉토리를 만들고, 설정 파일을 모아서 관리하도록 한다.

mkdir -p /etc/uwsgi/sites
touch /etc/uwsgi/sites/uwsgi.ini

apt와 같은 패키지 매니저로 소프트웨어를 설치하는 것처럼 /etc 디렉터리 하위에 폴더를 생성해 주고 설정 파일을 만들었다. 보통 uswgi.ini와 같은 이름으로 생성한다.