Nginx와 함께 WSGI VS uWSGI 를 사용할 때 누구든지 장단점을 설명해 주 시겠습니까 ?
현재 저는 준비한 Django 웹 사이트의 프로덕션 서버를 구축 중이지만 WSGI 또는 uWSGI를 사용할지 결정할 수 없습니다. 각 구성의 차이점을 자세히 설명해 주시겠습니까? 어떤 구성이 가장 잘 확장되어야합니까?
미리 감사드립니다
답변:
좋아,이 혼란은 여러 소스의 세부 사항이 부족하고 이러한 프로토콜의 이름이 지정되었으며 WSGI가 실제로 무엇인지 때문입니다.
요약:
python manage.py runserver
됩니까?
python manage.py runserver
Django에 내장 된 내부 서버입니다. 아파치, nginx, gunicorn 또는 다른 어떤 것도 아닙니다. Werkzeug 프레임 워크를 사용하는를 django-extensions
제공 runserver_plus
하지만 서버와 거의 비슷합니다 runserver
.
일반적으로 기본 웹 서버와 별도의 프로세스에서 Python을 실행하는 것이 가장 좋습니다. 이렇게하면 웹 서버는 정적 콘텐츠를 매우 빠르게 제공하는 많은 작은 스레드를 가질 수 있으며, 별도의 Python 프로세스는 크고 무겁고 각각 자체 Python 인터프리터를 실행합니다. WSGI
큰 Python 인터프리터로 nginx 스레드를 모두 부풀리기 때문에 평범한 것은 나쁩니다. flup
or gunicorn
또는 uWSGI
behind를 사용하는 nginx
것이 훨씬 낫습니다 .nginx를 사용하여 단순히 콘텐츠를 제공하고 동적 콘텐츠를 제공하기 위해 가져온 무거운 Python 스레드 수에 관계없이 실행할 작은 가벼운 nginx 스레드 수를 선택할 수 있기 때문입니다. 사람들은 현재 매우 만족해 보이지만 gunicorn
이 세 가지 옵션 중 어느 것이 든 잘 작동 할 것입니다.
앞으로도로드가 심각해지기 시작할 때 Python을 다른 서버로 옮길 수 있습니다.
여기 http://flask.pocoo.org/docs/deploying/uwsgi/ 가 혼란을 해소하는 좋은 대답 이라고 생각합니다 . 이 질문은 어리석은 일이 아닙니다. 두 용어를보고 mod_PHP 외부에서 작동하는 방식에 대한 사전 정보가없는 모든 사람에게 발생합니다 (예 : PHP 또는 사람들에 대한 내용 없음).
이 사이트는 nginx의 좋은 배포 예제뿐만 아니라 무엇이 필요한지, 차이점이 무엇인지 실용적인 용어로 설명하는 데 효과적입니다.
편의를 위해 Flask wiki의 설명이 여기에 인용되어 있습니다.
uWSGI는 nginx, lighttpd 및 cherokee와 같은 서버의 배포 옵션입니다. 다른 옵션은 FastCGI 및 독립형 WSGI 컨테이너를 참조하십시오. uWSGI 프로토콜과 함께 WSGI 응용 프로그램을 사용하려면 먼저 uWSGI 서버가 필요합니다. uWSGI는 프로토콜이자 응용 프로그램 서버입니다. 응용 프로그램 서버는 uWSGI, FastCGI 및 HTTP 프로토콜을 제공 할 수 있습니다.
가장 많이 사용되는 uWSGI 서버는 uwsgi이며이 가이드에서 사용할 것입니다. 따라하기 위해 설치했는지 확인하십시오.