在其他位置从cgi-bin运行python脚本

时间:2013-12-12 12:18:28

标签: python apache cgi-bin

据我所知,在Web服务器上运行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" -->

或者还有其他解决方案吗?

2 个答案:

答案 0 :(得分:1)

有许多方法可以在任何您喜欢的位置运行脚本;这主要是通过您的网络服务器配置完成的。我将假设您正在使用apache,但是也有办法在其他Web服务器上执行所有这些操作。关键指令看起来像:

选项ExecCGI SetHandler cgi-script  

对于你想要做的事情,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的所有方法......但我认为我已经引导你接近你想知道的事情了。

答案 1 :(得分:0)

嗯,这是运行Python脚本的一种方式,但不是一种非常好的方式。在Web服务器上运行Python脚本有很多更好的方法,其中最好的是通过WSGI运行的(微)框架。

要回答您的问题,您可以在Apache配置中使用Alias指令将URL映射到脚本位置。另请注意,cgi-bin目录没有任何神奇之处:只要在Options指令中设置ExecCGI标志(和AddHandler),任何目录都可以用于可执行脚本。目录