2015-02-19 3 views
1

Я развернул приложение Flask с Gunicorn + Nginx + Supervisor. Это не работает. Поиск в Интернете показал несколько сообщений об аналогичных проблемах, но ни один из них не объяснил, что соответствует нашим обстоятельствам или исправлению, которое разрешило проблему. Here сказал, чтобы отключить пулеметный демона. Если я прав, это не мое дело.Flask - Развертывание с Gunicorn, Nginx и Supervisor, журнал ошибок супервизора

Похоже, что что-то начинает сервис, который уже прослушивает порт 8000. Супервизор отправляет ошибки в файл журнала каждую секунду.

Что может мне помочь?

ошибка от супервизора приложения-stderr.log:

[2015-02-19 18:56:19 +0300] [964] [INFO] Starting gunicorn 19.2.1 
[2015-02-19 18:56:19 +0300] [964] [INFO] Listening at: http://127.0.0.1:8000 (964) 
[2015-02-19 18:56:19 +0300] [964] [INFO] Using worker: sync 
[2015-02-19 18:56:19 +0300] [1078] [INFO] Booting worker with pid: 1078 
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) 
* Restarting with stat 
[2015-02-19 18:56:20 +0300] [1081] [INFO] Starting gunicorn 19.2.1 
[2015-02-19 18:56:20 +0300] [1081] [ERROR] Connection in use: ('localhost', 8000) 
[2015-02-19 18:56:20 +0300] [1081] [ERROR] Retrying in 1 second. 
[2015-02-19 18:56:21 +0300] [1081] [ERROR] Connection in use: ('localhost', 8000) 
[2015-02-19 18:56:21 +0300] [1081] [ERROR] Retrying in 1 second. 
[2015-02-19 18:56:22 +0300] [1081] [ERROR] Connection in use: ('localhost', 8000) 
[2015-02-19 18:56:22 +0300] [1081] [ERROR] Retrying in 1 second. 
[2015-02-19 18:56:23 +0300] [1081] [ERROR] Connection in use: ('localhost', 8000) 
[2015-02-19 18:56:23 +0300] [1081] [ERROR] Retrying in 1 second. 
[2015-02-19 18:56:24 +0300] [1081] [ERROR] Connection in use: ('localhost', 8000) 
[2015-02-19 18:56:24 +0300] [1081] [ERROR] Retrying in 1 second. 
[2015-02-19 18:56:25 +0300] [1081] [ERROR] Can't connect to ('localhost', 8000) 
[2015-02-19 18:56:25 +0300] [1078] [INFO] Worker exiting (pid: 1078) 
[2015-02-19 18:56:25 +0300] [1122] [INFO] Booting worker with pid: 1122 
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) 
* Restarting with stat 
[2015-02-19 18:56:27 +0300] [1148] [INFO] Starting gunicorn 19.2.1 
[2015-02-19 18:56:27 +0300] [1148] [ERROR] Connection in use: ('localhost', 8000) 
[2015-02-19 18:56:27 +0300] [1148] [ERROR] Retrying in 1 second. 
[2015-02-19 18:56:28 +0300] [1148] [ERROR] Connection in use: ('localhost', 8000) 
[2015-02-19 18:56:28 +0300] [1148] [ERROR] Retrying in 1 second. 
[2015-02-19 18:56:29 +0300] [1148] [ERROR] Connection in use: ('localhost', 8000) 
[2015-02-19 18:56:29 +0300] [1148] [ERROR] Retrying in 1 second. 
[2015-02-19 18:56:30 +0300] [1148] [ERROR] Connection in use: ('localhost', 8000) 
[2015-02-19 18:56:30 +0300] [1148] [ERROR] Retrying in 1 second. 
[2015-02-19 18:56:31 +0300] [1148] [ERROR] Connection in use: ('localhost', 8000) 
[2015-02-19 18:56:31 +0300] [1148] [ERROR] Retrying in 1 second. 
[2015-02-19 18:56:32 +0300] [1148] [ERROR] Can't connect to ('localhost', 8000) 
[2015-02-19 18:56:32 +0300] [1122] [INFO] Worker exiting (pid: 1122) 
[2015-02-19 18:56:32 +0300] [1206] [INFO] Booting worker with pid: 1206 
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) 
* Restarting with stat 
[2015-02-19 18:56:32 +0300] [1211] [INFO] Starting gunicorn 19.2.1 
[2015-02-19 18:56:32 +0300] [1211] [ERROR] Connection in use: ('localhost', 8000) 

