PHP 开发人员如何开始使用 MAMP 和 Python?

How to start using MAMP and Python for a PHP developer?

所以我一直在使用 PHP 进行开发,主要在 WordPress 网站上工作。我现在需要学习python。我在网上看了很多,虽然他们提供了关于如何学习 python 语言的简单教程,但我需要学习如何在我本地机器的 MAMP 服务器上开始它的开发。

通常对于 PHP,我会将一个 index.php 文件转储到 htdocs 文件夹中,然后使用 URL 导航到它,它就可以工作了。我知道 PHP 是最容易部署的,正如我在大学时学到的那样 ASP.NET。不过,对于 Python,我已经阅读了有关 cgi-bin 以及 MAMP 如何安装 mod_wsgi 和 mod_python 的信息。我不太熟悉这些术语,也不熟悉如何在 MAMP 上开始使用它。我需要知道如何使用 python 运行 网站。学习这门语言很容易,因为我可以 google 从现在开始自己学习,然后再去学习 Django。

比如我用这段代码会输出hello world

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

但是,这段代码给我一个错误:

#!/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!"

日志中显示的错误是:

mod_wsgi (pid=1794): Target WSGI script '/Applications/MAMP/htdocs/test/index.py' does not contain WSGI application 'application'.

如你所见,我对那里发生的事情一无所知。我还没有接触任何 MAMP 配置文件。

TL;DR:我想知道如何在我的本地 MAMP 服务器上打开一个简单的 Python 生成页面。我不知道它是如何工作的。我去哪里学习? (我还不想学语言)

首先:什么是网络服务器?它是一个持久运行的程序,侦听特定端口上的传入 HTTP 流量,并通过解析传入的 HTTP 请求并将它们委托给适当的处理程序来处理传入的 HTTP 请求。在典型的 MAMP 设置中,Apache 是 Web 服务器,您的 PHP 脚本是生成内容的委托。

现在,根据上面的定义,您不需要专用的网络服务器。您所需要的只是一个持续运行、侦听端口并能够处理 HTTP 请求并产生响应的程序。 Python 有许多框架可以让它自己做到这一点。您只需启动一个 Python 程序,它将自身绑定到一个端口并为传入的 HTTP 请求生成响应。有关此类别的非常简单的框架,请查看 Tornado。你可以直接拿它的 Hello World 例子,把它放在一个文件中,用 $ python helloworld.py 启动它,你就得到了一个 Python 网络服务器。

可以让像 Apache 这样的专用 Web 服务器处理连接管理并将 Python 委托给纯内容生产。为此,Web 服务器需要一种与 Python 应用交互的方式。 CGI 是最基本的形式,最接近 PHP 的交互模型:Web 服务器为每个传入请求启动一个 Python 脚本,并将其输出作为响应。但是,这是非常低效的,每次启动和停止脚本都会产生大量开销。 运行 Python 作为 WSGI 模块效率更高。这将启动 Python 脚本一次并将其保持 运行 并为 Web 服务器提供一种方法来为每个请求调用此脚本中的特定函数。更少的开销,但与 PHP.

截然不同的执行模型

创建一个 python 脚本,命名为 hellopython(或其他),无扩展名:

#!/usr/bin/python
print 'Content-type: text/html\n\n'
print '<html><head></head><body>Hello from Python!</body></html>'

放在

/Applications/MAMP/cgi-bin

确保它是可执行的

chmod +x hellopython

从您的 MAMP 本地主机查看

http://localhost:8888/cgi-bin/hellopython

在cgi-bin目录之外,你也可以这样做,但是给它扩展名.cgi