1

我正在开发一个使用 python 的 web.py 框架实现后端的小型 Web 仪表板项目。

仪表板上有各种小部件,其中一个还使用 web.py 实现了其后端。问题是一次似乎只有一个指定的应用程序入口点起作用。仪表板和小部件的 apache 配置都放在同一个文件中。apache2/conf.d/ 中的原始配置文件(实际上工作了一段时间)如下所示:

WSGIPythonPath /var/www/ProjectDASHBOARD/api
WSGIScriptAlias /ProjectDASHBOARD/api /var/www/ProjectDASHBOARD/api/api.py/

AddType text/html .py

<Directory /var/www/ProjectDASHBOARD/api/>
    Order deny,allow
    Allow from all
</Directory>


# Stuff for graphingwidget

WSGIPythonPath /var/www/ProjectDASHBOARD/widgets/graphingwidget/api
WSGIScriptAlias /ProjectDASHBOARD/widgets/graphingwidget/api /var/www/ProjectDASHBOARD/widgets/graphingwidget/api/api.py/

AddType text/html .py

<Directory /var/www/ProjectDASHBOARD/widgets/graphingwidget/api/>
    Order deny,allow
    Allow from all
</Directory>

仅此一项不起作用,两个 api.py 文件中还需要下一段代码,检查它们的适当路径并在未找到时添加它们(摘自小部件文件):

import web
import json
import sys

path = '/var/www/ProjectDASHBOARD/widgets/graphingwidget/api'
if path not in sys.path:
    sys.path.append(path)

对仪表板进行了类似的检查。

所有这一切确实工作了整整一周,然后在尝试从头安装时突然停止工作,这让人们更加困惑到底出了什么问题。尝试从网页访问 api 时收到的错误是 HTTP 错误 500 内部服务器错误。然后在对 apache 配置文件进行一些更改后,其中一个 api 开始工作:

WSGIPythonPath /var/www/ProjectDASHBOARD/widgets/graphingwidget/api
WSGIPythonPath /var/www/ProjectDASHBOARD/api
WSGIScriptAlias /ProjectDASHBOARD/api /var/www/ProjectDASHBOARD/api/api.py/
WSGIScriptAlias /ProjectDASHBOARD/widgets/graphingwidget/api /var/www/ProjectDASHBOARD/widgets/graphingwidget/api/api.py/

AddType text/html .py

<Directory /var/www/ProjectDASHBOARD/api/>
    Order deny,allow
    Allow from all
</Directory>


# Stuff for graphingwidget

AddType text/html .py

<Directory /var/www/ProjectDASHBOARD/widgets/graphingwidget/api/>
    Order deny,allow
    Allow from all
</Directory>

基本上只是将路径移到了文件的开头,并稍微切换了顺序,突然其中一个 api 又开始工作了。稍微改变一下顺序,然后使另一个 api 工作并制动另一个。我不记得路径的正确顺序,但关键是它曾经运行良好,然后在安装到新的相同虚拟机时停止工作,并且只有一个 api 的工作取决于路径的顺序.

最初配置文件位于不同的文件中,但它并没有那样工作。有各种各样的错误,比如“目标 WSGI 脚本'路径'不能作为 Python 模块加载。”,只有当它们被移动到同一个文件时才开始工作。

我在这里想,不知何故,其中一条路径被另一条覆盖了,或者一直以来整个配置都从根本上是错误的,并且只能靠运气(整整一周,没有问题......)

关于什么是错的任何线索?

4

1 回答 1

0

抱歉迟到了,但这个案子基本上不得不在http://webpy.org/install#apachemodwsgi仔细 RTFM并使用 .htaccess 文件。

真的不知道为什么原始问题中的解决方案会如此有效。

于 2012-08-30T20:29:27.277 回答