首页 文章

Flask - Gunicorn在curl之后返回404到同一个实例上的localhost

提问于
浏览
1

我正在尝试使用Gunicorn部署我的Flask网站 . 这个repo显示了我开始使用的代码,我添加了自己的控制器等 .

我遇到的问题如下:

  • python manage.py runsever 本地工作正常

  • sudo gunicorn flask_application:app -b 127.0.0.1:8000 在我的服务器上正常运行应用程序 .

Gunicorn日志显示:

[2017-07-11 15:06:38 +0000] [3926] [INFO] Starting gunicorn 19.1.1
[2017-07-11 15:06:38 +0000] [3926] [DEBUG] Arbiter booted
[2017-07-11 15:06:38 +0000] [3926] [INFO] Listening at: http://127.0.0.1:8000 (3926)
[2017-07-11 15:06:38 +0000] [3926] [INFO] Using worker: sync
[2017-07-11 15:06:38 +0000] [3931] [INFO] Booting worker with pid: 3931
[2017-07-11 15:06:38 +0000] [3932] [INFO] Booting worker with pid: 3932
[2017-07-11 15:06:38 +0000] [3937] [INFO] Booting worker with pid: 3937
[2017-07-11 15:06:39 +0000] [3926] [DEBUG] 3 workers
[2017-07-11 15:06:42 +0000] [3932] [DEBUG] GET /profile:8000
[2017-07-11 15:06:47 +0000] [3937] [DEBUG] GET /profile
[2017-07-11 15:06:49 +0000] [3932] [DEBUG] GET /profile:8000

正如您所看到的,我的 curl 127.0.0.1/profile:8000 (在同一个盒子上)请求通过,日志中没有抛出错误,但是reposes显示:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The requested URL was not found on the server.  If you entered the URL manually please check your spelling and try again.</p>

Gunicorn配置:

workers = 3
errorlog = '/home/www/flask_project/logs/gunicorn-error.log'
accesslog = '/home/www/flask_project/logs/gunicorn-access.log'
loglevel = 'debug'

这个question与我的设置类似,但我很高兴直接使用gunicorn而不是通过Flask-Script运行 .

My guess:

我的应用程序的结构可以在上面的repo链接中看到,但简而言之, flask_applicaiton.__init__.py 文件包含 app . 当我运行 gunicorn 命令时,似乎没有导入视图 .

话虽如此,蓝图的导入和注册如下:

flask_applicaiton.__init__.py

# Business Logic
# http://flask.pocoo.org/docs/patterns/packages/
# http://flask.pocoo.org/docs/blueprints/
from flask_application.public.controllers import public
app.register_blueprint(public)

from flask_application.users.controllers import users
app.register_blueprint(users)

from flask_application.admin.controllers import admin
app.register_blueprint(admin)

仅供参考 - 一旦我使用Gunicorn正确运行应用程序,我将使用nginx将代理反转到我的应用程序 . 目前,nginx向我展示:

2017/07/11 15:23:35 [error] 1204#1204: *204 connect() failed (111: Connection refused) while connecting to upstream

我假设是因为Gunicorn没有正确服务Flask应用程序 .

任何关于原因的建议或我如何调试这将是非常感谢 .

1 回答

  • 0

    尝试在虚拟环境中使用gunicorn和flask . 而不是:

    sudo gunicorn flask_application:app -b 127.0.0.1:8000
    

    首先设置虚拟环境,激活它 . 比 pip install gunicorn . 还要在没有 sudo 的情况下在venv中安装烧瓶和所有其他东西 .

    你可以查看我的repository .

相关问题