2014-07-13 87 views
0

我已经wampserver与安装在配置Apache运行python(CGI)

的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>" 

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

+0

什么在你的httpd.conf? – Foon

+0

你有安装并运行Apache扩展'mod_cgi'吗? – furas

+0

mod_cgi existe和它的标记为httpd.conf我已经遵循这个教程http://editrocket.com/articles/python_apache_windows.html,它不起作用 – Souf

回答

1

我个人不喜欢的CGI方式,所有这些东西的工作(慢产卵过程中,需要使用某种类似“FastCGI的”招数来绕过这个,等...)

我想你可以将你的Python程序作为一个HTTP服务器来构建(例如使用cherrypy或者任何你想要的),启动你的Python程序来监听localhost:然后,从Apache端,只需要配置一个代理到localhost:whatever。

优点:

  • 无需阿帕奇到餐桌一个Python过程中的每个请求(昂贵的操作)
  • 你会很容易地改变你的Web服务器(如切换到Nginx的)作为nginx的也支持代理。
  • 您就可以启动多个Python的服务器和它们之间的负载均衡
  • 您可以举办不同的主机上的蟒蛇服务器负载均衡充电
  • 您就可以完全地绕过阿帕奇如果您在应用程序前放置清漆来缓存结果。
  • Cherrypy可以自动重新加载文件,如果它们被更改,不需要重新启动Apache。
  • 你会坚持使用HTTP,不需要使用像fastcgi这样的协议。
  • 容易测试您的开发机无阿帕奇,只需将浏览器指向到localhost:无论

配置Apache 2到您的请求传递到您的蟒蛇守护程序一样简单:

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

而且从cherrypy文档的世界你好:

import cherrypy 

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

cherrypy.quickstart(HelloWorld()) 
0

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