当前位置: 首页 > news >正文

物联网网关Web服务器--lighttpd服务器部署与应用测试

以下是在国产ARM处理器E2000飞腾派开发板上部署 lighttpd 并进行 CGI 应用开发的步骤:

1、lighttpd简介

Lighttpd 是一款轻量级的开源 Web 服务器软件,具有以下特点和功能:

特点

  • 轻量级:Lighttpd 在设计上注重轻量级和高效性,对系统资源的占用较少,能够在低配置的嵌入式设备或服务器上稳定运行。

  • 高性能:它采用了事件驱动的异步 I/O 模型,能够高效地处理大量并发请求,具有较高的性能和响应速度。

  • 安全性高:Lighttpd 注重安全,具有一些内置的安全特性,如支持 SSL/TLS 加密、防止常见的网络攻击等。

  • 灵活可定制:用户可以根据自己的需求对 Lighttpd 进行灵活配置,支持多种插件和模块,可扩展性强。

功能

  • 静态资源服务:能够快速地处理和发送静态网页、图片、CSS、JavaScript 等静态资源,提高网站的访问速度。

  • 动态内容支持:通过 FastCGI 等接口,Lighttpd 可以与各种动态脚本语言(如 PHP、Python 等)集成,支持动态网页的生成和处理。

  • 虚拟主机支持:可以在同一台服务器上配置多个虚拟主机,每个虚拟主机可以有独立的域名、文档根目录和配置选项,方便管理多个网站。

  • CGI 支持:支持通用网关接口(CGI),允许服务器与外部程序进行交互,实现更复杂的功能。

  • 日志功能:提供详细的日志记录功能,记录访问请求、错误信息等,有助于网站的维护和故障排查。

  • 支持多种协议:除了 HTTP 协议,Lighttpd 还支持 HTTPS、FTP 等协议,满足不同的应用需求。

2、部署 lighttpd

安装 lighttpd

首先,确保开发板上有一个可用的包管理系统(如 apt-get、yum 等),然后使用相应的包管理工具安装 lighttpd:

sudo apt-get install lighttpd  # 对于基于 Debian/Ubuntu 的系统

 

配置 lighttpd

配置文件通常位于 /etc/lighttpd/lighttpd.conf。可以使用文本编辑器(如 vi 或 nano)打开该文件进行配置。

  • 启用 CGI 模块
    找到 server.modules 部分,并确保 mod_cgi 模块已启用,例如:

server.modules = (..."mod_cgi",...
)

配置 CGI 目录
在配置文件中添加或修改 CGI 处理部分,指定 CGI 脚本的目录及处理规则。例如:

$HTTP["url"] =~ "^/cgi-bin/" {cgi.assign = ( ".cgi" => "/usr/bin/env", ".c" => "/usr/bin/env" )
}

这将使 /cgi-bin/ 目录下以 .cgi 结尾的文件由 /usr/bin/env 解释运行。

增加对cgi可执行的支持:

static-file.exclude-extensions = ( ".php", ".pl", ".fcgi",".cgi" )

修改服务器文档根目录
可以根据需要修改服务器的文档根目录,例如:

server.document-root = "/var/www/html"
启动 lighttpd

使用以下命令启动 lighttpd 服务:

sudo service lighttpd start
设置网页文件

在开发板的/var/www/html目录中创建index.html文件,输入以下内容。

<html>
<body>
<h1>Hello E2000-Pi Lighttpd</h1>
</body>
</html>
测试服务器

在浏览器中输入开发板的 IP 地址,例如:

 

 

3、CGI 应用开发

创建 CGI 脚本

/var/www/html/cgi-bin/ 目录下创建一个 CGI 程序 ,例如 hello.c

sudo vim /var/www/html/cgi-bin/hello.c


并输入以下内容:

#include <stdio.h>int main() {printf("Content-Type: text/html\n\n");printf("<html><body>");printf("<h1>Hello from C CGI!</h1>");printf("</body></html>");return 0;
}
  • 编译 C 语言文件为可执行文件:

sudo gcc -o /var/www/html/cgi-bin/hello.cgi /var/www/html/cgi-bin/hello.c

确保脚本具有可执行权限:

sudo chmod +x /var/www/html/cgi-bin/hello.cgi
测试 CGI 应用

在浏览器中输入开发板的 IP 地址及 CGI 脚本的 URL,例如:

http://your_board_ip/cgi-bin/hello.cgi

 

4、高级配置

环境变量设置

在 lighttpd 配置文件中可以设置 CGI 的环境变量,以提供额外的信息给 CGI 脚本:

$HTTP["url"] =~ "^/cgi-bin/" {cgi.assign = ( ".cgi" => "/usr/bin/perl" )cgi.env = ( "MY_ENV_VAR" => "value" )
}
性能优化
  • 启用 FastCGI
    对于性能要求较高的场景,可以将 CGI 替换为 FastCGI,以提高性能。首先,需要安装 mod_fastcgi 模块并启用:

