Lighttpd学习笔记——架构

一、    前言

简介:Lighttpd是一个轻量级的Web 服务器,支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。它具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。其静态文件的响应能力远高于Apache,可谓Web服务器的后期之秀。

功能:接收、响应用户请求,网元间消息通信,资源传递等。

我将lighttpd理解为一个平台,提供了一整套开发流程以及各种高效的工具。使得我们在服务器功能开发时就像使用VC在现有工程中添加模块一样简单:

VC

Lighttpd

打开已有工程并添加新模块的源文件

添加空的插件,自定义插件名,将其加入到makefile中

编码,调用各种库函数完成对字符串、数组等数据的处理。

编码,调用各种库函数(array、buffer、 chunk等等)完成对字符串、数组等数据的处理。

编译、连接(点图标或按快捷键)

编译、连接(执行makefile或封装好的脚本)

运行、调试

运行、调试

Lighttpd架构的设计初衷,所有具体的业务功能都应由插件实现。插件之间通常是完全独立(无内联)的,我们可以根据需要选择性的加载所需插件。

因此我们在开发时主要也是针对业务插件的编写和修改以完成我们所需的功能。

二、    架构

1.     状态机

谈到架构就必须从状态机说起,Lighttpd启动时完成了Server实例初始化、默认配置读取(lighttpd.conf)、插件加载等初始化操作,之后就进入了一个包含11个状态的有限状态机中。每个连接(事件)都是一个connection实例(con)。状态的切换完全取决于con->state。

※     我们在插件中对事件的处理就是针对这个con实例;lighttpd经过初步处理后将con的基本信息初始化;插件拿到con后按照业务需要进行相应处理,然后再交还给lighttpd;lighttpd根据con中的信息完成响应。至此一次请求(事件)结束。

typedef enum {

       CON_STATE_CONNECT,

       CON_STATE_REQUEST_START,

       CON_STATE_READ,

       CON_STATE_REQUEST_END,

       CON_STATE_READ_POST,

       CON_STATE_HANDLE_REQUEST,

       CON_STATE_RESPONSE_START,

       CON_STATE_WRITE,

       CON_STATE_RESPONSE_END,

       CON_STATE_ERROR,

       CON_STATE_CLOSE

} connection_state_t;

 

Lighttpd状态转换图

2.     插件

我们编写的插件会注册15(或其中的几个)回调接口(1.4.20)。lighttpd在初始化阶段、状态机执行阶段、退出阶段会分别调用这些回调函数,完成插件的实例化,初始化,连接重置,事件处理,插件释放等功能。它们分别是:

名称

handle_uri_raw

handle_uri_clean

handle_subrequest_start

handle_subrequest

handle_request_done

handle_docroot

handle_physical

handle_connection_close

handle_joblist

connection_reset

handle_trigger

handle_sighup

init

set_defaults

cleanup

上述每个接口在调用时大多传入了参数(server *srv,connection *con),有一部分接口是不针对事件本身的,例如插件初始化接口init,因此只传入了(server*srv)。
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以帮你提供一些关于 lighttpd 的教程。lighttpd 是一个轻量级、快速的 Web 服务器,适用于处理高并发的静态和动态内容。以下是一个简单的 lighttpd 教程,帮助你入门: 1. 安装 lighttpd: - 在 Ubuntu 上,可以使用以下命令进行安装:`sudo apt-get install lighttpd` - 在 CentOS 上,可以使用以下命令进行安装:`sudo yum install lighttpd` 2. 配置 lighttpd: - 主要的配置文件是 `/etc/lighttpd/lighttpd.conf`,你可以使用编辑器打开该文件。 - 配置文件中的一些重要选项包括服务器端口、文档根目录、访问日志等。 - 你可以根据自己的需求进行配置,确保服务器能够工作正常。 3. 启动 lighttpd: - 在 Ubuntu 上,可以使用以下命令启动 lighttpd:`sudo service lighttpd start` - 在 CentOS 上,可以使用以下命令启动 lighttpd:`sudo systemctl start lighttpd` 4. 创建网站: - 默认情况下,lighttpd 的文档根目录位于 `/var/www/html`。 - 在该目录下创建一个简单的 HTML 文件,作为你的网站首页。 5. 测试网站: - 打开你的浏览器,输入服务器的 IP 地址或域名。 - 如果一切正常,你应该能够看到你创建的网站首页。 这只是一个简单的入门教程,帮助你开始使用 lighttpd。你可以进一步学习 lighttpd 的高级功能,例如虚拟主机配置、SSL/TLS 支持等。希望对你有所帮助!如果有任何问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值