在其他位置从 cgi-bin 运行 python 脚本
Posted
技术标签:
【中文标题】在其他位置从 cgi-bin 运行 python 脚本【英文标题】:running a python script from cgi-bin at other location 【发布时间】:2013-12-12 12:18:27 【问题描述】:据我了解,在网络服务器上运行 Python 脚本的一种方法是定义 cgi-bin 目录,然后将我的 script.cgi 放在那里。这可能会导致类似http://example.com/cgi-big/script.cgi。
但是如果我需要从不同的位置调用该脚本怎么办?我的意思是,假设这个脚本的目的是生成一个网页,我希望可以通过http://example.com/the/other/cute/location/ 访问该页面。那我该怎么做呢?
是通过 index.html 使用 SSI 的唯一方法,其中包含类似的内容:
<!--#exec cmd="../../../script.cgi" -->
或者还有其他解决方案吗?
【问题讨论】:
【参考方案1】:有很多方法可以在您喜欢的任何位置运行您的脚本;这主要是通过您的网络服务器配置完成的。我假设您使用的是 apache,但也有一种方法可以在其他网络服务器上执行所有这些操作。关键指令如下所示:
选项 ExecCGI SetHandler cgi脚本
对于您正在尝试做的事情,modpython 听起来也是您感兴趣的直接解决方案。请阅读以下内容: http://modpython.org/python10/
重点是 - 您可以配置 apachehandler 来监听特定目录或特定文件类型(或两者)上的请求,并让 modpython 处理它们。
如果您对被视为传统 cgi 的脚本更感兴趣,这仍然是一种选择,这里有很好的记录: http://httpd.apache.org/docs/2.0/howto/cgi.html 与您如何扫描指定 modpython apachehandler 以根据文件类型或位置工作类似,您可以对 cgi 处理程序(或 perl 或 php - 您可以看到为什么这些东西是模块化的)做同样的事情。
...为了完整起见,我还要指出 WSGI,虽然它仍然是新的并且正在发生变化,但对于基于服务器的脚本而言,它可能更接近未来的发展方向: http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface WSGI 一开始似乎更难理解,我会从前两个选项之一开始。
我非常有信心,我并没有涵盖您可以在网络服务器上运行 python 的所有方式...但我认为我已经引导您了解您想了解的内容。
【讨论】:
【参考方案2】:嗯,这是运行 Python 脚本的一种方式,但不是一种非常好的方式。在网络服务器上运行 Python 脚本有很多更好的方法,其中最好的是通过 WSGI 运行的(微)框架。
不过,要回答您的问题,您可以在 Apache 配置中使用 Alias
指令将您的 URL 映射到您的脚本位置。另请注意,cgi-bin
目录并没有什么神奇之处:只要您在该目录的 Options 指令中设置了 ExecCGI
标志(和 AddHandler
),任何目录都可以用于可执行脚本。
【讨论】:
以上是关于在其他位置从 cgi-bin 运行 python 脚本的主要内容,如果未能解决你的问题,请参考以下文章
运行 CGI Python Javascript 以检索 JSON 对象