区分wsgi、uWSGI、uwsgi、php-fpm、CGI、FastCGI的概念

转载 2015年11月17日 19:26:49

举例说 PHP-CGI与PHP-FPM

你(PHP)去和爱斯基摩人(web服务器,如 Apache、Nginx)谈生意

你说中文(PHP代码),他说爱斯基摩语(C代码),互相听不懂,怎么办?那就都把各自说的话转换成英语(FastCGI 协议)吧。

怎么转换呢?你就要使用一个翻译机(PHP-FPM)

(当然对方也有一个翻译机,那个是他自带的)

我们这个翻译机是最新型的,老式的那个(PHP-CGI)被淘汰了。不过它(PHP-FPM)只有年轻人(Linux系统)会用,老头子们(Windows系统)不会摆弄它,只好继续用老式的那个。

wsgi:一种实现python解析的通用接口标准/协议

跟wsgi一样概念的有Ruby语言的Rack,可以认为wsgi是一种通用的接口标准或者接口协议,实现了python web程序与服务器之间交互的通用性。有了这个东西,web.py或者bottle或者django等等的python web开发框架,就可以轻松地部署在不同的web server上了,不需要做任何特殊配置(也需要一些小小的配置调整)

uwsgi:同WSGI一样是一种通信协议

uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型描述,它与WSGI相比是两样东西。

uWSGI :一种python web server或称为Server/Gateway

uwsgi类似tornadoweb或者flup,是一种python web server,uWSGI是实现了uwsgi和WSGI两种协议的Web服务器,负责响应python 的web请求。因为apache也好,nginx也罢,它们自己都没有解析动态语言如php的功能,而是分派给其他模块来做,比如apache就可以说内置了php模块,支持的非常爽,让人感觉好像apache就支持php一样。uwsgi实现了WSGI协议、uwsgi、http等协议。 Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。类似的有:flup

php-fpm:php fastcgi进程管理器

Php-fpm全称是php fastcgi process manager即php fastcgi进程管理器,相比fastcgi静态的唤起cgi,fpm能根据访问的压力动态的唤起cgi进程和销毁以到达动态的调整cgi数量,这样可以有效的使用内存。除此之外还有其它的一些优点,比如,fpm还可以平滑的重载php配置;由于fpm是使用Unix-Socket来和服务器通讯,所以也不用再配置cgi端口;fpm有更好的状态输出和slowlog日志,502的时候能给出更多的错误细节。

CGI

CGI是一个通用的web标准,可以粗陋的认为CGI就是一种用任意语言写Web程序的标准。

FastCGI

FASTCGI是Web服务器(ex:nginx)和语言解释器(ex:uWsgi)两者底层的通信协议的规范,是对CGI的开放的扩展。

Php-FastCGI (用于处理php请求的东东)的工作过程是:

1、Web Server 启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module);

2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程 (在任务管理器中可见多个php-cgi.exe)并等待来自Web Server的连接。

3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi.exe。

4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在 WebServer中)的下一个连接。 在正常的CGI模式中,php-cgi.exe在此便退出了。


uWSGI 服务器的 uwsgi 协议究竟用在何处?

uWSGI 服务器的 uwsgi 协议究竟用在何处? uWSGI 与 python web framework(eg: django) 通信现在基本基于 wsgi 那么uWSGI 的自有协议...
  • linuxheik
  • linuxheik
  • 2016年07月26日 20:14
  • 1426

ngnix+uWSGI实现python CGI编程

Ngnix是一个开源的web服务器。它嫩
  • xlisper
  • xlisper
  • 2014年07月04日 23:50
  • 1275

CGI, FCGI, SCGI, WSGI 释异

WIKI Links: CGI - http://en.wikipedia.org/wiki/Common_Gateway_Interface FCGI - http://en.wikipedia...
  • qiaofeiw
  • qiaofeiw
  • 2013年06月30日 14:32
  • 4668

fcgi,scgi,wsgi,cgi

fcgi,scgi,wsgi,cgi 原创文章,转载请注明来源并保留原文链接 我常常想,web开发的本质是什么?站在最终用户的角度,无非就是用浏览器将网页显示出来。...
  • user_920
  • user_920
  • 2014年04月03日 10:13
  • 835

CGI, FCGI, SCGI, WSGI 释异

http://blog.csdn.net/qiaofeiw/article/details/9207359 WIKI Links: CGI - http://en.wikipedia.org/...
  • hshl1214
  • hshl1214
  • 2015年03月22日 19:50
  • 575

CGI,FastCGI,SCGI,WSGI 差别

CGI = Common Gateway Interface 顾名思义,它是一种接口规范。该规范详细定义了Web服务器中运行的服务器代理程序,怎样获取及返回网页生成过程中,服务器环境上下文和HT...
  • jazywoo123
  • jazywoo123
  • 2014年02月11日 12:59
  • 1104

CGI,FastCGI,WSGI浅析

我们将服务端程序分为了web服务器和应用程序服务器。 web服务器是用于处理HTML文件,让客户可以通过浏览器进行访问。主流的有apache,IIS,nginx,lghttpd等。 应用服...
  • ywy463726588
  • ywy463726588
  • 2015年03月25日 14:31
  • 845

nginx uwsgi wsgi django 这些东西究竟是什么关系

1 首先nginx 是对外的服务接口,外部liu'la
  • u014761344
  • u014761344
  • 2014年10月16日 13:26
  • 7970

uWSGI详解

WSGI是什么? WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语...
  • midion9
  • midion9
  • 2016年05月09日 17:49
  • 4038

十三.支持设置proxy、memcached、fastcgi、scgi、uwsgi在后端失败时的重试次数

Syntax: fastcgi_upstream_tries num Default: - Context: http, server, locatioon 限制fastcgi代理的后端尝试次数...
  • u010889990
  • u010889990
  • 2014年11月25日 09:09
  • 827
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:区分wsgi、uWSGI、uwsgi、php-fpm、CGI、FastCGI的概念
举报原因:
原因补充:

(最多只允许输入30个字)