web服务选择lighttpd,采用fcgi组件技术扩展处理业务层

目录

一、简介fcgi:web和web服务器间数据传输的桥梁... 2

二、源码编译配置ARM Lighttpd Fastcgi C.. 3

【1】交叉编译。源文件都从官网下载。 Fcgi lighttpd  zlib. 3

【2】配置服务器server.document-root="/www" fastcgi.server "bin-path" => "/www/fastcgi.fcgi", 4

【3】fastcgi编程程序  将生成的文件拷贝到设备/www目录中... 4

【4】启动服务器... 6

【5】测试... 6

三、fastcgi编程实例... 7

多线程请求例子... 7

四、fcgiapp各个数据结构和函数含义... 9

FCGX_Stream该struct定义了FastCGI流的状态。... 9

FCGX_Request对一个请求的封装。可供访问的属性:... 9

int FCGX_Init()  Initialize the FCGX library. 10

int FCGX_InitRequest(FCGX_Request *request, int sock, int flags). 10

int FCGX_Accept_r(FCGX_Request *request) 接受一个新的请求(多线程安全)。... 10

int FCGX_PutChar(int c, FCGX_Stream *stream)  将字符c写入stream。... 10

int FCGX_PutStr(const char *str, int n, FCGX_Stream *stream)  用于二进制输出。... 11

int FCGX_PutS(const char *str, FCGX_Stream *stream)  用于输出字符串。... 11

int FCGX_FPrintF(FCGX_Stream *stream, const char *format, ...) 将格式化字符串format写入stream。     11

int FCGX_GetChar(FCGX_Stream *stream) 从输入读取一个字节。... 11

int FCGX_UnGetChar(int c, FCGX_Stream *stream) 将字符c推回输入流stream。... 11

int FCGX_GetStr(char *str, int n, FCGX_Stream *stream) 从stream中读取n个连续字节到str中。     12

char *FCGX_GetLine(char *str, int n, FCGX_Stream *stream) 从stream中读取n-1个连续字节到str中。     12

int FCGX_HasSeenEOF(FCGX_Stream *stream) 在读取stream时,如果检测到EOF,那么返回EOF,否则返回0。     12

五、Lighttpd 网页服务源码分析说明post数据lighttpd主程序不处理,而是交给动态执行模块fastcgi等来解析。     12

六、参考... 15

lighttpd fastcgi的搭建... 15

fastcgi 分布式... 15

fcgiapp各个数据结构和函数含义... 15

FastCGI编程介绍... 15

在FastCGI应用程序中无法获取HTTP POST的主体... 16

 

 

一、简介fcgi:web和web服务器间数据传输的桥梁


FastCGI就像CGI一样,FastCGI也是独立于编程语言的。

是web和web服务器间数据传输的桥梁。

就像CGI一样,FastCGI程序运行在完全独立于核心Web Server之外的进程中,

Fastcgi的缺点:

1、对某些服务器的新版本支持不好,对分布式负载均衡没要求的模块化安装是否是更好的选择。

2、目前的fastcgi和server沟通还不够智能,一个fastcgi进程如果执行时间过长会被当成是死进程杀掉重起,这样在处理长时间任务的时候很麻烦.这样做也使得fastcgi无法允许联机调试。


lighttpd提供了一种外部程序调用的接口,即FastCGI接口。这是一种独立于平台和服务器的接口,它介于Web应用程序和Web服务器之间。

FastCGI作方式是接受Web服务器的请求,以HTTP Request的方式进行响应,实现了应用程序与Web服务器的分离。它的使用需要在Web服务器中安装支持组件,目前支持ApacheNginxIISLighttpd

https://img-blog.csdn.net/20130606175535640

优点有:

  • 稳定性fastcgi是以独立的进程池运行来cgi单独一个进程死掉,系统可以很轻易的丢弃,然后重新分配新的进程来运行逻辑
  • 安全性,fastcgi和宿主的server完全独立,fastcgi怎么down也不会把server搞垮
  • 性能, fastcgi把动态逻辑的处理从server中分离出来, 大负荷的IO处理还是留给宿主server 这样宿主server可以一心一意作IO,对于一个普通的动态网页来说,,逻辑处理可能只有一小部分,大量的图片等静态IO处理完全不需要逻辑程序的参与
  • 扩展性,fastcgi是一个中立的技术标准,完全可以支持任何语言写的处理程序(phpjavapythonC++)

FastCGI编程包括四部分:初始化编码、接收请求循环、响应内容、响应结束循环。

 

CGI能够使用C语言编写,以通过共享内存等方式与其他C语言进程通讯。对CGI程序的每个HTTP请求,web服务器都会创建一个新的CGI进程,web服务器通过环境变量传递http请求,CGI程序通过标准输出返回处理结果,然后退出。

fastcgi使用循环响应HTTP请求,服务器负载比cgi小,能与其他程序(如数据库)保持持续链接。fastcgi可以使用tcp或UNIX domain与web服务器通讯,并将HTTP请求转换为环境变量传入,TCP方式中使用标准输出返回处理结果,UNIX domain方式则使用fastcgi封装的函数。cgi-fcgi程序能够将cgi程序作为fastcgi程序运行。

lighttpd支持fastcgi,能够启动fastcgi程序,并进行负载均衡。

 

二、源码编译配置ARM Lighttpd Fastcgi C

【1】交叉编译。源文件都从官网下载。 Fcgi lighttpd  zlib</

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值