WSGI, CGI 및 프레임 워크는 모두 어떻게 연결되어 있습니까?
Apache는 포트 80에서 수신 대기합니다. HTTP 요청을받습니다. 응답 방법을 찾기 위해 요청을 구문 분석합니다. 아파치는 응답을위한 많은 선택이있다. 응답하는 한 가지 방법은 CGI를 사용하여 스크립트를 실행하는 것입니다. 응답하는 또 다른 방법은 단순히 파일을 제공하는 것입니다.
CGI의 경우 Apache는 환경을 준비하고 CGI 프로토콜을 통해 스크립트를 호출합니다. 이것은 표준 Unix Fork / Exec 상황입니다. CGI 하위 프로세스는 소켓 및 stdout을 포함한 OS 환경을 상속합니다. CGI 서브 프로세스는 응답을 작성하여 Apache로 돌아갑니다. Apache는이 응답을 브라우저로 보냅니다.
CGI는 원시적이고 성가시다. 대부분 요청마다 서브 프로세스를 분기하므로 서브 프로세스는 stdout 및 stderr를 종료하거나 닫아 응답의 끝을 나타냅니다.
WSGI는 CGI 디자인 패턴을 기반으로하는 인터페이스입니다. 반드시 CGI 일 필요는 없으며 각 요청에 대해 하위 프로세스를 분기 할 필요는 없습니다. CGI 일 수 있지만 반드시 그럴 필요는 없습니다.
WSGI는 몇 가지 중요한 방식으로 CGI 디자인 패턴에 추가됩니다. HTTP 요청 헤더를 구문 분석하고이를 환경에 추가합니다. 환경에서 POST 지향 입력을 파일과 같은 오브젝트로 제공합니다. 또한 응답을 공식화하는 기능을 제공하여 많은 서식 세부 사항을 저장합니다.
기본 CGI 구성에서 웹 프레임 워크 (예 : web.py 또는 cherrypy)를 실행하려면 무엇을 알고 / 설치 /해야합니까?
하위 프로세스를 포크하는 것은 비용이 많이 듭니다. 이 문제를 해결하는 데는 두 가지 방법이 있습니다.
아파치 안에 파이썬을 내장mod_wsgi
하거나 mod_python
내장한다; 프로세스가 분기되지 않습니다. Apache는 Django 애플리케이션을 직접 실행합니다.
WSGI 프로토콜을 사용하여 데몬mod_wsgi
또는 mod_fastcgi
Apache가 별도의 데몬 (또는 "장기 실행 프로세스")과 상호 작용할 수 있도록합니다. 장기 실행 Django 프로세스를 시작한 다음이 프로세스와 통신하도록 Apache의 mod_fastcgi를 구성하십시오.
참고 mod_wsgi
두 모드에서 작동 할 수 있습니다 : 내장 또는 데몬.
mod_fastcgi를 읽으면 Django가 flup 를 사용하여 mod_fastcgi에서 제공 한 정보로부터 WSGI 호환 인터페이스를 생성 한다는 것을 알 수 있습니다. 파이프 라인은 이와 같이 작동합니다.
Apache -> mod_fastcgi -> FLUP (via FastCGI protocol) -> Django (via WSGI protocol)
Django에는 다양한 인터페이스를위한 몇 가지 "django.core.handlers"가 있습니다.
mod_fastcgi의 경우 Django는 manage.py runfcgi
FLUP와 처리기를 통합 하는 을 제공 합니다.
mod_wsgi의 경우이를위한 핵심 처리기가 있습니다.
WSGI 지원을 설치하는 방법?
다음 지시 사항을 따르십시오.
https://code.google.com/archive/p/modwsgi/wikis/IntegrationWithDjango.wiki
배경은 이것을 참조하십시오
http://docs.djangoproject.com/en/dev/howto/deployment/#howto-deployment-index