在apache上运行Flask应用程序导致404错误

时间:2018-01-17 19:26:14

标签: python apache flask mod-wsgi

我正在使用mac os x并试图让the official flask tutorial与Apache一起工作,但是当我尝试在浏览器中的localhost中打开该网站时,会产生404:The requested URL / was not found on this server.我跟着these directions配置了烧瓶的mod_wsgi。我使用带烧瓶的内置服务器运行应用程序,因此我知道应用程序本身可行。

以下是Apache错误日志中的结果错误

[negotiation:error] [pid 7563] [client ::1:50509] AH00687: Negotiation: discovered file(s) matching request: /Library/WebServer/Documents/flaskr/flaskr.wsgi (None could be negotiated).

以下是flaskr.wsgi

/Library/WebServer/Documents/flaskr/flaskr.wsgi文件中的内容
import sys
sys.path.insert(0, '/Library/WebServer/Documents/flaskr')

from flaskr import app as application

我的httpd.conf文件中有以下内容

Listen 80
<VirtualHost *>
    ServerName localhost

    WSGIDaemonProcess flaskr user=_www group=_www threads=5
    WSGIScriptAlias / /Library/WebServer/Documents/flaskr/flaskr.wsgi

    <Directory /Library/WebServer/Documents/flaskr>
        WSGIProcessGroup flaskr
        WSGIApplicationGroup %{GLOBAL}
        Require all granted # httpd 2.4 syntax as noted in the guide
    </Directory>
</VirtualHost>

LoadModule wsgi_module /usr/local/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-darwin.so
WSGIPythonHome /usr/local/Cellar/python3/3.6.3/Frameworks/Python.framework/Versions/3.6

当我运行sudo apachectl -M时,从终端显示wsgi_module (shared)。如果我在我上面列出的httpd.conf文件中注释掉了代码,那么wsgi_module会从启用的模块列表中删除,所以除非有我不知道的事情mod_wsgi似乎已成功启用,但正如我所提到的,我在尝试查看该网站时收到了404消息。

修改

我认为我的Apache配置没有任何问题。我尝试了this tutorial以便在Apache上运行并运行它。一旦我弄清楚我做错了什么&#34;烧瓶&#34;我会更新。应用程序。

编辑 - 发现问题

原来我的flaskr.wsgi文件位于错误的目录中。它原本应该在/Library/WebServer/Documents/flaskr/flaskr/flaskr.wsgi

我引用的官方Flask教程使用以下目录结构

flaskr <----Initially put my `flaskr.wsgi` file in this directory
    init.py
    flaskr <----Changed to this directory and it worked
        flaskr.py
        flaskr.db
        flaskr.wsgi 

还将系统路径更改为sys.path.append('/Library/WebServer/Documents/flaskr/flaskr')

0 个答案:

没有答案