2009-04-29 2 views
8

을 실행하려고 할 때 :WSGIServer 오류가 여기 내 스크립트의, 첫째 장고 응용 프로그램

#!/usr/bin/python 
import sys, os 

sys.path.append('/home/username/python') 
sys.path.append("/home/username/python/flup") 
sys.path.append("/home/username/python/django") 
# more path stuff 

os.environ['DJANGO_SETTINGS_MODULE'] = "project.settings" 

from django.core.servers.fastcgi import runfastcgi 
runfastcgi(method="threaded", daemonize="false") 

바와 같이 here을 설명했다. 여기

그리고 내가 오류가 때 쉘에서 실행하려고 :

WSGIServer: missing FastCGI param REQUEST_METHOD required by WSGI! 
WSGIServer: missing FastCGI param SERVER_NAME required by WSGI! 
WSGIServer: missing FastCGI param SERVER_PORT required by WSGI! 
WSGIServer: missing FastCGI param SERVER_PROTOCOL required by WSGI! 
Status: 404 NOT FOUND 
Content-Type: text/html 


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html lang="en"> 
<!-- more html which looks to be the correct output --> 

내 질문은, 왜 FastCGI를 자동으로 전달하는 PARAMS이 아니다? 내가 도대체 ​​뭘 잘못하고있는 겁니까? 내 웹 서버에서 스크립트를 실행하면 내부 서버 오류가 발생합니다. 대신 내 스크립트의 마지막 두 줄의


, 내가

from flup.server.fcgi import WSGIServer 
from django.core.handlers.wsgi import WSGIHandler 
WSGIServer(WSGIHandler()).run() 

사용할 수 있습니다하지만 난 여전히 똑같은 오류가 ...

+0

왜 mod_wsgi를 사용하지 않습니까? –

+2

@ S.Lott : 몇 년 늦었지만 공유 된 호스트에있었습니다. WSGI에 액세스 할 수 없었습니다. – mpen

답변

6

해결되었습니다. 이 .htaccess 파일은 어떤 이유로 든 속임수를 사용했습니다. 나는이 모든 것을 전에 시도 했었다고 맹세한다 ...

AddHandler fcgid-script .fcgi 
Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteRule ^(media/.*)$ - [L] 
RewriteRule ^(adminmedia/.*)$ - [L] 
RewriteCond %{REQUEST_URI} !(cgi-bin/myproject.fcgi) 
RewriteRule ^(.*)$ cgi-bin/myproject.fcgi/$1 [L] 
2

스크립트는 그 PARAMS이 전달 ​​될 것으로 예상 환경 변수로. 그것들은 여러분의 쉘 환경에 존재하지 않고 스크립트가 아파치 fastcgi 환경 (그것들을 제공)에서 실행되지 않기 때문에 불평합니다.

아파치 오류 로그에 액세스 할 수 있습니까? 그들이 뭐라고하니?

호스트에 mod_wsgi가 지원됩니까? 그렇다면, 당신은 장고의 WSGI 핸들러를 사용할 수 있습니다

import sys 
import os 

base = os.path.dirname(os.path.abspath(__file__)) + '/..' 
sys.path.append(base) 

os.environ['DJANGO_SETTINGS_MODULE'] = 'yourproject.settings' 

import django.core.handlers.wsgi 

application = django.core.handlers.wsgi.WSGIHandler() 

또한 지침은 modwsgi wiki에서 발견하고 Django docs 할 수 있습니다.

+0

이것은 셸에서 실행될 때 전혀 출력이 없으며 브라우저에서 실행할 때 일반적인 내부 서버 오류가 발생합니다. 내 서버가 WSGI를 지원하는지, 확인 방법을 모르는지 잘 모르겠습니다. – mpen

+0

또한 정확히 무슨 뜻인지 모르겠지만 "fastcgi 환경에서 실행되지 않습니다." 내 호스트가 FastCGI를 지원한다고 주장하고, .fcgi로 저장하고 실행할 수 있습니다. FastCGI가 아닌 경우 정확히 무슨 일이 벌어지며,이를 사용하여 호스팅 제공 업체에 사용 가능하도록 요청할 수 있습니까? – mpen

+0

내 말은 아파치가 환경 변수를 통해 fastcgi 프로세스에 정보를 전달한다는 것입니다. 특별히 추가하지 않으면 셸에 해당 정보가 없습니다. 명령 줄에서 스크립트를 실행할 때 쉘 환경에서 이러한 변수를 설정하지 않았기 때문에 fasgcgi 스크립트에는 필요한 정보가 없으므로 오류가 발생합니다. 커맨드 라인에서 설명하는 오류는 아파치에서 스크립트가 실행되는 것을 방해하는 오류와 꼭 필요한 것은 아닙니다. – vezult

관련 문제