1

我正在尝试使用 mod_cgid 模块在 Apache 中部署我的 web.py 应用程序。

我在 urls.py 中定义了这样的 url

urls = (
    '/app/', 'index.index',
    '/', 'index.index'
)

这是我的应用程序启动 webstart.py 的地方

import web, urls, sys, os
def notfound():
    return web.notfound()
if __name__ == "__main__":
   app = web.application(urls.urls, globals())
   app.notfound = notfound
   app.run()

我的 Apache 配置如下所示

<Directory "dirname">
   Options +ExecCGI +FollowSymLinks +Indexes
   Order allow,deny
   Allow from all
   Require all granted
   DirectoryIndex webstart.py
</Directory>

当我尝试使用 localhost/app/ 访问我的服务器时,它总是显示未找到的页面,并且在日志中,我看到消息“警告:SCRIPT_NAME 与 REQUEST_URI 不匹配”

然后我尝试在它自己的未找到页面中打印这两个变量,我分别得到了 /app/webstart.py 和 /app/ 。

当我使用 localhost/app/ 访问它时,如何让我的应用程序工作?

4

2 回答 2

1
DirectoryIndex webstart.py

您已经在 Apache 配置中为目录访问指定了默认主页。因此,当您访问诸如 URL 之类的目录时,例如。localhost/app/, Apache 将此视为localhost/app/webstart.py然后将请求发送到 web.py。尝试从 Apache 配置中删除该条目并重新启动 Apache 守护程序。

更新

当你通过 CGI 部署 web.py 时,你会得到一个 server 条目http://localhost/webstart.py,因为你已经ScriptAliased/成为你的 CGI 脚本目录。webstart.py 中的路由定义位于该 url 之后。所以你应该参观http://localhost/webstart.py/app/你的/app/路线。你需要一些mod_rewrite定义来获取像http://localhost/app/.

于 2013-03-28T07:53:35.047 回答
0

无法解决这个问题,所以使用了 wsgi 模块。我就是这样做的... http://dfourtheye.blogspot.in/2013/03/deploying-webpy-application-in-apache.html

于 2013-03-29T05:45:08.460 回答