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을 사용
이 때, uWSGI와 Nginx를 실행하는 프로세스들이 모두 해당 소켓파일에 접근할 권한이 있어야함.
(실습떄는 uWSGI와 Nginx 모두 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파일)을 사용