server.modules = (..."mod_fastcgi",...
)

然后,配置 FastCGI 处理,例如:

fastcgi.server = ( ".fcgi" => (("socket" => "/var/run/lighttpd/fastcgi.socket","bin-path" => "/var/www/html/cgi-bin/hello.fcgi","max-procs" => 1
)))

总结

  • 部署 lighttpd

    1. 使用包管理工具安装 lighttpd。

    2. 配置 lighttpd.conf,包括启用 mod_cgi 模块,设置 CGI 目录和规则。

    3. 启动 lighttpd 服务。

  • CGI 应用开发

    1. /var/www/html/cgi-bin/ 目录下创建可执行的 CGI 脚本。

    2. 确保脚本有正确的权限。

    3. 测试 CGI 脚本的执行效果。

通过以上步骤,可以在开发板上部署 lighttpd 并开发 CGI 应用,根据需要还可以进行更深入的配置和优化。

注意事项

  • 确保开发板有足够的资源运行 lighttpd 和 CGI 脚本。

  • 不同开发板可能需要不同的安装和配置步骤,请根据开发板的操作系统和架构进行调整。

  • 在修改配置文件时,确保备份原始文件,以防出错

相关文章:

物联网网关Web服务器--lighttpd服务器部署与应用测试

以下是在国产ARM处理器E2000飞腾派开发板上部署 lighttpd 并进行 CGI 应用开发的步骤&#xff1a; 1、lighttpd简介 Lighttpd 是一款轻量级的开源 Web 服务器软件&#xff0c;具有以下特点和功能&#xff1a; 特点 轻量级&#xff1a;Lighttpd 在设计上注重轻量级和高效性&a…...

vmware虚拟机配置ubuntu 18.04(20.04)静态IP地址

VMware版本 &#xff1a;VMware Workstation 17 Pro ubuntu版本&#xff1a;ubuntu-18.04.4-desktop-amd64 主机环境 win11 1. 修改 VMware虚拟网络编辑器 打开vmware&#xff0c;点击顶部的“编辑"菜单&#xff0c;打开 ”虚拟化网络编辑器“ 。 选择更改设置&#…...

智能家居篇 一、Win10 VM虚拟机安装 Home Assistant 手把手教学

智能家居篇 一、Win10 VM虚拟机安装 Home Assistant 手把手教学 文章目录 [智能家居篇]( )一、Win10 VM虚拟机安装 Home Assistant 手把手教学 前言一.下载Vm版本的HomeAsistant安装包 二.打开Vmware选择新建虚拟机1.选择自定义高级2.选择16.x及以上3.选择稍后安装4.根据官网的…...

Flutter插件制作、本地/远程依赖及缓存机制深入剖析(原创-附源码)

Flutter插件在开发Flutter项目的过程中扮演着重要的角色&#xff0c;我们从 ​​​​​​https://pub.dev 上下载添加到项目中的第三方库都是以包或者插件的形式引入到代码中的&#xff0c;这些第三方工具极大的提高了开发效率。 深入的了解插件的制作、发布、工作原理和缓存机…...

Python猜数小游戏

Python 实现的《猜数游戏》 介绍 本文将展示如何使用 Python 编写一个简单的《猜数游戏》。这个游戏将会生成一个1到10之间的随机数&#xff0c;用户有最多三次机会来猜测正确的数字。如果用户猜对了&#xff0c;游戏将结束并显示恭喜信息&#xff1b;如果没有猜对&#xff0…...

--- 用java实现一个计时器 ---

这里的计时器值得是当线程设定的时间过了之后&#xff0c;自动执行该线程的工作 设计 MyTimer 既然是要在指定的时间之后执行任务&#xff0c;那么传入的参数就应该有run方法&#xff08;需要执行的任务&#xff09;&#xff0c;time&#xff08;在多少时间之后执行&#xff…...

OPI4A,目标检测,口罩检测,mnn,YoloX

记得之前&#xff0c;使用了bubbling导师复现的python版yolox&#xff0c;训练了自建的口罩数据集&#xff0c;得到了h5文件&#xff0c;又转换成pb文件&#xff0c;再使用阿里巴巴的MNN&#xff0c;使用它的MNNConvert&#xff0c;转换成mnn文件 最终实现了&#xff0c;在树莓…...

C#与Vue2上传下载Excel文件

1、上传文件流程&#xff1a;先上传文件&#xff0c;上传成功&#xff0c;返回文件名与url&#xff0c;然后再次发起请求保存文件名和url到数据库 前端Vue2代码&#xff1a; 使用element的el-upload组件&#xff0c;action值为后端接收文件接口&#xff0c;headers携带session信…...

