2012-02-21 5 views
2

Passenger WSGI according to their wiki instructions을 사용하여 Dreamhost에서 호스팅되는 장고 프로젝트를 설정하고 mod_wsgi가 나타나고 충돌하는 내부 오류 문제가 발생했습니다.파이썬 붙여 넣기에서 오류 추적을 표시하지 않습니다

following their instructions으로 파이썬 붙여 넣기를 설치하면 웹 페이지에 포괄적 인 로그가 표시되지만 작동하지 않습니다. IE : 내부 오류가있을 때마다 브라우저의 다른 정보없이 django의 "내부 오류"페이지가 표시됩니다.

"def testapplication"앞에 "test"를 제거하여 붙여 넣기 설치를 테스트했을 때 정상적으로 작동했습니다. 하지만 내부 오류가 발생할 때마다 여전히 오류 정보가 포함 된 붙여 넣기 결과를 얻지 못합니다. 대신 정보가없는 동일한 숨겨진 내부 오류 페이지가 표시됩니다.

내 passenger_wsgi.py 파일 :

import os, sys 
import django.core.handlers.wsgi 

INTERP = os.path.join(os.environ['HOME'], 'env', 'bin', 'python') 
if sys.executable != INTERP: 
    os.execl(INTERP, INTERP, *sys.argv) 

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

sys.path.append(os.getcwd()) 
sys.path.append(os.path.join(os.getcwd(), 'abc')) 
log = file('/home/abcadmin/passengerwsgi.log', 'a') 
print >>log, "Running %s" % (sys.executable) 

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

from paste.exceptions.errormiddleware import ErrorMiddleware 
sys.stdout = sys.stderr 

# remove the "test" below to test paste 
def testapplication(environ, start_response): 
    status = '200 OK' 
    output = 'Hello World! Running Python version ' + sys.version + '\n\n' 
    response_headers = [('Content-type', 'text/plain'), 
       ('Content-Length', str(len(output)))] 
    # to test paste's error catching prowess, uncomment the following line 
    # while this function is the "application" 
    raise("error") 
    start_response(status, response_headers)  
    return [output] 

application = ErrorMiddleware(application, debug=True) 

내 웹 서버 오류 로그 (하는 error.log)이 비어 있고 내 액세스 로그 (액세스

는 위키에 따르면, 내 구성이 올바른지 .log)는 다음과 같은 메시지로 가득 차 있습니다 (최신 행 - 가짜 링크로 편집 됨). access.log가 뭔가를 로깅하고 있기 때문에 어딘가에서 로깅이 발생하지만 그 오류는 "내부 오류"페이지를 제외하고 어디에도 나타나지 않습니다.

46.246.117.3 - - [21/Feb/2012:00:27:04 -0800] "GET /admin/ HTTP/1.1" 200 2326 "http://abc.acme.com/admin/userProfile/profile/16/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:10.0.2) Gecko/20100101 Firefox/10.0.2" 

장고 프로젝트

내 dev에 환경에서 잘 실행되지만, 서버에서 승객 WSGI를 실행중인 경우 발생하는 서버 문제의 어떤 종류가있다 - 나는 시도 붙여 넣기 및 디버그 이러한 오류를 설치했습니다. 내 설치가 Django가 아닌 다른 종류의 오류로 실행될 때 나는 그 "숨겨진"내부 오류 메시지를 받는다.

+0

** 웹 서버 오류 로그 **의 내용은 무엇입니까? –

+0

방금 ​​질문과 대답을 편집했습니다. 위를 참조하십시오. – serpah

답변

0

이 컨텍스트에서는 붙여 넣기에 실패했지만 서버의 wsgi 설정에 문제가 있습니다.이 문제는 이와 같은 문제 일 수 있습니다. Debugging Techniques은 "공식적인"modwsgi 의사입니다. . 해당 문서에서 "더 복잡한 문제"를 검색하고 해당 단락 바로 아래에있는 무료 middlware 코드를 시험해보십시오. 그러나 pprint.pprint ((status, headers) + args) 스트림의 구문 오류를 수정하십시오. = self .__headers)를 pprint.pprint (((status, headers) + args), stream = self .__headers로 바꿈으로써).

또한 클래스 선언에 "(객체)"를 추가하여 클래스를 "새 클래스"로 변경했습니다 ... 죄송하지만 의미있는 것이지 지금은 잊어 버립니다.

미들웨어를 사용하면 응용 프로그램에서 보내고받는 모든 요청 및 응답 헤더와 콘텐츠를 얻을 수 있습니다.

Djano에 내장 된 Python 로깅 향상 기능을 사용하는 것이 적절하다는 것을 알았습니다.이 기능은 settings.py의 LOGGING 설정을 사용하여 구현됩니다. 다음은 docs입니다.

+0

이 문제를 살펴본 지 2 년이 지났습니다. settings.py에서 LOGGING을 사용하여 회상 한 것 같습니다. – serpah

1

어딘가에 컴파일러 오류가있는 경우 붙여 넣기 오류 처리기를 사용하려고합니다. 오류 로그를보십시오.

+0

오류 로그에는 아무 것도 없습니다. 다른 제안? – serpah

+0

"테스트"를 제거하여 활성화하면; 'ErrorMiddleware'도 생략합니다. 작동합니까? 그렇다면, 나는 우리가 붙여 넣기 물건을 배제한 것 같은데, 그렇지?나는 하나의 메소드 ('testapplication') 대신에'WSGIHandler'를 기대할지도 모른다고 생각합니다. –

+0

은 "test"를 제거했고, ErrorMiddleware도 생략하고 붙여 넣기 출력을 보여줍니다. ErrorMiddleware를 다시 넣으십시오. 다시 돌아 왔을 때 – serpah

관련 문제