我是初学者程序员。我开始使用 Python 和 Bottle 来制作一个小型 Web 应用程序来打印表单,到目前为止一切都很好。真正的问题是配置 Apache 和mod_wsgi
,据我所知几乎没有。
我的问题:我不断收到此错误:
未找到错误404
抱歉,请求的 URL /factura/ 导致错误:未找到
在工作中,他们给了我重定向到 IP:port 的地址;经过几天阅读 Apache 文档并通过网络查看示例后,我设法设置了配置,因此我的 VirtualHost 不会破坏其他已经运行的虚拟主机。配置如下所示(基于瓶子教程部署部分):
Listen port
NameVirtualHost IP:port
<VirtualHost IP:port>
ServerName IP:port
WSGIDaemonProcess factura processes=1 threads=5
WSGIScriptAlias / /var/www/factura/app.wsgi
<Directory /var/www/factura>
WSGIProcessGroup factura
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
我app.wsgi
的几乎与 Bottle 教程-部署部分中的相同。我只添加了一行sys.stdout = sys.stderr
:
import sys, os, bottle
# Change working directory so relative paths (and template lookup) work again
sys.path = ['/var/www/factura'] + sys.path
os.chdir(os.path.dirname(__file__))
# Error output redirect
# Exception KeyError in 'threading' module
sys.stdout = sys.stderr
import factura
application = bottle.default_app()
下面是一些与 Bottle 相关的 python 代码:
from lib import bottle
app = bottle.Bottle()
#serves files in folder 'static'
@app.route('/static/:path#.+#', name='static')
def ...
@app.route("/factura")
@bottle.view("factura")
def ...
@app.route("/print_factura", method="POST")
def ...
我已经阅读了与此类似的其他一些问题,但我无法看到我错过了什么。我想问题出在app.wsgi
?
更新
文件结构
/var/www/factura/ ## .py files
/views ## here is the web template
/static ## .css and .js of template
/lib ## package with bottle and peewee source files
/data ## inkscape file to play with
/bin ## backup stuff in repo, not used in code
Apache 错误日志只显示
Exception KeyError: KeyError(-1211426160,) in <module 'threading' from '/usr/lib/python2.6/threading.pyc'> ignored
这是来自 wsgi/python 问题的警告,wsgi 问题 197无害
更新 2工作
添加@app.route("/factura/")
注意斜线,随着应用程序导入的更改,from factura import app as application
这两者一起使其工作