Nginx+FastCGI+Python

简介:

网上更多文章是用Django、webpy等框架的前提下,由于我只是用其CGI而不是搞纯web开发,所以暂时不打算用这类框架,直接用flup包(其实大多数框架WSGI也是封装的flup)。

废话不多说,进入正题,先看下需要的环境和工具:

1、Linux2.6(废话- -!)

2、Nginx(需包含fastcgi模块)

3、Spawn-fcgi (官方下载:http://redmine.lighttpd.net/projects/spawn-fcgi/wiki

4、Python

5、flup(官方下载:http://trac.saddi.com/flup

安装都是些常规方法,就不一一介绍了

nginx的fastcgi配置照搬php的即可。

先上张简单画的原理图

spawn-fcgi是个工具,用来以fastcgi方式开启多个WSGIServer进程。

例:

spawn-fcgi -f /data/WSGIServer.py -a 127.0.0.1 -p 5678 -u www -F 5

-f WSGIServer脚本的决定路径

-a fastcgi绑定的ip

-p fastcgi绑定的端口

-u 已什么身份运行

-F 要启动的进程数(很多人以为是-C,其实那是PHP专用的,这里要用-F)

 

需要编码的部分就是WSGIServer这里了,贴个简单测试代码

 

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
import flup.server.fcgi as flups 

def application(environ, start_response): 
"""该函数可以写成模块import导入""" 
ret = "" 
try: 
uri = environ['PATH_INFO'] 
if uri[-1] == "/": 
uri = uri[:-1] 
if uri == "": 
ret = str(environ) 
elif uri == "/sleep": 
import time 
time.sleep(5) 
ret = "sleep: 5 secends" 
else: 
ret = uri 
except Exception, e: 
ret = str(e) 
status = '200 OK' 
response_headers = [('Content-type','text/plain')] 
start_response(status, response_headers) 
return [ret] 

if __name__ == "__main__": 
#直接用python运行 
#flups.WSGIServer(application, multithreaded=True, multiprocess=False, bindAddress=('127.0.0.1', 5678)).run() 
#fastcgi方式运行 
flups.WSGIServer(application).run()




本文转自einyboy博客园博客,原文链接:http://www.cnblogs.com/einyboy/archive/2012/11/30/2796926.html,如需转载请自行联系原作者。


目录
相关文章
|
Ubuntu 应用服务中间件 nginx
用python部署nginx
用python部署nginx
258 1
|
负载均衡 应用服务中间件 Linux
CentOS7下python3+Flask+uWSGI+Nginx+Supervisor环境搭建
在生产环境中通常用uwsgi作为Flask的web服务网关,通过nginx反向代理进行负载均衡,通过supervior进行服务进行的管理。这一套搭下来还是有一些坑要踩,本文通过一个简单的Flask web应用记录了CentOS7下python3+Flask+uWSGI+Nginx+Supervisor环境搭建的全过程,以及一些注意事项,以免遗忘。
288 0
|
应用服务中间件 测试技术 nginx
Python 实时获取任务请求对应的Nginx日志
Python 实时获取任务请求对应的Nginx日志
105 1
|
缓存 人工智能 应用服务中间件
Python实现对nginx日志access.log统计
Nginx服务器日志相关指令主要有两条:一条是log_format,用来设置日志格式;另外一条是access_log,用来指定日志文件的存放路径、格式和缓存大小,可以参加ngx_http_log_module。一般在nginx的配置文件中日记配置
417 0
Python实现对nginx日志access.log统计
|
应用服务中间件 nginx Python
Python编程:uWSGI+nginx配置flask实例
Python编程:uWSGI+nginx配置flask实例
189 0
|
应用服务中间件 nginx Python
Python:Flask部署Nginx、gunicorn、gevent、flask、supervisor
Python:Flask部署Nginx、gunicorn、gevent、flask、supervisor
198 0
|
网络协议 Unix 应用服务中间件
nginx和fastcgi的两种通信方式
nginx和fastcgi的两种通信方式
218 0
|
应用服务中间件 Linux nginx
python编程:linux环境gunicorn+nginx部署django项目
python编程:linux环境gunicorn+nginx部署django项目
246 0
|
应用服务中间件 Linux Shell
python编程:mac环境gunicorn+nginx部署flask项目
python编程:mac环境gunicorn+nginx部署flask项目
344 0
|
应用服务中间件 PHP Apache
nginx、fastcgi、php-fpm
什么是fastcgi? fastCGI是由CGI(common gateway interface,通用网关接口)发展而来,是http服务器(nginx、apache)和动态脚本语言(php)之间的通信接口。记住,fastCGI只是一个接口。