【问题标题】:Beginner Python question about making a web app [closed]关于制作网络应用程序的初学者 Python 问题 [关闭]
【发布时间】:2011-05-11 02:39:22
【问题描述】:

我对 Python 完全陌生——在今天之前从未使用过它。我有兴趣为 Web 开发 Python 应用程序。我想检查一下我的 Web 服务器是否支持 WSGI 或以某种方式运行 python 应用程序。

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

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

顺便说一句,我来自 PHP 背景,所以这对我来说有点陌生。我已经查看了 python 文档 re: wgsi、cgi 等,但由于我还没有做任何具体的事情,所以它不太有意义。

【问题讨论】:

  • 你在说什么“服务器”? Web 服务器是一个非常具体的软件。例如,Apache httpd 服务器。你问的是什么“服务器”软件?
  • 正如我所提到的,我使用的是 Mac OS X 服务器 10.5。这默认使用 Apache(我相信)。
  • Mac OS X 可以使用 Apache。那不是重点。 是否正在考虑使用 Apache?你必须选择一个服务器。你打算用什么服务器?
  • @S.Lott:我没有设置自己的服务器,也没有购买托管服务。我有网络空间,我想看看它是否能够执行我的 python 脚本。我没有管理员权限,所以如果没有,那么它就没有......我只是想知道。
  • Mac OS X 服务器是 Apple 销售的 Mac OS X 版本,预安装和预配置了 Apache。我应该澄清一下,我的意思是我使用的服务器是 Mac OS X 服务器。我的电脑也是 Mac OS X,但这完全不相关。

标签: python wsgi


【解决方案1】:

一个非常基本的 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(虚拟专用服务器),然后根据需要进行配置。

【讨论】:

  • 谢谢,这很有帮助!如果您不介意,我有几个后续问题?服务器上有一个共享的 cgi-bin,我注意到里面有一个 test.py 文件可以工作:chil.rice.edu/cgi-bin/test.py我的 python 文件给出了一条错误消息。我记得读过对python文件的任何更改都需要重新启动Web服务器(使用CGI方法时),所以如果我重新启动服务器,它应该可以正常工作,对吧?就 WSGI 而言,我想如果不联系我的系统管理员就无法使用 WSGI 是安全的,对吧?
  • 这取决于他们如何配置python系统。返回的服务器标头是:Server - Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.7l DAV/2 PHP/5.2.12。所以我假设他们正在使用 mod_python,在这种情况下,是的,您将需要以某种方式重新启动 Apache 以使其提供更新版本的文件。如果他们使用 mod_wsgi,有办法解决这个问题(使用自动代码重新加载),请参阅code.google.com/p/modwsgi/wiki/ReloadingSourceCode
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 2011-01-12
    • 2018-01-08
    相关资源
    最近更新 更多