费了2天的功夫,翻阅了无数的中文、英文资料,终于搞定。写下此文留待以后翻阅用

     本文环境,centOS 5.4 ,Nignx-0.8.49, Python 2.6.5
 
=====================================================================================
       WSGI是Python应用程序或框架和Web服务器之间的一种接口,已经被广泛接受, 它已基本达成它了可移植性方面的目标。  
      WSGI 没有官方的实现, 因为WSGI更像一个协议. 只要遵照这些协议,WSGI应用(Application)都可以在任何实现(Server)上运行, 反之亦然。
 
     WSGI具体实现有很多种方法,网上有很多的用python写的框架,比如facebook的tornado,我用的是flup,具体的介绍可以到 http://pypi.python.org/pypi/flup/1.0。
 
     对于WSGI的深入理解可以参考本博客的另一篇文章:
 
     cd /usr/local/src
     wget http://pypi.python.org/packages/2.5/f/flup/flup-1.0-py2.5.egg#md5=3c9368437e9bffb950c6cce54425d32f
     tar -xzvf flup-1.0.3.dev-20100525.tar.gz
     cd     flup-1.0.3.dev-20100525
     python setup.py install
     到此flup安装完毕
=====================================================================================
 以上是准备工作,下面正式开始
  
 配置nginx,找到nginx.conf
 添加一段如下代码
 server
  {
    listen  8000;
   server_name test.com;
    location /
    {
       #fastcgi_pass  unix:/tmp/python-cgi.sock;(注1)
      fastcgi_pass  127.0.0.1:8008; (注意这里的端口和上面的listen的8000端口要不一样,否则会报地址已占用的错)
      fastcgi_param SCRIPT_FILENAME "";
      fastcgi_param PATH_INFO $fastcgi_script_name;
      include fcgi.conf;
    }
  }
 
注1:这里最好是用127.0.0.1:8000代替,这样的话就没有访问权限的限制,如果用的是python-cgi.sock,还得chmod 777 python-cgi.sock才可以,不然的话浏览器会出现505的内部错误。
 
 引用原文如下:A Web server can connect to a FastCGI server in one of two ways: It can use either a Unix domain socket (a “named pipe” on Win32 systems), or it can use a TCP socket. What you choose is a manner of preference; a TCP socket is usually easier due to permissions issues.
 
 
 然后我们再写一个fcgi.py,代码如下
#!/usr/bin/python
# encoding : utf-8
 
from flup.server.fcgi import WSGIServer
 
