搞清Lighttpd、webserver、CGI、fastCGI这几个概念

一、webserver:

网页浏览也是网络通信,浏览器相当于TCPclient客户端程序,和浏览器相对应的是机房里运行的网站服务器,里面运行着TCPserver服务端程序,因为网页传输使用的是HTTP协议(加密的是HTTPS协议),所以这个TCPserver程序必须按照HTTP协议(也就是按照HTTP协议来组包)来开发,因为这种程序专用于网站,所以叫webserver/httpserver。技术高超的公司可以自己开发,已经有很成熟的开源webserver。在UNⅨ和LINUX平台下使用最广泛的免费HTTP服务器Apache和Nginx服务器,而Windows平台NT/2000/2003使用ⅡS的WEB服务器。

在嵌入式中常见的轻量级的服务器有:Lighttpd、 Shttpd,、Thttpd、Boa、Mini_httpd、Appweb、Goahead。

二、Lighttpd

LigHttpd是一个开源的轻量级嵌入式Web server,是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。

lighttpd是Lighty HTTP Server的缩写,是一个开源的Web服务器,,lighttpd (http://lighttpd.net/)和apache一样是开源的,与apache相比,虽然功能不及apache完善,稳定性也不如 apache,但是,不管是服务静态页面,还是服务动态内容(CGI,PHP),它都比apache快。

安装配置如下:

https://groups.google.com/g/netkiller/c/IF050Z78AlIicon-default.png?t=N7T8https://groups.google.com/g/netkiller/c/IF050Z78AlI

三、CGI(协议)

http://www.graphcomp.com/info/specs/cgi11.html

(Common Gateway Interface) 代表“通用网关接口”。  它是一个标准协议,定义 Web 服务器如何与外部应用程序或脚本交互以处理 HTTP 请求并生成动态 Web 内容。  在 PHP、Python 和 Ruby 等服务器端脚本语言出现之前,CGI 是最早用于动态网页生成的方法之一
当客户端(通常是 Web 浏览器)向 Web 服务器发送 HTTP 请求时,服务器会处理该请求,并且在静态内容(如 HTML 和图像)的情况下,直接提供所请求的文件。  然而,当请求的内容是动态的并且需要即时生成时,服务器可以使用CGI与外部程序通信来进行处理。
以下是 CGI 工作原理的基本概述:

  1. 1. 客户端向 Web 服务器发送 HTTP 请求。

  2. 2. Web服务器接收请求并识别出请求的内容需要动态处理。

  3. 3. Web 服务器将请求连同请求中的必要环境变量和数据(例如,查询参数、表单数据等)一起传递给 CGI 程序或脚本。

  4. 4. CGI 程序处理请求并生成动态内容,通常采用 HTML 形式。

  5. 5. CGI程序将生成的内容发送回Web服务器。

  6. 6. Web 服务器将 HTTP 响应中的动态内容返回给客户端,客户端将其呈现在 Web 浏览器中。

CGI 程序可以用各种编程语言编写,例如 Perl、Python、Ruby、C、C++ 等。它们作为与 Web 服务器分开的进程执行,这意味着对 CGI 程序的每个请求都会产生启动新进程的开销
虽然 CGI 在当时具有革命性意义并支持动态 Web 内容,但它也有一定的局限性,包括性能开销和可扩展性问题。  因此,现代 Web 开发已在很大程度上摆脱了 CGI,转而采用更高效、可扩展的服务器端脚本技术,例如 PHP、Node.js 和各种应用程序框架。
如今,CGI 主要用于需要与遗留系统或专用环境兼容的特定情况。  对于通用 Web 开发,首选更高效的替代方案。

https://ycchen.im.ncnu.edu.tw/cgi/

四、fastCGI(协议)

FastCGI 是通用网关接口 (CGI) 的变体,它解决了传统 CGI 的性能和可扩展性限制。  它是一种协议,允许 Web 服务器与外部应用程序进程高效通信,从而为 Web 应用程序生成动态内容。
使用传统的 CGI,每个请求都会生成一个新进程,从而导致显着的性能开销。  FastCGI 通过引入持久应用程序进程池对此进行了改进,即使在处理请求后该进程池仍保持活动状态。  该进程池无需为每个传入请求启动新进程,从而减少了开销并提供更好的性能和资源利用率。
FastCGI 的工作原理如下:

  1. 1. 客户端向 Web 服务器发送 HTTP 请求。

  2. 2. Web 服务器通过套接字或 TCP/IP 连接将请求以及必要的环境变量和请求数据传递给 FastCGI 应用程序。

  3. 3. FastCGI 应用程序处理请求并生成动态内容(例如,HTML、JSON 等)。

  4. 4. FastCGI 进程并没有终止应用程序进程,而是保持活动状态并等待下一个请求。

  5. 5. Web 服务器接收来自 FastCGI 应用程序的响应,并在 HTTP 响应中将其发送回客户端。

FastCGI 与传统 CGI 相比具有以下几个优点:

  1. 1. 减少开销:通过重用应用程序进程,FastCGI 消除了为每个请求创建和终止进程的开销。

  2. 2. 改进的性能:持久进程池可以加快后续请求的响应时间,因为应用程序不需要为每个新请求重新加载。

  3. 3. 资源效率:与为每个请求生成新进程相比,持久进程池消耗的资源更少。

  4. 4. 可扩展性:FastCGI允许Web服务器处理更高数量的并发请求,提高Web应用程序的可扩展性。

FastCGI 广泛用于 Web 服务器配置中,以有效处理动态内容生成。  Nginx 和 Apache 等流行的 Web 服务器支持 FastCGI,使其成为托管用 PHP、Python、Ruby 等语言编写的动态 Web 应用程序的标准选择。
总而言之,FastCGI 是 CGI 的扩展,通过采用持久的应用程序进程池来处理传入请求,显着提高了 Web 应用程序的性能和资源利用率。

参考文章:CGI、FastCGI和PHP-FPM关系图解 - 歪麦博客

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
lighttpd 是一个轻量级的 Web 服务器,它支持 CGI(公共网关接口)来实现动态内容的处理。CGI 是一种通用的协议,它允许 Web 服务器与外部程序(通常是用脚本语言编写的)进行交互,以生成动态的网页内容。 在 lighttpd 中启用 CGI 支持,你需要进行以下配置步骤: 1. 确保你已经安装了 lighttpd,并且已经启动了服务器。 2. 编辑 lighttpd 的配置文件,通常位于 /etc/lighttpd/lighttpd.conf。 3. 在配置文件中找到 server.modules 部分,并确保 mod_cgi 模块已经被加载。如果没有加载,你可以将类似以下的行添加到配置文件中: ``` server.modules += ("mod_cgi") ``` 4. 找到 server.document-root 部分,并设置网页文件的根目录。例如: ``` server.document-root = "/var/www/html" ``` 5. 找到 server.indexfiles 部分,并确保包含了适当的索引文件(例如 index.html 或 index.php)。 6. 找到 cgi.assign 部分,并添加以下行来指定 CGI 脚本的文件扩展名和解释器路径。例如: ``` cgi.assign = ( ".cgi" => "/usr/bin/perl", ".pl" => "/usr/bin/perl", ".php" => "/usr/bin/php-cgi" ) ``` 这个例子中,.cgi、.pl 和 .php 扩展名的脚本将分别由 Perl 和 PHP 解释器处理。 7. 保存并关闭配置文件。 8. 重新启动 lighttpd 服务器以使配置生效。 现在,你可以将你的 CGI 脚本放置在指定的网页根目录下,并通过浏览器访问它们。确保你的脚本有可执行权限,并且文件扩展名与配置文件中指定的一致。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值