Linux(Centos7)安装Mysql/Redis/MinIO

安装Mysql 安装Redis 搜索Redis最先版本所在的在线安装yum库 查看以上两个组件是否是开机自启 安装MinIO 开源的对象存储服务&#xff0c;存储非结构化数据&#xff0c;兼容亚马逊S3协议。 minio --help #查询命令帮助minio --server --help #查询--server帮助minio serve…...

港科夜闻 | 香港科大与微软亚洲研究院签署战略合作备忘录,推动医学健康教育及科研协作...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大与微软亚洲研究院签署战略合作备忘录&#xff0c;推动医学健康教育及科研协作。根据备忘录&#xff0c;双方将结合各自于科研领域的优势&#xff0c;携手推动医学健康领域的交流与合作。合作方向将涵盖人才培训、…...

森林网络部署,工业4G路由器实现林区组网远程监控

在广袤无垠的林区&#xff0c;每一片树叶的摇曳、每一丝空气的流动&#xff0c;都关乎着生态的平衡与安宁。林区监控正以强大的力量&#xff0c;为这片绿色家园筑起一道坚固的防线。 工业 4G 路由器作为林区监控组网的守护者&#xff0c;凭借着卓越的通讯性能&#xff0c;突破…...

ASP.NET Core - 配置系统之自定义配置提供程序

ASP.NET Core - 配置系统之自定义配置提供程序 4. 自定义配置提供程序IConfigurationSourceIConfigurationProvider 4. 自定义配置提供程序 在 .NET Core 配置系统中封装一个配置提供程序关键在于提供相应的 IconfigurationSource 实现和 IConfigurationProvider 接口实现&…...

npm、yarn、pnpm包安装器差异性对比

特性npmyarnpnpm发布年份2010 年发布2016 年发布2017 年发布安装速度较慢&#xff08;旧版本&#xff09;&#xff0c;但自 npm 5 后有所改善较快&#xff0c;尤其是在缓存方面极快&#xff0c;使用硬链接和全局缓存来提高速度包管理模式扁平化依赖&#xff0c;可能会发生重复依…...

正点原子repo放到自己的git服务器

atk-rk3568_android11 导出project-objects对应仓库 .repo/repo/repo list -n > project-object.txt将project-object.txt格式化&#xff0c;并通过gitolite.conf创建对应仓库 atk-rk3568_android11_repo atk-rk3568_android11/RKTools atk-rk3568_android11_repo atk-…...

[MySQL | 二、基本数据类型]

基本数据类型 一、数值类型举例表结构1. 整数类型zerofill属性 与 int(n) 中 n 的关系 2.bit类型3. 小数类型float类型decimal类型 二、字符串类型1. char2. varchar如何选择定长或变长字符串&#xff1f; 3. 日期时间类型(date datetime timestamp)4. enum枚举类型5. set多选类…...

工作记录小点

postman问题 postman 返回404 可以先看看这个模块是否集成到pom文件中 postman 返回200不调debug 请求参数Json有错误请求方式不对Get/Post debug报错连接失败 host文件没copy同事的 2.对应组件的不同服务白名单没添加导致的 host文件刷新 进入 C:\windows\system32\drivers\e…...

在PyCharm中使用Anaconda中的虚拟环境

1、在File菜单中找到Settings 2、Settings中搜索interpreter&#xff0c;找到Python Interpreter&#xff0c;再点击Add 3、选择第一个local interpreter 4、如图&#xff1a; 5、找到anaconda安装位置中的envs文件夹&#xff0c;在里面选择需要添加的python环境&#xff0c;如…...

ansible基础

ansible 1.概述 ansible是基于python语言开发&#xff0c;配置管理和部署应用的工具。批量的配置&#xff0c;部署&#xff0c;管理“上千台”主机 &#xff08;实际一次100台左右&#xff09;&#xff0c;ansible只要在一台主机上就可以对其他主机进行操作。 &#xff08;1&…...

人工智能之深度学习_[2]-PyTorch入门

PyTorch 1.PyTorch简介 1.1 什么是PyTorch PyTorch是一个基于Python的科学计算包 PyTorch安装 pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simplePyTorch一个基于Python语言的深度学习框架&#xff0c;它将数据封装成张量&#xff08;Tensor&#xff09;来进行…...

基于Java的语音陪聊软件——支持聊天私聊-礼物系统-直播系统-缘分匹配-游戏陪玩

丰富的经验、成熟的技术&#xff0c;打造适合当下市场发展的语音交友软件源码。Java 语言凭借其独特的优势&#xff0c;为这款语音陪聊软件的稳健运行和持续发展奠定了坚实基础。它不仅融合了聊天私聊、礼物系统和直播系统等实用且有趣的功能&#xff0c;还创新性地引入了缘分匹…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...