配置文件test.conf如下所示:
<ocsigen>
<server>
<port>*:8000</port>
<logdir>/home/zaxis/tmp/log/</logdir>
<datadir>/home/zaxis/tmp/data</datadir>
<user>zaxis</user>
<group>wheel</group>
<charset>utf-8</charset>
......
<extension findlib-package="ocsigen_ext.cgimod">
<cgitimeout value="30"/>
</extension>
<extension findlib-package="ocsigen_ext.staticmod"/>
......
<site path="qachina" charset="utf-8">
<cgi root="cgi-bin" dir="/media/E/www/qachina/cgi-bin"/>
<static dir="/media/E/www/qachina" />
</site>
....
<commandpipe>/home/zaxis/tmp/ocsigen_command</commandpipe>
</server>
</ocsigen>
然后我运行Ocsigen:
ocsigeocsigen -c test.conf
我可以去拜访http://127.0.0.1:8000/qachina/index.htm。然而,Ocsigen并不在cgi-bin中执行我的python脚本,而是希望浏览器下载它。
顺便说一句,所有python脚本文件都可以直接在shell中运行。
>head cgi-bin/nav.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-enter code here
...
我不能访问Ocsigen的邮件列表,所以我在这里张贴建议。
发布于 2011-11-26 10:04:02
你的Ocsigen到底是什么版本?
我刚刚尝试了ocsigen 1.3.4 ( Debian测试中的版本),您的配置片段似乎有一个bug (在Ocsigen方面)。你想要的东西可以通过以下方式实现:
<cgi regexp="cgi-bin/([^/]*)" dir="/usr/lib/cgi-bin/" script="\1" />
我刚刚检查了我可以访问的所有运行的Ocsigen实例,它们都使用了"regexp“属性。不过,文档确实允许您的版本,并且服务器也接受它。这两种选择之一是一个bug。
FYI,运行ocsigen和-V
选项有帮助。
发布于 2011-11-25 10:11:10
对于站点上的每个请求,Ocsigen尝试按配置文件的顺序列出的扩展名。在您的例子中,它尝试staticmod,这是成功的,因为cgi-bin是一个存在于给定给staticmod的目录中的目录。如果您希望先尝试cgimod,则应该将<cgi ...>
放在<static ...>
之前。
发布于 2011-11-25 07:46:20
我不知道任何确切的答案,因为在我看来,这应该是可行的,但我确实有一些问题可能是有帮助的。
当你被提示下载时,你真的下载了吗?如果是的话,您是在下载将由脚本生成的网页,还是正在下载脚本本身?如果是前者,那就是某种哑剧式的问题。如果是后者,那么它听起来更有可能是为页面服务的静态模块而不是CGI模块的问题。您是否尝试过移除<static dir="/media/E/www/qachina" />
以查看这是否有冲突?
https://stackoverflow.com/questions/8265309
复制相似问题