所以我一直在使用PHP开发,主要是在WordPress网站上工作。我现在需要学习python。我已经在线阅读了很多内容,虽然它们提供了关于如何学习python语言的简单教程,但我需要学习如何在我的本地机器的MAMP服务器上开始它的开发。
通常对于PHP我会将一个index.php文件转储到htdocs文件夹中并使用URL导航到它并且它可以工作。我知道PHP是最容易部署的,因为我在大学时学过ASP.NET。但是对于Python,我已经阅读了关于cgi-bin以及MAMP如何安装mod_wsgi和mod_python的内容。我不太熟悉这些术语,也不熟悉如何在MAMP上开始使用它。我需要知道如何使用python运行网站。学习语言很容易,因为我可以自己从谷歌那里谷歌,然后去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生成页面。我不知道它是如何工作的。我在哪里学习? (我不想学习这门语言)
答案 0 :(得分:4)
首先:什么是网络服务器?它是一个持久运行的程序,侦听特定端口上的传入HTTP流量,并通过解析它们并将它们委派给适当的处理程序来处理传入的HTTP请求。在典型的MAMP设置中,Apache是Web服务器,PHP脚本是生成内容的委托。
现在,根据上面的定义,您不需要专用的Web服务器。您只需要一个持久运行,侦听端口并能够处理HTTP请求并生成响应的程序。 Python有许多框架允许它自己完成。您只需启动一个Python程序,它将自身绑定到一个端口并为传入的HTTP请求生成响应。对于此类别中非常简单的框架,请查看Tornado。您可以从字面上获取其Hello World示例,将其放在一个文件中,使用$ python helloworld.py
启动它并且您已经拥有了一个Python Web服务器。
可以让像Apache这样的专用Web服务器处理连接管理,并将Python委托给纯内容制作。为此,Web服务器需要有一种与Python应用程序交互的方式。 CGI是最基本的形式,最接近PHP的交互模型:Web服务器为每个传入请求启动一个Python脚本,并将其输出作为响应。这是非常低效的,但每次启动和停止脚本都会产生很多开销。将Python作为WSGI模块运行更有效。这将启动Python脚本一次并使其保持运行,并为Web服务器提供一种方法,以便针对每个请求在此脚本中调用特定函数。开销较少,但与PHP完全不同的执行模型。
答案 1 :(得分:1)
创建一个名为hellopython(或其他)的python脚本,没有扩展名:
#!/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 localhost查看
http://localhost:8888/cgi-bin/hellopython
在cgi-bin目录之外,你也可以这样做,但是给它扩展名为.cgi