我正在使用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')