[컴][웹] gunicorn WSGI Server

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 가 필요하나?

없어도 된다. 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

  1. Better performance by optimizing Gunicorn config | by Omar Rayward | Building the system | Medium

See Also

  1. 쿠…sal: [컴] Django + postgresql + uwsgi + nginx 설치하기, 배포하기
  2. 쿠…sal: [컴][웹] Django + nginx + uwsgi, wsgi ? 어떤 것을 선택할까?

References

  1. Gunicorn - Python WSGI HTTP Server for UNIX
  2. What is WSGI and Why Do You Need Gunicorn and Nginx in Django – apirobot
  3. django - Why do I need Nginx and something like Gunicorn? - Server Fault
  4. How To Serve Flask Applications with Gunicorn and Nginx on Ubuntu | DigitalOcean
  5. How To Set Up uWSGI and Nginx to Serve Python Apps on Ubuntu 14.04 | DigitalOcean : uWSGI + nignix

댓글 없음:

댓글 쓰기