当前位置: 首页 > 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;还创新性地引入了缘分匹…...

如何用deberta-v3-base-zeroshot-v2.0构建企业级NLP应用?完整教程来了

如何用deberta-v3-base-zeroshot-v2.0构建企业级NLP应用&#xff1f;完整教程来了 【免费下载链接】deberta-v3-base-zeroshot-v2.0 项目地址: https://ai.gitcode.com/hf_mirrors/NingBo_Ascend/deberta-v3-base-zeroshot-v2.0 deberta-v3-base-zeroshot-v2.0是一款基…...

深圳实体门店有必要做GEO AI代运营吗

深圳实体门店有必要做GEO AI代运营吗一、开篇引言2026年深圳本地实体商业竞争进入白热化阶段&#xff0c;全城数百万家线下实体门店涵盖本地生活、家装工装、汽车服务、餐饮娱乐、教育培训等全品类&#xff0c;传统线下地推、门店自然客流、传统团购平台引流效果持续下滑&#…...

DeepSeek系统设计辅助:如何在48小时内完成可审计、可回滚、可压测的AI服务架构图?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek系统设计辅助 DeepSeek系统设计辅助模块面向架构师与后端工程师&#xff0c;提供模型能力调用、接口契约生成、异步任务编排等核心支撑能力。该模块不替代人工设计决策&#xff0c;而是通过结构…...

告别道路预测老套路:用ParkPredict+模型思路,解决停车场里的‘鬼探头’难题

破解泊车场景预测困局&#xff1a;ParkPredict模型的技术革新与实践停车场里的每一次转向、倒车和避让&#xff0c;都是对自动驾驶系统预测能力的极限挑战。与开放道路的规则明确不同&#xff0c;这里没有清晰的车道线指引&#xff0c;没有统一的行驶方向&#xff0c;只有随时可…...

为什么92%的DeepSeek二次开发团队在6个月内遭遇交付延迟?——基于17个真实项目的技术债务归因分析

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;为什么92%的DeepSeek二次开发团队在6个月内遭遇交付延迟&#xff1f;——基于17个真实项目的技术债务归因分析 在对17个采用DeepSeek-R1/VL模型开展定制化开发的工业级项目进行回溯审计后&#xff0c;我…...

我靠这个测试设计方法,把漏测率降低了80%

当“直觉测试”撞上南墙很长一段时间里&#xff0c;我和许多测试同行一样&#xff0c;测试用例的设计主要依靠两样东西&#xff1a;需求文档和“测试直觉”。这种模式在业务逻辑相对简单、迭代速度平缓时还能勉强应付。一旦面对复杂的企业级应用、高频的敏捷迭代&#xff0c;或…...

量子纠错码VarQEC:原理、实现与硬件优化

1. 量子纠错码基础与实验背景量子纠错码&#xff08;Quantum Error Correction Codes, QEC&#xff09;是量子计算中保护量子信息免受噪声影响的核心技术。与经典纠错码不同&#xff0c;量子纠错需要应对量子态特有的退相干和纠缠特性。传统QEC如[[5,1,3]]完美码虽然理论完备&a…...

因果推断与机器学习融合:量化分析社会运动中镇压与抗议的动态关系

1. 项目概述&#xff1a;当数据科学遇见社会运动如果你研究过社会运动&#xff0c;尤其是那些看似突然爆发、席卷全国的抗议浪潮&#xff0c;你可能会被一个核心问题困扰&#xff1a;国家机器的镇压&#xff0c;究竟是浇灭火焰的冷水&#xff0c;还是火上浇油的催化剂&#xff…...

总线式智能提示灯系统设计:从恒流驱动到模块化架构

1. 项目概述&#xff1a;从传统到智能的剧场提示灯系统革新在剧场、演播室或者大型活动现场的后台&#xff0c;如果你待过&#xff0c;一定对那套“红灯停&#xff0c;绿灯行”的提示灯系统不陌生。导演或舞台监督通过对讲机喊“Standby”&#xff08;准备&#xff09;&#xf…...

机器学习与深度学习在社交媒体心理健康检测中的权衡与选择

1. 项目概述&#xff1a;当AI遇见心灵&#xff0c;社交媒体心理健康检测的技术十字路口在社交媒体成为我们数字生活延伸的今天&#xff0c;海量的文本数据无意中记录着用户的情感波动与心理状态。作为一名长期混迹于数据科学和自然语言处理&#xff08;NLP&#xff09;一线的从…...