python - Flask App 只返回 404,不管它是如何运行的

标签 python nginx flask uwsgi

我似乎无法让我的应用程序在 uWSGI 上正确运行。我通过从命令行运行 uWSGI 将 nginx 排除在外,它表现出与在 nginx 上运行时完全相同的行为。

uwsgi -s 0.0.0.0:5050 -w app:app --uid www-data --gid www-data --protocol=http

uwsgi 处理请求如下:

[pid:0625|app: 0|req: 1/1] 192.168.1.219 () {34 vars in 737 bytes} [Tue Mar 31 11:10:30 2015] GET /admin => generated 233 bytes in 25 msecs (HTTP/1.1 404) 3 headers in 249 bytes (1 switches on core 0)

我的文件结构如下

/srv/www/cc/app/
               static/
               templates/
               __init__.py
               views.py
               models.py
               forms.py

根据新的证据表明它可能是我的应用程序,这是我的 init.py 文件:

import os
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.script import Manager
from flask.ext.migrate import Migrate, MigrateCommand

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

db = SQLAlchemy(app)
migrate = Migrate(app, db)

manager = Manager(app)
manager.add_command('db', MigrateCommand)

from flask.ext.mail import Mail
mail = Mail(app)

from app import models, forms

#setup flask-security
from flask.ext.security import Security, SQLAlchemyUserDatastore

user_datastore = SQLAlchemyUserDatastore(db, models.User, models.Role)
security = Security(app, user_datastore,
    confirm_register_form = forms.ExtendedConfirmRegisterForm
    )

from app import views

链接到我的整个 views.py:http://pastebin.com/0jMTarEe

我有过同样的应用程序,在开发的早期,运行在我拥有的不同的 nginx+uwsgi 服务器上,并且准确地复制了它们的配置文件,但无济于事。我真的不知道为什么这行不通。但是根据 Flask 文档,以上就是我所需要的。

为了咯咯笑,我继续将 uwsgi 从等式中删除。在 cc 文件夹中创建了一个 run.py 文件... python run.py:

from app import app
app.run('0.0.0.0', port=5050, debug=True)

请求:

* Running on http://0.0.0.0:5050/
* Restarting with reloader
192.168.1.219 - - [31/Mar/2015 11:56:24] "GET / HTTP/1.1" 404 -

所以这似乎是我的应用程序的问题,而不是关于 nginx 或 uwsgi 的任何问题。不过,我在任何地方都没有收到任何错误...可能出了什么问题??

编辑

通过评论中的建议进行了更多挖掘。我编辑了我的 init.py 的底部:

import . import views

print views
print app.url_map

这是我启动服务器时的输出:

* Running on http://0.0.0.0:5050/
* Restarting with reloader
<module 'app.views' from '/srv/www/cc/app/views.py'>
Map([<Rule '/' (HEAD, POST, OPTIONS, GET) -> index>,
<Rule '/admin/' (HEAD, POST, OPTIONS, GET) -> admin>,
<Rule '/test/' (HEAD, POST, OPTIONS, GET) -> test>
...
Lots more ... ])

最佳答案

如果您设置 SERVER_NAME 配置值,它必须匹配应用程序在外部提供服务的主机和端口。要么将其注释掉,要么使其与服务器的域或 ip 匹配。

app.config['SERVER_NAME'] = 'example.com:80'

当运行开发服务器时,名称将是 localhost:5000,尽管在​​这种情况下通常不需要设置它。

关于python - Flask App 只返回 404,不管它是如何运行的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29375903/

相关文章:

python - Matplotlib.savefig 忽略轴并在图像周围绘制黑色边框

python - 在 Django 中,如何获取异常消息?

python - 在没有 pdfkit 的情况下将 Pandas DataFrame 保存为 PDF 文件格式

python - 向量化或加速 PANDAS 列上的 Fuzzywuzzy 字符串匹配

nginx - 设置 Linode(Ubuntu 10.04 32 位)nginx 未启动。 98 : address already in use

Nginx 提供静态响应消息体吗?

nginx - 使用 Nginx 和 uWSGI 服务器发送事件

python - 在 Flask 中获取没有端口的请求主机名

python - 有条件地应用 Flask-HTTPAuth 的 login_required 装饰器

python - Flask-paginate 不显示分页按钮