mod wsgi / uwsgi / wsgi
gunicorn WSGI Server
- Unix 에서 사용하는 Python WSGI HTTP Server
- pre-fork worker model
wsgi server
WSGI 는 protocol이다. wsgi는 web server 와 web application 사이의 통신 표준이다.[ref. 2]
web client – web server – wsgi server – django
wsgi server 에 python web application server(flask, django, …) 를 import 해서 부르게 된다.
종류
- mod_wsgi
- uWSGI
- gunicorn
nginx 와 통신
gunicorn 이 unix socket 을 만들어서 web server 와 통신을 한다.
ref. 4와 ref. 5 를 보면, niginx 에서 받은 request 를 unix socket 을 통해서 wsgi server 로 보내는 것을 알 수 있다.
niginx 나 Apache 가 필요하나?
- django - Why do I need nginx when I have uWSGI - Server Fault
- Native HTTP support — uWSGI 2.0 documentation
없어도 된다. wsgi server 자체가 하나의 web server 이다.
다만 좀 더 안정적이고 더 많은 load 를 감당하려면, niginx 나 apache 같은 web server 를 쓰면 된다. 그러면 web server 의 다른 feature 들도 사용할 수 있다.(compressed, etag, …)
Deploying Gunicorn — Gunicorn 20.1.0 documentation 에서도 niginx 쓰는 것을 강력히 권한다.
nginx + gunicorn + django
nginx 를 앞에 두면 static file 에 대한 serve 는 niginx 가 하지만, dynamic 하게 page 를 만들어야 하는 경우는 wsgi server(gunicorn) 으로 보내게 된다.
web client 가 특정 페이지에 대한 request 를 보냈을때 그것이 dynamically 만들어야 하는 페이지라면 nginx 가 gunicorn으로 전달히게 된다. 그리고 gunicorn이 처리된 결과를 다시 niginx 로 보내면 nginx 가 web client 로 응답을 보내게 된다.[ref. 3]
gunicorn 과 nginx 모두 http request 를 handle 한다.
gunicorn config
See Also
- 쿠…sal: [컴] Django + postgresql + uwsgi + nginx 설치하기, 배포하기
- 쿠…sal: [컴][웹] Django + nginx + uwsgi, wsgi ? 어떤 것을 선택할까?
References
- Gunicorn - Python WSGI HTTP Server for UNIX
- What is WSGI and Why Do You Need Gunicorn and Nginx in Django – apirobot
- django - Why do I need Nginx and something like Gunicorn? - Server Fault
- How To Serve Flask Applications with Gunicorn and Nginx on Ubuntu | DigitalOcean
- How To Set Up uWSGI and Nginx to Serve Python Apps on Ubuntu 14.04 | DigitalOcean : uWSGI + nignix
댓글 없음:
댓글 쓰기