费了2天的功夫,翻阅了无数的中文、英文资料,终于搞定。写下此文留待以后翻阅用
本文环境,centOS 5.4 ,Nignx-0.8.49, Python 2.6.5
=====================================================================================
WSGI是Python应用程序或框架和Web服务器之间的一种接口,已经被广泛接受, 它已基本达成它了可移植性方面的目标。
WSGI 没有官方的实现, 因为WSGI更像一个协议. 只要遵照这些协议,WSGI应用(Application)都可以在任何实现(Server)上运行, 反之亦然。
对于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的管理工具) ,
===============================================================================================
下载安装好上面说的软件。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的第二步
- 在 CentOS 7上安装并配置 Python 3.6 环境
前言 按照此方法安装保证以下报错什么的统统都没有! 基础环境 系统:centos7.4 软件:python3 Retrying (Retry(total=0, connect=None, read=N ...
- 4.8 Sublime Text3 中配置 Python环境 --之下Sublime配置Python环境
返回总目录 目录: 1.没有配置之前 2.安装Package Control插件 3.安装其他库: 4.配置其他操作: (一)没有配置之前: 我们试着运行以下,会效果怎么样? 1.首先选择Python ...
- Visual Studio Code配置Python环境
安装环境python环境变量,这个就不写了,这类文章一抓一大把,这类就省略了······· 在Visal Studil Code中配置python环境,其实跟我的上一篇文章一样,如图: 这里有两个选择 ...
- Anaconda 配置 Python 环境
原文地址:Anaconda 配置 Python 环境 0x00 环境 Anaconda: 2019.03 Python: 3.6.8 0x01 Linux 安装 Anaconda 交互安装 Anaco ...
- Win10安装VSCode并配置Python环境 完整版超详细简单【原创】
我们分为三个步骤进行: 一.下载VSCode 二.配置Python环境 三.测试Python 一.下载VSCode 1.打开国内镜像vscode下载地址,即可自动下载:https://vscode.c ...
- 4.7 Sublime Text3 中配置 Python环境 --之上安装Sublime 3
返回总目录 目录: 1.展示效果: 2.缺优分析: 3.下载Sublime Text3 (一)展示效果: 1.能够交互式编写Python代码: 2.可以编写文件式Python代码: 3.能够自动补齐代 ...
- linux下配置python环境 django创建helloworld项目
linux下配置python环境 1.linux下安装python3 a. 准备编译环境(环境如果不对的话,可能遇到各种问题,比如wget无法下载https链接的文件) yum groupinstal ...
- VS Code设置中文和配置Python环境
前言: Visual Studio Code(以下简称VSCode)是一个轻量且强大的代码编辑器,支持Windows,OS X和Linux.内置JavaScript.TypeScript和Node.j ...
- 配置Python环境变量
虽然是老问题了,现在安装都自动配置环境变量. 这里,我是在VS2017中安装的Python3.6,但是没有自动配置好环境变量. 配置Python环境变量 打开[此电脑]—[属性]—[高级系统设置]—[ ...
随机推荐
- 制作BibTex文件
上一篇日志中讲到了在LaTeX中使用BibTex管理参考文献,这篇日志具体总结下如何制作BibTex文件. 制作BibTex文件,主要有以下几种方法: 手工制作: 直接从期刊数据库中下载: 借助Goo ...
- iOS开发——model类模板(过滤null和ID)
说明:model类模板已默认过滤null值,附加特殊情况的关键字ID名的冲突(需手动去掉注释代码).MyMessageModel为示例的名字.可以自己随便起. 1.自己创建一个继承与N ...
- 值类型与引用类型(特殊的string) Typeof和GetType() 静态和非静态使用 参数传递 相关知识
学习大神博客链接: http://www.cnblogs.com/zhili/category/421637.html 一 值类型与引用类型 需要注意的string 是特殊类型的引用类型. 使用方法: ...
- Js 对象三
一.screen对象 Width:屏幕的宽度 Height:屏幕的高度 availWidth:屏幕的有效宽度 availhHeight:屏幕的有效高度 (不包含任务栏) colorDepth:色深 二 ...
- Illegal pattern character 'i' 解决问题
java.lang.IllegalArgumentException: Illegal pattern character 'i' at java.text.SimpleDateFormat.comp ...
- java synchronized关键字
引用其他人的一段话 Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchro ...
- UVALive 3027(并查集)
题意:某公司的各企业群要建立联系,I i j 表示企业i与企业j建立联系,并且以企业j为中心(并查集中的父亲)(企业j为暂时的中心企业),E i 表示查询企业 i 距离此时的中心企业的距离.各企业间的 ...
- 《java编程思想》--多线程基础--Runnable
一.简单说下Runnable是什么 1.它是一个接口 2.只提供了run方法 3.这个接口提供了一个协议:实现这个接口的类是active的(不必成为Thread的子类) 4.run方法没有返回值 /* ...
- ubuntu10.4 server 配置VPN 安装pptp无法连接外网解决(转)
链接:http://www.ppkj.net/2011/04/30/ubuntu10-4-server-%E5%AE%89%E8%A3%85pptp%E6%97%A0%E6%B3%95%E8%BF%9 ...
- SQL Server 2008 R2密钥序列号
SQL Server 2008 R2密钥序列号 序列号: 开发版(Developer): PTTFM-X467G-P7RH2-3Q6CG-4DMYB 企业版(Enterprise): JD8Y6-HQ ...