YEOJIN-DEV

nginx - uWSGI - Django 연결

July 06, 2018 | 1 Minute Read

라이언트와 Django 사이에는 웹 서버, WSGI 등의 웹 애플리케이션이 존재한다. 그들 사이의 연결 방법을 정리해보았다.

Nginx

웹 서버 설정

/etc/nginx/nginx.conf
  • user: nginx 프로세스를 실행할 유저
  • daemon: off로 나타낼 시, background가 아닌 foreground프로세스로 실행
    • nginx -g 'daemon off;' <- 이것과 같은 효과가 됨

운영가능한 가상서버(Virtual host)

A, B, C, D, E 5개의 서버정보가 있다면, sites-available폴더에 들어있음

/etc/nginx/sites-available/*

실제 운용중인 가상서버

sites-available폴더에 있는 파일을 링크해서 사용

/etc/nginx/sites-enabled/<링크파일>

링크 명령어

ln -s <소스> <타겟>

Nginx와 uWSGI

Web Server <-> WSGI

서로간에 Unix socket을 사용해서 연결 /tmp/app.sock을 사용

이 때, uWSGINginx를 실행하는 프로세스들이 모두 해당 소켓파일에 접근할 권한이 있어야 함

(실습때는 uWSGINginx모두 root계정을 사용해서 해결)

Nginx에서

자신의 가상서버 설정 (server블록)의 location에서, uwsgi_pass부분에 유닉스 소켓 프로토콜과 위치(unix://, /tmp/app.sock)을 지정

uWSGI에서

uWSGI를 실행하기 위한 설정파일 (uwsgi.ini)의 socket항목에 /tmp/app.sock을 지정

uWSGI

uWSGI의 설정은 <파일명>.ini파일에 ini방식으로 설정을 기술

  • chdir: 웹 애플리케이션의 파이썬 프로젝트 루트 폴더
  • home: 실행할 파이썬 가상환경 / 파이썬 인터프리터의 위치
  • module: 웹 애플리케이션에서 WSGI프레임워크와의 연결을 기술한 파이썬 모듈

uWSGI와 Django

WSGI <-> Web Application

서로간의 연결에 웹 애플리케이션(Django)의 config.wsgi모듈 (app/config/wsgi.py파일)을 사용