2011-06-11 67 views
3

我是一名前PHP开发人员,我努力克服了我可以编写一个nginx配置脚本,创建目录,启动nginx + PHP-FPM,上传我的代码并让它运行的思想。我想要开始使用Python来体验它,并开始创建Web应用程序,但是我如何才能完成所有工作,我有点失落。如何部署用Python编写的Web应用程序?

虽然有些人的建议总是会使用像Django这样的框架,但我想看看这一切是如何从底层开始的。

我遇到了Python web服务器的比较,看来gevent就是我正在寻找的东西。但它们如何融合在一起?我是否还需要nginx(除了静态内容)作为反向代理,还是我需要做一些不同的事情?我面临着“初学者失明”的问题,我正在努力研究如何融合在一起。

回答

2

我自己是一名初学Python开发者,所以我也有同样的问题。也许更高级的用户可以填写细节。这是我迄今为止所做的:

最简单的入门方法是简单地制作一个可执行的python脚本(.py)并将其放入您的cgi-bin中。然后您可以通过yourhost.com/cgi-bin/your_script.py访问它。很容易做到,易于使用的表单处理和东西。

某些服务器会要求您重新启动服务器,才能“看到”新的.py脚本,这对于快速开发可能相当恼人。这是很多人使用WSGI等中间件的原因之一。以下是我如何修改我的Apache配置以启用WSGI:

LoadModule wsgi_module libexec/apache2/mod_wsgi.so 

<VirtualHost *:80> 

WSGIScriptAlias /myapp /Library/WebServer/wsgi-scripts/views.wsgi 

<Directory /Library/WebServer/wsgi-scripts> 
Order allow,deny 
Allow from all 
</Directory> 

</VirtualHost> 

views.wsgi只是一个Python脚本。现在,如果我去localhost/myapp /任何东西,它会重定向到views.wsgi。不要把这个文件放在根目录下,否则你将无法引用静态文件。

一个简单的应用程序可能仅仅是这样的:

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

ENVIRON包含用户尝试访问路径信息,这样的想法是,你可以建立一个网址列表,并告诉你的程序可以根据请求的URL调用函数。事情是这样的:

path  = environ.get('PATH_INFO','') 
if path.startswith('/helloworld'): 
    # call your function that returns HTML code 

我没有处理多用框架(如Django的),但我认为的一个优势存在,他们可以很容易地填写使用任何变量HTML模板传递从你的脚本。 Django的模板引擎允许包含变量以及逻辑(如果,等等)与HTML混合。当函数被调用时,它返回的任何内容都会被发送到客户端。

我仍然很新的这一切,所以请纠正我,如果有任何错误在这里...

0

Python与PHP有一点不同。 关于Python的好处是,在一个标准中定义了一个通用接口,可以让一个人在一边使用各种Python应用程序,另一边使用不同的Web服务器。它被称为WSGI,你可以阅读更多关于它here

here是一个很好的文章,通过ngnix部署Django应用程序。

+0

这并没有真正回答我的问题,而我不生产基地您现在想要使用或任何其他框架Django。 – Matty 2011-06-12 00:10:40

+1

这个答案可能与你的问题有关,比你想象的要多,Django放在一边。 – JasonFruit 2011-06-12 01:10:36

0

你需要一些软件,将执行你的pyton代码..

你可以尝试100%的蟒蛇堆栈tornado

或者你也可以使用Apache,Nginx的或lighttpd的(我认为所有的C语言编写的),然后使用一些MOD(mod_wsgi的,fgci或uWsgi)以使这个网络服务器使用wsgi接口来运行你的代码。这第二个选项是像+ some_mod做什么阿帕奇运行你的PHP代码..

我在Apache + mod_wsgi的运行和Nginx的+ uWsgi