Мой supervisor.conf:

[program:app] 
command = /home/www/app/flask/bin/gunicorn app:app -b localhost:8000 --preload 
directory = /home/www/app 
user = webhost 

Netstat -tulpin

Active Internet connections (only servers) 
Proto Recv-Q Send-Q Local Address   Foreign Address   State  PID/Program name 
tcp  0  0 0.0.0.0:80    0.0.0.0:*    LISTEN  930/nginx 
tcp  0  0 0.0.0.0:22    0.0.0.0:*    LISTEN  855/sshd 
tcp  0  0 127.0.0.1:8000   0.0.0.0:*    LISTEN  1392/python3 
tcp6  0  0 :::22     :::*     LISTEN  855/sshd 

И пс Окс | grep python

root  954 0.1 2.4 60564 12440 ?  Ss 18:56 0:01 /usr/bin/python /usr/bin/supervisord -c /etc/supervisor/supervisord.conf 
webhost 1392 0.0 3.2 67148 16512 ?  S 19:00 0:00 /home/www/app/flask/bin/python3 /home/www/app/flask/bin/gunicorn app:app -b localhost:8000 
webhost 2124 5.2 4.2 86072 21344 ?  S 19:12 0:00 /home/www/app/flask/bin/python3 /home/www/app/flask/bin/gunicorn app:app -b localhost:8000 
webhost 2126 5.2 3.2 67148 16488 ?  S 19:12 0:00 /home/www/app/flask/bin/python3 /home/www/app/flask/bin/gunicorn app:app -b localhost:8000 
webhost 2130 0.0 0.1 11744 920 pts/0 S+ 19:13 0:00 grep --color=auto python 

UPD. супервизора конфигурации выше

nginx.conf

server { 
    location/{ 
     proxy_pass http://127.0.0.1:8000; 
    } 
    location /static { 
     alias /home/www/myapp/app/static/; 
    } 
} 

Файл sctructure

myapp 
    | 
    |-app- 
    | | 
    | __init__.py 
    | 
    run.py 
    | 
    config.py 

__init__.py

from flask import Flask 

app = Flask(__name__) 
app.config.from_object('config') 

from app import views 

run.py

#!flask/bin/python 
from app import app 
app.run() 

config.py

# For valid forms 
CSRF_ENABLED = True 
SECRET_KEY = 'never-guess' 
+0

вы можете предоставить приложение инициализации параметров, Nginx конф, Прораб конф? – Ibrahim

+0

@Ibrahim Обновлено. Конфигурация супервизора, которую я уже опубликовал. – Alwx

+0

Нужно создать приложение app/__ init__.py для создания приложения.Дайте вам какие-то намеки на то, что может произойти. В настройках буйкорога вы указали порт 8000 для запуска приложения, но приложение работает на 5000, Thats используется порт по умолчанию для запуска флэша. – Ibrahim

ответ

1

Я была такая же проблема и адаптации ответ Alwx мое решение было лишь запустить приложение, если модуль называется основной (run.py):

from my_app import create_app 

app = create_app() 
if __name__ == '__main__': 
    app.run(host='0.0.0.0', port=8080, debug=True) 

Затем я запускаю его с gunicorn:

gunicorn run:app 

И я все еще могу запустить его, как и раньше только с python run.py

+0

Я думаю, что это лучший ответ :) спасибо – malioboro

3

Я fugured вне. Благодаря @Ibrahim я начал приложение через gunicorn в run.py

#!flask/bin/python 
from app import app 
app.run() 

Так gunicorn созданный процесс и app.run() тоже. И они конфликтуют друг с другом. Просто удалил эту строку.

+0

Ya, Thats, что я связывал, чтобы сказать. – Ibrahim

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