문제

Bluehost 계정을 실행할 수 있습 Python 스크립트로 CGI.나는 그것의 가장 간단한 CGI,실행하기 때문에 내가 있을 정의에서 다음 .htaccess:

Options +ExecCGI
AddType text/html py
AddHandler cgi-script .py

이제,언제 내가 찾는 웹 프로그래밍 파이썬,내가 듣고에 대해 많은 WSGI 고 어떻게 대부분의 프레임워크에 그것을 사용합니다.하지만 저는 이해하지 못하는 방법 이 모든 것은,특히 나의 웹 서버가 주어진(실행중인 아파치에서 호스트의 기계)지가 들어가실 수 있으로 재생 제외하고(정의 .htaccess 명령).

는 방법은 WSGI,CGI,그리고 프레임워크에 연결된 모든?나는 무엇을 알아야,설치,그리고 하면 나는 실행하려는 웹 framework(말 web.pyCherryPy 에)내 기본적인 CGI 를 구성입니까?을 설치하는 방법 WSGI 지원합니까?

도움이 되었습니까?

해결책

는 방법 WSGI,CGI,그리고 프레임워크에는 모든 연결되어 있습니까?

Apache listens on port80.그것을 얻는 HTTP 요청을 합니다.요청을 구문 분석하는 방법을 찾아 대응합니다.아파치에는 많은 선택한 응답하지 않습니다.방법 중 하나는 응답을 사용하여 CGI 스크립트를 실행.다른 방법으로 반응하는 간단하게 서비스할 파일의 파일.

의 경우에 CGI,아파치를 준비하는 환경 및를 호출하는 스크립트를 통해 CGI 프로토콜입니다.이 표준 Unix 포크/Exec-상 CGI 하위 프로세스를 상속 OS 환경을 포함하여 소켓 stdout.CGI 하위 프로세스 응답이 기록 돌아가는 아파치;아파치가 이에 응답하여 브라우저입니다.

CGI 은 원시적인 캐릭터가 기다리고 있습니다.주로하기 때문에 그것은 포크 하위 프로세스에 대한 모든 요청,그리고는 하위 프로세스를 종료해야 또는 가까운 stdout 및 stderr 을 의미하는 말의 반응이다.

WSGI 은 인터페이스를 기반으로 하는 CGI 디자인 패턴입니다.그것은 반드시 CGI-그것은 기능이 포함되어 있어서는 하위 프로세스에 대한 각각의 요청을 합니다.할 수 있는 CGI 지만,그것은 필요가 없다.

WSGI 추가 CGI 디자인 패턴에서 여러 가지 중요한 방법이다.그것을 분석하는 HTTP 요청 헤더 및 이들을 추가한다.공급 POST 중심의 입력으로 파일과 같은 개체에서의 환경입니다.그것은 또한 당신을 제공하는 기능을 수립하고 응답을 절약 당신의 많은에서 포맷하세요.

나는 무엇을 알 필요가 설치//경우 필요한 조치를 실행하고 싶 웹 framework(말 web.py 또 cherrypy)에 기본적인 CGI 를 구성입니까?

을 기억하는 분기 하위 프로세스는 비싸다.가하는 방법은 두 가지 작업이다.

  1. 내장 mod_wsgimod_python 을 포함합 Python 내부 Apache;프로세스가 갈래.아파치를 실행하는 장소로 직접 응용 프로그램.

  2. 데몬 mod_wsgimod_fastcgi 할 수 있는 아파치와 상호 작용하려면 별도의 데몬(또는"오래 실행되는 프로세스"),사용 WSGI 프로토콜입니다.당신은 시작 당신의 장기 실행 Django 프로세스에,당신은 아파치 구성의 mod_fastcgi 과 통신하는 이 과정입니다.

Note mod_wsgi 할 수 있는 모드에서 작동:임베디드 또는 데몬입니다.

을 읽을 때에 mod_fastcgi,당신이 볼 수 Django 사용 flup 을 만들 WSGI 호환 인터페이스에서 정보를 제공하 mod_fastcgi.파이프라인 작품은 이렇습니다.

Apache -> mod_fastcgi -> FLUP (via FastCGI protocol) -> Django (via WSGI protocol)

장고가 여러 가지"django.핵심입니다.처리기위한"다양한 인터페이스가 있습니다.

에 대한 mod_fastcgi,Django 제공 manage.py runfcgi 통합 FLUP 및 처리기입니다.

에 대한 mod_wsgi 있는 core 핸들러이다.

을 설치하는 방법 WSGI 지원합니까?

이 지시를 따르십시오.

https://code.google.com/archive/p/modwsgi/wikis/IntegrationWithDjango.wiki

를 위해 배경이

http://docs.djangoproject.com/en/dev/howto/deployment/#howto-deployment-index

다른 팁

제 생각에는 플로리안의 대답 "WSGI 가란 무엇인가"에 대한 질문의 일부에 답하십시오. pep.

당신이 끝까지 제시하는 질문에 관해서는 :

