2014-12-29 2 views
0

저는 장고와 웹 팀을 처음 접했습니다. webfaction에서 200 오류를 디버깅하는 방법은 무엇입니까?

나는 내가 django tuts에 따라 모든 설정을 수행 webfaction

에 생산에 django 프로젝트를 배포하려합니다.

syncdb 터미널에서 오류가 발생하지 않았습니다.

은 내가 아파치 폴더에 로그가 사실을 발견이 오류

200 Error 

The server encountered an internal error or misconfiguration and was unable to complete your request. 

Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error. 

More information about this error may be available in the server error log. 

을 제공하는 사이트로 이동합니다. 또한 user라는 폴더에 로그가 있고 최상위 레벨에있는 내 username 디렉토리에 있습니다. 어느 로그가 보입니까?

사용자 디렉토리의 액세스 로그 란 무엇입니까? 사용자 디렉토리에 오류가 기록 되었습니까? 프런트 엔드 디렉토리에 액세스 로그가 있습니까? 프런트 엔드 디렉토리에 오류 로그가 있습니까? Apache에 logs 폴더가 있습니까?

또한 오류가 무엇이며 어떻게 해결할 수 있습니까?

+0

200은 오류가 아닙니다. 500을 말하지 않았다고 확신합니까? –

+0

나는 웹 파벌 관련 오류 만 발견했다. – silverkid

답변

2

설정에 DEBUG=False을 설정 했습니까? 그렇다면 SECRET_KEY 값과 ALLOWED_HOSTS 설정을 추가해야합니다. 이 설정에 대한 자세한 정보는 Django 문서를 확인하십시오.

이외에도 ~/log/user/error_yourapp.log의 로그가 확인해야합니다.

그러나 200 오류는 서버 오류 (500)가 아니므로 실수하지 않으면 해당 오류 로그에 끝나지 않을 수 있습니다.

최후의 수단으로 포트를 경청하고 웹 사이트에 연결하는 사용자 지정 응용 프로그램을 만드는 것일 수 있습니다. 그런 다음 SSH를 계정에 넣고 ./manage.py runserver localhost:YOURPORT을 시작하고 yourproject.webfactional.com:YOURPORT을여십시오. 서버가 충돌하면 터미널에 바로 추적 표시가 나타납니다.

+0

log, log.1, log.2 ... 1 2 등의 의미는 무엇입니까? – silverkid

+0

이것은 파일이 너무 커지지 않도록 아파치의 몇 가지 방법이라고 생각합니다. 번호가 매겨진 번호는 무시하고 번호가없는 번호의 맨 아래를 항상 확인하십시오. (Vim을 사용하면'SHIFT + G '를 눌러 파일의 아래쪽으로 빠르게 이동할 수 있습니다.) – mbrochh

+0

로그에서 settings.py의 가져 오기 오류가 있음을 확인했습니다. sys 경로에 설정 경로가 포함되어 있지 않습니다. syspath가 home/username/lib/python2.6을 가리키고 있습니다 ... 설정 파일 위치에 경로를 추가 할 수 없습니다. – silverkid

1

mod_wsgi 앱에서 "200 오류"는 실제로 internal server error입니다.

mod_wsgi에 3.4은 "200 오류"상태 표시 줄 반환 몇 가지 새로운 코드 소개 :

/* 
* Look for the special case of status being 200 but the 
* status line indicating an error and translate it into a 
* 500 error so that error document processing will occur 
* for those cases where WSGI application wouldn't have 
* supplied their own error document. We used to use 0 
* here for status but Apache 2.4 prohibits it now. 
*/ 

..... 

/* 
* Execute the actual target WSGI application. In 
* normal cases OK should always be returned. If 
* however an error occurs in importing or executing 
* the script or the Python code raises an exception 
* which is not caught and handled, then an internal 
* server error can be returned. As we don't want to 
* be triggering any error document handlers in the 
* daemon process we use a fake status line with 0 
* as the status value. This will be picked up in 
* the Apache child process which will translate it 
* back to a 500 error so that normal error document 
* processing occurs. 
*/ 

r->status = HTTP_OK; 

if (wsgi_execute_script(r) != OK) { 
    r->status = HTTP_INTERNAL_SERVER_ERROR; 
    r->status_line = "200 Error"; 
} 

아파치가 500 오류로 해석을하고, 당신은 당신의 로그에 500 상태 코드를 볼 수 있지만, Apache 오류 페이지의 생성 된 제목은 "200 Error"상태 표시 줄을 표시합니다.