配置apache运行python(cgi)

时间:2014-07-13 00:48:19

标签: python apache cgi

我在wampserver中安装了apache 2.4.4

我已经安装了python并且我创建了一个测试文件:

#!/Python34/python
print "Content-type: text/html"
print
print "<html><head>"
print ""
print "</head><body>"
print "Hello."
print "</body></html>"

我想知道如何运行这个脚本吗?

2 个答案:

答案 0 :(得分:1)

我个人不喜欢CGI和所有这些东西的工作方式(生成进程的速度慢,需要使用像“fastcgi”这样的技巧来绕过这个等等...)

我认为您可以将您的Python程序构建为HTTP服务器(例如,使用cherrypy或任何您想要的。),启动您的Python程序以侦听localhost:然后,从Apache端,只需配置代理到localhost:无论如何。

优点:

  • 每个请求都不需要apache来分叉Python进程(一个昂贵的操作)
  • 您将轻松更改您的Web服务器(例如切换到Nginx),因为nginx也支持代理。
  • 您将能够启动多个Python服务器并在它们之间实现负载平衡
  • 您将能够在不同主机上托管您的python服务器以进行负载均衡费用
  • 如果您在应用程序前放置一个Varnish来缓存结果,您将能够完全绕过Apache。
  • Cherrypy可以自动重新加载文件,如果它们被更改,则无需重启apache。
  • 你会坚持使用HTTP,不需要使用像fastcgi这样的协议。
  • 在没有Apache的情况下轻松测试您的开发计算机,只需将浏览器指向您的本地主机:无论

配置apache 2将请求传递给python守护程序就像这样简单:

<VirtualHost *:80>
    ServerName example.com
    ProxyPass / http://localhost:8080/
</VirtualHost>

来自cherrypy文档的hello world:

import cherrypy

class HelloWorld(object):
    def index(self):
        return "Hello World!"
    index.exposed = True

cherrypy.quickstart(HelloWorld())

答案 1 :(得分:0)

+1 Julien Palard所说的不使用CGI,它真的很慢而且效率低下。使用Apache独立运行服务器并使用Apache进行代理的另一种方法是使用mod_wsgi,它允许您在Apache进程内运行Python进程。大多数Web框架(Django,Bottle,Flask,CherryPy,web2py等)都可以很好地工作。