2014-11-12 1 views
2

Я пытаюсь запустить анализ именной фразы в приложении Flask, работающем на Ubuntu, через пушки и nginx. Я получаю сообщение об ошибке 500 без видимого сообщения об ошибке, возникающей в журналах ошибок nginx, supervisor или unicorn. Кроме того, приложение «supervisorctl tail» не проливает свет.NLTK + TextBlob в фляге/nginx/gunicorn на ошибке Ubuntu 500

Мои сайты доступный 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; 
    } 
} 

Мой руководитель app.conf

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

Я бегу мое приложение в app.py со следующим (вопрос опытный с DEBUG = False и правда в 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=['*'] 

Функция существительных фразы Я зову

from textblob import TextBlob 

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

    return np 

В app.py опоки маршрут для страницы, передавая вывод generateNounPhrases()

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

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

Я абсолютно потерянным, и я абсолютный новичок в этом. Любое руководство было бы огромным!

+0

Что произойдет, если вы установите 'DEBUG = True'? – dirn

+0

Я вижу страницу «Внутренняя ошибка сервера», которая немного отличается от стандартной 500-страничной я получаю под False. В противном случае я ничего не вижу. Я надеялся, что это вызовет экраны ошибок Werkzeug, к которым я привык, при разработке локально, но не так. – user538

ответ

0

Sudo user = admin, указанный в файле супервизора app.conf, созданный для запуска этого приложения, не смог прочитать на корневом уровне сайта. Недоступный NLTK корпусы загрузить на а/корень/nltk_data причиняли мой оригинал 500 ...

я обнаружил эту проблему после того, как переконфигурировать протоколирование gunicorn и прием со смертельным исходом руководитель аварий на supervisorctl restart app для вновь указал не gunicorn.log имеющих разрешения на запись.

Мой обновляется и работает супервизора конфигурации, SANS декларации пользователя, заключается в следующем:

[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 

Я не уверен, что все последствия безопасности для этой конфигурации, однако, и не знаю, почему Судо группа администратора пользователь не обращался к каталогам правильно. Бонус указывает на любого, у кого есть этот ответ.

Смежные вопросы