Nginx uWSGI Web Application

Nginx - uWSGI - Django

Web Server <-> WSGI <-> Web Application

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파일)을 사용