WSGI, CGI, FASTCGI 등은 모두 웹 서버의 프로토콜입니다. 코드를 실행하십시오, 생성 된 동적 컨텐츠를 제공하십시오. 이것을 일반 HTML 파일이 기본적으로 클라이언트와 마찬가지로 전달되는 정적 웹 서빙과 비교하십시오.

CGI, FASTCGI 및 SCGI는 언어 불가지론 적입니다. Perl, Python, C, Bash에 CGI 스크립트를 작성할 수 있습니다. CGI가 정의됩니다 어느 실행 파일은 URL을 기준으로 호출되며 어떻게 그것은 호출 될 것입니다 : 논쟁과 환경. 또한 실행 파일이 완료되면 리턴 값을 웹 서버로 전달하는 방법을 정의합니다. 변형은 기본적으로 더 많은 요청을 처리하고 대기 시간을 줄일 수있는 최적화입니다. 기본 개념은 동일합니다.

WSGI는 파이썬 전용입니다. 언어 불가지론 프로토콜 대신 표준 함수 시그니처가 정의됩니다.

def simple_app(environ, start_response):
    """Simplest possible application object"""
    status = '200 OK'
    response_headers = [('Content-type','text/plain')]
    start_response(status, response_headers)
    return ['Hello world!\n']

이는 완전한 (제한된 경우) WSGI 응용 프로그램입니다. WSGI 지원이있는 웹 서버 (예 : Mod_wsgi가있는 Apache)는 요청이 도착할 때 마다이 기능을 호출 할 수 있습니다.

이것이 너무 큰 이유는 HTTP Get/Post에서 CGI로 Python으로 변환하는 지저분한 단계를 피하고 다시 돌아 오는 길에 다시 돌아갈 수 있기 때문입니다. 훨씬 더 직접적이고 깨끗하며 효율적인 연계입니다.

또한 요청을 위해 수행 해야하는 모든 작업이 함수 호출이라면 웹 서버 뒤에서 장기 실행 프레임 워크를 실행하는 것이 훨씬 쉽습니다. 일반 CGI를 사용하면해야합니다 전체 프레임 워크를 시작하십시오 각 개별 요청에 대해.

WSGI 지원을 받으려면 WSGI 모듈을 설치해야합니다 ( mod_wsgi) 또는 WSGI가 구운 웹 서버를 사용하여 ( 체리). 그 중 어느 것도 가능하지 않다면, 당신 ~할 수 있었다 PEP에 주어진 CGI-WSGI 브리지를 사용하십시오.

당신은 할 수 있습니다 PEP333이 보여준대로 CGI를 통해 WSGI를 실행하십시오 예로서. 그러나 요청이있을 때마다 새로운 Python 통역사가 시작되고 전체 컨텍스트 (데이터베이스 연결 등)를 빌드 해야하는 모든 시간이 걸립니다.

WSGI를 실행하려면 호스트가 설치하는 것입니다. mod_wsgi 귀하의 응용 프로그램에 대한 제어를 연기하기 위해 적절한 구성을 만들었습니다.

flup 말할 수있는 모든 웹 서버에 대해 WSGI로 실행하는 또 다른 방법입니다. FCGI, SCGI 또는 AJP. 내 경험에서 FCGI 만 실제로 작동하며 Apache에서 사용될 수 있습니다. mod_fastcgi 또는 별도의 파이썬 데몬을 실행할 수 있다면 mod_proxy_fcgi.

WSGI CGI와 매우 유사한 프로토콜은 WebServer 및 Python 코드가 상호 작용할 수있는 방법을 정의하는 일련의 규칙을 정의합니다. PEP333. 많은 다른 웹 서버가 동일한 응용 프로그램 프로토콜을 사용하여 다양한 프레임 워크 및 응용 프로그램을 사용할 수 있습니다. 이것은 매우 유익하며 매우 유용합니다.

이 공간의 모든 용어에 대해 불분명하고 그것을 직면하게한다면, 혼란스러운 약어가 가득한 것, CGI vs. FASTCGI vs. WSGI 등을 논의하는 공식 Python HowTO 형태의 좋은 배경 리더도 있습니다. 에: http://docs.python.org/howto/webservers.html

Java의 서블릿 사양과 유사한 파이썬에 대한 간단한 추상화 레이어입니다. CGI는 실제로 낮은 수준이며 프로세스 환경과 표준 인/아웃에 물건을 버리는 반면, 위의 두 사양은 HTTP 요청 및 응답을 언어의 구성으로 모델링합니다. 그러나 필자의 인상은 Python에서 사람들이 사실상의 구현에 정착하지 않았으므로 참조 구현과 WSGI 지원 (예 : 페이스트)과 함께 다른 것들을 제공하는 다른 유틸리티 유형 라이브러리가 혼합되어 있다는 것입니다. 물론 나는 틀릴 수 있습니다. 저는 Python의 새로 온 사람입니다. "웹 스크립팅"커뮤니티는 Java 사람들과 다른 방향 (공유 호스팅, CGI 레거시, 권한 분리 문제)에서 문제가 발생합니다. 암호).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top