在其他位置从 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 脚本的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中运行 python 或其他语言代码

从作业实际运行的其他位置访问 Spark Web UI

运行 CGI Python Javascript 以检索 JSON 对象

ubuntu怎么执行python文件

在 documentroot(cgi-bin 文件夹)之外运行 PHP 文件

AWS beanstalk cgi-bin 权限