关于制作网络应用程序的初学者Python问题

时间:2010-11-16 21:57:21

标签: python wsgi

我是Python新手 - 从未在今天之前使用它。我感兴趣的是为Web开发Python应用程序。我想检查一下我的Web服务器是否支持WSGI或以某种方式运行python应用程序。

假设我有一个打印“Hello world!”的.py文件。如何测试我的服务器是否支持处理此文件?

仅供参考,这是Mac OS X服务器10.5。所以我知道安装了Python(它默认安装在Mac OS X上),但我不知道它是否设置为处理服务器端的.py文件并返回结果。

顺便说一下,我来自PHP背景,所以这对我来说有点陌生。我看过python docs re:wgsi,cgi等等,但由于我还没有做任何具体的事情,所以它并没有多大意义。

3 个答案:

答案 0 :(得分:5)

一个非常基本的WSGI应用程序可以如下所示:

def application(environ, start_response):
    start_response('200 OK', [('content-type', 'text/html')])
    return ['Hello world!']

不幸的是,如果你把它放在服务器上的helloworld.py中,然后浏览到URL / helloworld.py,你很可能会看到代码。

通常,您需要向服务器(或服务器配置文件)添加非常具体的配置选项,以使其正确地为您的python“应用程序”提供服务。鉴于您在Apache 2上使用mod_wsgi,配置可能如下所示:

<VirtualHost *>
    ServerName example.com
    WSGIScriptAlias /server/location/address /path/to/helloworld.py
</VirtualHost>

其中/ server / location / address是您必须浏览的URL的端点。

这是因为python WSGI捕获传递给它的所有URL,并将它们推送到相同的入口点(您的应用程序方法/类)。并且从参数中收到的信息中,应用程序必须决定返回哪个页面。

由于此信息是特定于应用程序的,因此应该有一种在服务器上配置它的方法,但是我还没有遇到允许配置Python应用程序的Web托管配置面板。这通常意味着您必须联系服务器管理员并让他们为您配置。

但是,一般情况下,当您注册托管时,公司通常会有一个页面,告诉您他们服务器上支持的内容(通常是:php,mysql)以及允许的空间和带宽。因此,如果他们没有在他们的网站上列出,很可能他们不会支持它。

要解决此问题,您可以购买VPS(虚拟专用服务器),然后根据需要进行配置。

答案 1 :(得分:2)

如果您不熟悉Python和Python Web应用程序开发,那么请忽略所有托管问题并且不要从头开始。只需获得一个功能齐全的Python Web框架,如Django或web2py,并学习如何使用他们内置的开发Web服务器编写Python Web应用程序。通过首先尝试解决生产网络托管的明显问题,你只会给自己带来很多痛苦。

答案 2 :(得分:1)

首先阅读此内容。

How Python web frameworks, WSGI and CGI fit together

然后修改你的问题,专门提出你尚未发现的事情。

阅读本文后,重新阅读关于mod_wsgi的部分,这是Apache可以运行Python的几种方式之一。

重新阅读该部分后,重新阅读有关Python如何作为cgi脚本运行的部分。这是Apache可以运行Python的另一种方式。

重新阅读完所有内容后,请修改问题以解释Apache配置的哪些部分会让您感到困惑。

你找不到mod_wsgi吗?你找不到mod_cgi吗?请具体说明Apache配置的哪些部分让您感到困惑。