def myapp(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    return ['Hello World!\n']
 
if __name__  == '__main__':
   WSGIServer(myapp,bindAddress=('127.0.0.1',8008)).run()(注2)
  
注2,看到了吗,这里的bindAddress 的值是一个元组,这个是WSGIServer的源代码要求这么写的,而且它的值对应的是上面fastcgi-pass的值
 
然后我们就可以运行python fcgi.py --method=prefork/threaded minspare=50 maxspare=50 maxchildren=1000 (注3)
注3:后面的那些参数相当于php-cgi后面的参数,但是具体的用途还需要进一步探索
 
运行到这了,我们就可以在浏览器里面敲: http://localhost:8000
如果返回 Hello World,恭喜你,迈出了nginx 运行python的第一步
 
============================================================================================================

前几天写了   nginx上用fastcgi配置python环境(一),在那篇文章里面我用的是最简单的配置,在这篇文章里面我将进一步介绍

 
需要的软件 : Linux ,
                    nginx ,
                    spawn-fcgi(一个fastcgi的管理工具) ,
                    flup(用python写的实现WSGI的模块,这个很重要,详细介绍http://pypi.python.org/pypi/flup/1.0),
                    
===============================================================================================
 
下载安装好上面说的软件。nginx配置这些和上一篇文章的一样,就不说了
说说spawn-fcgi : spawn-fcgi  -f /data/www/python/fcgi.py -a 127.0.0.1 -p 8008  -F 5 -P /var/run/fcgi.pid -u www
                      
                   -f 要执行的文件(不理解的可以思考php-cgi这个命令)
                   -a 监听的地址
                   -p 监听的端口(这个不是nginx监听的网络端口,而是nginx的fastcgi-pass传过来的端口)
                   -F fastcgi开启的进程数(不理解的可以思考下php的php-cgi数目)
                   -P 开启的进程的进程号所写入的文件(有了这个就可以很轻松的杀掉开启的fasgcgi)
                   -u  以什么用户身份运行(这里有root会报错,不知道什么原因)
 
 
===============================================================================================
下面上代码,代码很简单
 
#!/usr/bin/python
 
import flup.server.fcgi as flups
 
def myapp(environ, start_response):   
    start_response('200 OK', [('Content-Type', 'text/plain')])
    return ["how do you do\n"]
    
if __name__  == '__main__':
    #WSGIServer(myapp,bindAddress=('127.0.0.1',8008)).run()(如果是直接用flup而不用fastcgi就用它)
    flups.WSGIServer(myapp).run() (如果是fastcgi的话就用它)
 
 
在浏览器输入 http://localhost:8000
如果返回 how do you do ,恭喜你,迈出了nginx 运行python的第二步

nginx上用fastcgi配置python环境的更多相关文章

  1. 在 CentOS 7上安装并配置 Python 3.6 环境

    前言 按照此方法安装保证以下报错什么的统统都没有! 基础环境 系统:centos7.4 软件:python3 Retrying (Retry(total=0, connect=None, read=N ...

  2. 4.8 Sublime Text3 中配置 Python环境 --之下Sublime配置Python环境

    返回总目录 目录: 1.没有配置之前 2.安装Package Control插件 3.安装其他库: 4.配置其他操作: (一)没有配置之前: 我们试着运行以下,会效果怎么样? 1.首先选择Python ...

  3. Visual Studio Code配置Python环境

    安装环境python环境变量,这个就不写了,这类文章一抓一大把,这类就省略了······· 在Visal Studil Code中配置python环境,其实跟我的上一篇文章一样,如图: 这里有两个选择 ...

  4. Anaconda 配置 Python 环境

    原文地址:Anaconda 配置 Python 环境 0x00 环境 Anaconda: 2019.03 Python: 3.6.8 0x01 Linux 安装 Anaconda 交互安装 Anaco ...

  5. Win10安装VSCode并配置Python环境 完整版超详细简单【原创】

    我们分为三个步骤进行: 一.下载VSCode 二.配置Python环境 三.测试Python 一.下载VSCode 1.打开国内镜像vscode下载地址,即可自动下载:https://vscode.c ...

  6. 4.7 Sublime Text3 中配置 Python环境 --之上安装Sublime 3

    返回总目录 目录: 1.展示效果: 2.缺优分析: 3.下载Sublime Text3 (一)展示效果: 1.能够交互式编写Python代码: 2.可以编写文件式Python代码: 3.能够自动补齐代 ...

  7. linux下配置python环境 django创建helloworld项目

    linux下配置python环境 1.linux下安装python3 a. 准备编译环境(环境如果不对的话,可能遇到各种问题,比如wget无法下载https链接的文件) yum groupinstal ...

  8. VS Code设置中文和配置Python环境

    前言: Visual Studio Code(以下简称VSCode)是一个轻量且强大的代码编辑器,支持Windows,OS X和Linux.内置JavaScript.TypeScript和Node.j ...

  9. 配置Python环境变量

    虽然是老问题了,现在安装都自动配置环境变量. 这里,我是在VS2017中安装的Python3.6,但是没有自动配置好环境变量. 配置Python环境变量 打开[此电脑]—[属性]—[高级系统设置]—[ ...

随机推荐

  1. 淘淘实惠多www.taohuiduo.com-专注独家折扣、1折特卖、9块9包邮、全场包邮

    淘淘实惠多-http://www.taohuiduo.com 专注独家折扣.1折特卖.9块9包邮.品牌折扣.20元封顶.全场包邮,所有的促销商品包括男装.女装.箱包配饰.母婴.日用.化妆品.数码.男鞋 ...

  2. DOS批处理命令-pause

    “pause”用于暂停批处理的执行器并给出提示信息,然后由用户决定是继续执行还是终端执行. 语法: pause 简单一个pause,不附带任何参数. 执行pause以后会提示一句话[按任意键继续执行] ...

  3. ios Swift 算法

    // Playground - noun: a place where people can play import Cocoa var nums = Int[]() ... { nums.appen ...

  4. 第九篇、Swift的基本使用

    1.访问权限 /* 1> internal : 内部的 1. 默认情况下所有的类&属性&方法的访问权限都是internal 2. 在本模块(项目/包/target)中可以访问 2 ...

  5. ios 微信细节

    1.登录后,下次登录保存其用户名. * 官方的登录实现          * 1.把用户名和密码放在沙盒 NSString *user = self.userField.text;    NSStri ...

  6. XML中的Xpath解析的例子

    /*XPath 术语节点(Node)在 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释以及文档(根)节点.XML 文档是被作为节点树来对待的.树的根被称为文档节点或者根节 ...

  7. 我的博客已搬迁到http://www.lsworks.net

    我的博客已搬迁到http://www.lsworks.net

  8. 关于css3 中filter的各种特效

    做项目时遇到了一个有趣的css特效. 目前各大浏览器对于css3的兼容已经非常好了,最新版本都可以支持css3,老版本的ie9以下的还是不支持,不过这不是重点,微软都准备放弃这些老古董了. 现在规范中 ...

  9. 如何找到Linux下常用命令的源码

    Linux系统,常用命令的来源很多,有些命令是shell自带的,比如cd,通过执行help命令,可以查看当前系统所有的内置命令. 用type <cmd_name>来查看一个命令是否为内置命 ...

  10. JavaScript jQuery 入门回顾 2

    JQuery 滑动 利用jQuery可以在元素上创建滑动效果. slideDown() 向下滑动元素. slideUp() 向上滑动元素. slideToggle() 在 slideDown() 与 ...