2014-11-12 2 views
2

나는 gunicorn과 nginx를 통해 제공되는 우분투에서 실행되는 Flask 앱에서 명사구 분석을 실행하려고합니다. nginx, supervisor 또는 unicorn 오류 로그 중 하나에서 발생하는 오류의 로깅 (명백한)로 500 오류가 나타납니다. 또한 'supervisorctl tail app'은 어떠한 빛도 발산하지 않습니다.Ubuntu 500의 플라스크/nginx/gunicorn에서 NLTK + TextBlob 오류

내 사이트-사용할 수 nginx.conf :

server { 
    listen 80; 
    server_name [domain redacted]; 
    charset utf-8; 
    client_max_body_size 75M; 

    access_log /var/log/nginx/nginx_access.log; 
    error_log /var/log/nginx/nginx_error.log; 

    location/{ try_files $uri @app; } 

    location @app { 
     proxy_pass http://127.0.0.1:8000; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
    } 
} 

내 상사 DEBUG 경험

[program:app] 
command = gunicorn app:app -b localhost:8000 
directory = /home/www/app 
user = admin 

내가 다음 (문제를 app.py 내 응용 프로그램을 실행하고 app.conf = 거짓 등) config.py의 진정한

app = Flask(__name__, static_folder='static', static_url_path='/static') 
app.config.from_pyfile('config.py') 

if __name__ == '__main__': 
     app.run() 
     if not app.debug: 
      stream_handler = logging.StreamHandler() 
      stream_handler.setLevel(logging.INFO) 
      app.logger.addHandler(stream_handler) 

Config.py 단순히

입니다
DEBUG = False 
ALLOWED_HOSTS=['*'] 

515,는 generateNounPhrases의 출력()

@app.route('/thread', methods=['GET']) 
def thread(): 
    ... 
    nounphrases = generateNounPhrases(text_to_analyze) 
    ... 

    return render_template("Thread.html", nounphrases=nounphrases) 

을 전달 내가

from textblob import TextBlob 

def generateNounPhrases(input): 
    blob = TextBlob(input) 
    np = blob.noun_phrases 

    return np 

페이지의 app.py 플라스크 경로를 호출하고 명사 구문 기능, 나는 절대적으로 손실 오전입니다 절대 초보자. 어떤 지침이라도 엄청납니다!

+0

'DEBUG = True'를 설정하면 어떻게됩니까? – dirn

+0

False로받는 표준 500 페이지와 약간 다른 "내부 서버 오류"페이지가 나타납니다. 그렇지 않으면 내가 볼 수있는 것과 다른 점이 없습니다. 로컬로 개발할 때 익숙했던 Werkzeug 오류 화면을 실행 시키길 바랬습니다. – user538

답변

0

이 앱을 실행하기 위해 생성 된 app.conf 감독자 파일에 선언 된 sudo user = admin은 사이트 루트 수준에서 읽을 수 없습니다. 액세스 할 수없는 NLTK corpora가/root/nltk_data에서 다운로드하면 원래의 500이 발생했습니다 ...

나는 gunicorn 로깅을 재구성 한 후 새롭게 지적한 gunicorn.log에 대해 치명적인 수퍼바이저가 supervisorctl restart app에서 충돌 한 것을 발견했습니다. 쓸 권한이 있습니다.

내 업데이트 관리자 설정, 산세 사용자 선언을 작업 다음과 같다 :

[program:app] 
command = gunicorn app:app -b localhost:8000 --log-file /var/log/gunicorn/gunicorn_log.log 
directory = /home/www/app 
stdout_logfile=/var/log/supervisor/supervisor_stdout.log 
stderr_logfile=/var/log/supervisor/supervisor_stderr.log 

내가 확실하지 그러나, 전체 보안 문제는이 구성이 무엇인지 잘 모르겠습니다, 왜 sudo는 그룹 관리 사용자가 디렉토리에 올바르게 액세스하지 못했습니다. 보너스는 그 대답을 가진 사람을 가리 킵니다.