我正在尝试使用mod_cgid模块在Apache中部署我的web.py应用程序。
我在urls.py
中定义了这样的网址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不匹配”
然后我尝试在notfound页面中打印这两个变量,我分别得到了/app/webstart.py和/ app /。
当我使用localhost / app /?
访问应用程序时,如何让我的应用程序工作答案 0 :(得分:1)
DirectoryIndex webstart.py
您已在Apache配置中指定了目录访问的默认主页。所以当你访问像URL这样的目录时,例如。 localhost/app/
,Apache将其视为localhost/app/webstart.py
,然后将请求发送到web.py.尝试从Apache配置中删除该条目并重新启动Apache守护程序。
<强>更新强>:
当您deploy web.py through CGI时,您获得了服务器http://localhost/webstart.py
的条目,前提是您已将ScriptAlias
ed /
作为您的CGI脚本目录。 webstart.py中的路由定义位于该url之后。因此,您应该访问http://localhost/webstart.py/app/
路由/app/
。您需要一些mod_rewrite
定义才能获得http://localhost/app/
。
答案 1 :(得分:0)
无法解决此问题,因此使用了wsgi模块。我就这样做了...... http://dfourtheye.blogspot.in/2013/03/deploying-webpy-application-in-apache.html