运行Flask应用

时间:2016-01-28 01:13:33

标签: python apache flask

我想在Apache上设置Flask。我成功测试了我的Apache配置,但我无法使用以下Flask应用程序运行它。因此,我没有将此问题发布到服务器故障,而是发布Stack Overflow。

调用http://54.68.62.180会引发以下错误:

  

未找到

     

在服务器上找不到请求的URL。如果您手动输入了URL,请检查拼写,然后重试。

对于记录,我的Apache配置 AppName.conf 文件如下所示:

<VirtualHost *:80>
               ServerName 54.68.62.180
               WSGIDaemonProcess AppName threads=5
               WSGIScriptAlias / /var/www/AppName/appname.wsgi
               <Directory /var/www/AppName>
                       WSGIProcessGroup AppName
                       WSGIApplicationGroup %{GLOBAL}
                       Order allow,deny
                       Allow from all
               </Directory>
               ErrorLog ${APACHE_LOG_DIR}/error.log
               LogLevel info
               CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

我的 appname.wsgi 如下所示:

#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/AppName")

from appname import application
application.secret_key = 'my_key'

在我的Flask应用程序中, application.py 文件如下所示:

from appname import application
from appname.socket_interface import socketio

if __name__ == '__main__':
    socketio.run(application)
    #application.run()

我尝试了两个,socketio.run(应用程序)和application.run(),在这两种情况下我都收到错误。其他一些帖子如Flask tutorial - 404 Not Found似乎暗示应用程序“在任何路由注册之前执行”但我的application.run()已经在文件的底部。

路由在appname / appname / init .py中指定:

application.register_blueprint(frontend, url_prefix='/app')

并在

appname/appname/frontend/__init__.py

html源路由:

@frontend.route('/')
def frontend_test():
    return frontend.send_static_file('index.html')

我在这里做错了什么,为什么我会收到404错误?

1 个答案:

答案 0 :(得分:3)

假设您发布的application.py脚本未编辑,则您错过了实际路线。在请求基本URL(http://54.68.62.180的情况下)时,Flask根本不知道要提供什么,因此404.将以下内容添加到application.py文件中:

@app.route('/')
def hello_world():
    return 'hello world!'

请参阅quickstart guide