Python noob:在支持Python的Web服务器上,我如何使用Python?

时间:2011-01-03 19:04:59

标签: python cgi

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

# enable debugging
import cgitb
cgitb.enable()

print "Content-Type: text/plain;charset=utf-8"
print

print "Hello World!"

我的目标是用Python替换PHP。我对PHP非常好,我可以在我自己的本地机器上使用Python,但我不能让它在我的Web服务器上工作。我的网络主机说他们支持Python,所以我一定做错了。

现在,Python与CGI相关联。 python文件必须进入我的cgi-bin文件夹吗?我从未见过带有py扩展名或cgi扩展名的web文件,我不知道这些东西是如何工作的,我真的只熟悉PHP。

我看了谷歌“学习Python”课程的第一个小时,而且只讨论了在本地运行Python的问题。

:(对不起,我这么小,请修理我。

3 个答案:

答案 0 :(得分:7)

这是一个完全可以接受的CGI脚本。如果你正在使用Apache,它将需要进入你的cgi-bin,需要是可执行的(我可能错了),你应该用语言.py的公共扩展名来命名,或者用.cgi

如果您可以控制您的网络服务器将考虑CGI的文件,您可以将文件放在任何您想要的位置。机会是,你无法控制。您可以在此处查看有关Apache中CGI的更多信息:http://httpd.apache.org/docs/2.2/howto/cgi.html

基本要点是Apache不会将文件视为CGI文件,除非满足两个条件:cgi-script需要使用AddHandlerSetHandler指令激活,并且需要在ExecCGI指令中启用Options。通常,共享托管环境中的用户无法使用此功能。

编辑:为了澄清,CGI只是一种机制,您可以用任意语言编写脚本,并让您的Web服务器执行它们并将该脚本的输出发送给您的客户端。除了一个简单的脚本之外,它不是推荐的方法,因为在每个请求中服务器都会启动一个新的解释器实例。对于Python,最佳解决方案是WSGI兼容框架,例如FlaskBottleDjango。前两个是微框架,试图避开你的方式,而Django是一个提供大量粘合剂的全栈框架。

答案 1 :(得分:2)

Python做Web应用程序的方式与CodeIgniter或Cake PHP有更多共同之处。

Django开始,只需尝试教程。来自顽固的PHP开发人员的关于Django的最常见的抱怨是Django不会让你混合代码和HTML - 这是一件好事。

当然你可以做普通的旧CGI,但这很难。

答案 2 :(得分:0)

根据您的网络托管公司,#!/ usr / bin / env python行可能需要以不同的方式阅读。一些包含“python”上的版本号,一些包含在不同目录中的python。您需要咨询您的提供商。

此外,您需要为文件提供世界执行(NOT write)权限,因为您希望人们执行脚本。

如果您在cgi-bin文件夹中上传带有.cgi或.py扩展名的代码,然后在浏览器中转到该代码,会发生什么?

另外,如果你谷歌“python cgi”你会发现很多教程。对于没有大量命中的简单东西,cgi可以正常工作,尽管正如其他人所说的那样,还有其他机制在需要时更有效率。

你不能在同一页面上混合使用python和html,但是有一些机制(参见python和服务器端包含或SSI)用于编写带有地标的html页面,该地标调用你的python程序并放置来自python的响应程序中显示的结果显示为html。