我想在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错误?
答案 0 :(得分:3)
假设您发布的application.py
脚本未编辑,则您错过了实际路线。在请求基本URL(http://54.68.62.180的情况下)时,Flask根本不知道要提供什么,因此404.将以下内容添加到application.py文件中:
@app.route('/')
def hello_world():
return 'hello world!'
请参阅quickstart guide。