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

news2025/1/17 9:48:03

以下是在国产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 脚本。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2277954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux的常用命令(三)

目录 六、网络通信命令 1.网络通信命令ping 2.网络通信命令ifconfig 七、系统命令 1. 系统命令shutdown 2. 系统命令reboot 八、vi编辑器 六、网络通信命令 1.网络通信命令ping 命令名称&#xff1a;ping 命令所在路径&#xff1a;/usr/sbin/ping 执行权限&#xff…

CryptoMamba:利用状态空间模型实现精确的比特币价格预测

“CryptoMamba: Leveraging State Space Models for Accurate Bitcoin Price Prediction” 论文地址&#xff1a;https://arxiv.org/pdf/2501.01010 Github地址&#xff1a;https://github.com/MShahabSepehri/CryptoMamba 摘要 预测比特币价格由于市场的高波动性和复杂的非线…

【图表示例】元素-边-01

G6A Graph Visualization Framework in JavaScripthttps://g6.antv.antgroup.com/zh/examples/element/edge/#line 项目的创建参考 G6 详细教程&#xff0c;注意&#xff0c;node版本需要&#xff1a;required: { node: >18 }G6A Graph Visualization Framework in JavaScri…

永磁同步电机参数辨识算法--变增益MRAS方法在线辨识转动惯量

一、原理介绍 现有的转动惯量辨识方案可归纳为两类:离线转动惯量辨识方案和在线转动惯量辨识方案。离线转动惯量辨识方案是在系统控制程序运行前通过直接测试法、加减速法和人工轨迹法等对惯量进行辨识&#xff0c;将测得的参数提供给控制程序使用。离线式辨识方法需要对大量的…

《研发管理 APQP 软件系统》——汽车电子行业的应用收益分析

全星研发管理 APQP 软件系统在汽车电子行业的应用收益分析 在汽车电子行业&#xff0c;技术革新迅猛&#xff0c;市场竞争激烈。《全星研发管理 APQP 软件系统》的应用&#xff0c;为企业带来了革命性的变化&#xff0c;诸多收益使其成为行业发展的关键驱动力。 《全星研发管理…

1月13日学习

[HITCON 2017]SSRFme 直接给了源代码&#xff0c;题目名称还是ssrf&#xff0c;那么该题大概率就是SSRF的漏洞&#xff0c;进行代码审计。 <?php// 检查是否存在 HTTP_X_FORWARDED_FOR 头&#xff0c;如果存在&#xff0c;则将其拆分为数组&#xff0c;并将第一个 IP 地址…

No.32 笔记 | 业务逻辑漏洞全解析:概念、成因与挖掘思路

业务逻辑漏洞全解析&#xff1a;概念、成因与挖掘思路 核心速览 本文将围绕 业务逻辑漏洞 展开详细探讨&#xff0c;包括 成因、常见类型、重要性 及 具体挖掘方法。业务逻辑漏洞是一种与系统核心功能逻辑深度绑定的漏洞&#xff0c;需结合 代码审计 和 手动测试 进行发现和分…

EF Core实体跟踪

快照更改跟踪 实体类没有实现属性值改变的通知机制&#xff0c;EF Core是如何检测到变化的呢&#xff1f; 快照更改跟踪&#xff1a;首次跟踪一个实体的时候&#xff0c;EF Core 会创建这个实体的快照。执行SaveChanges()等方法时&#xff0c;EF Core将会把存储的快照中的值与…

2023-2024 学年 广东省职业院校技能大赛(高职组)“信息安全管理与评估”赛题一

2023-2024 学年 广东省职业院校技能大赛(高职组“信息安全管理与评估”赛题一&#xff09; 模块一:网络平台搭建与设备安全防护第一阶段任务书任务 1&#xff1a;网络平台搭建任务 2&#xff1a;网络安全设备配置与防护DCRS:DCFW:DCWS:DCBC:WAF: 模块二&#xff1a;网络安全事件…

得物App利用技术赋能,打造潮流消费“新玩法”

如今&#xff0c;技术的力量正在以前所未有的方式重塑着我们的消费体验。从线上购物到虚拟现实&#xff0c;技术的角色越来越重要&#xff0c;它不仅是推动商业发展的引擎&#xff0c;更是满足年轻消费者多元化、个性化需求的关键。得物App作为一个年轻人喜爱的潮流消费平台&am…

语义检索效果差?深度学习rerank VS 统计rerank选哪个

前段时间我开发了一个用白话文搜索语义相近的古诗词的应用&#xff08;详见&#xff1a;《朋友圈装腔指南&#xff1a;如何用向量数据库把大白话变成古诗词》&#xff09;&#xff0c;但是有时候搜索结果却不让人满意&#xff0c;排名靠前的结果和查询的语义没啥关系&#xff0…

数仓建模(三)建模三步走:需求分析、模型设计与数据加载

本文包含&#xff1a; 数据仓库的背景与重要性数据仓库建模的核心目标本文结构概览&#xff1a;需求分析、模型设计与数据加载 目录 第一部分&#xff1a;需求分析 1.1 需求分析的定义与目标 1.2 需求分析的步骤 1.2.1 业务需求收集 1.2.2 技术需求分析 1.2.3 成果输出…

【机器学习】制造业转型:机器学习如何推动工业 4.0 的深度发展

我的个人主页 我的领域&#xff1a;人工智能篇&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;&#x1f44d;点赞 收藏❤ 引言 在当今科技飞速发展的时代&#xff0c;制造业正经历着前所未有的变革&#xff0c;工业4.0的浪潮席卷而来。工业4.0旨在通过将…

MPLS原理及配置

赶时间可以只看实验部分 由来&#xff1a;90年代中期&#xff0c;互联网流量的快速增长。传统IP报文依赖路由器查询路由表转发&#xff0c;但由于硬件技术存在限制导致转发性能低&#xff0c;查表转发成为了网络数据转发的瓶颈。 因此&#xff0c;旨在提高路由器转发速度的MPL…

小程序如何引入腾讯位置服务

小程序如何引入腾讯位置服务 1.添加服务 登录 微信公众平台 注意&#xff1a;小程序要企业版的 第三方服务 -> 服务 -> 开发者资源 -> 开通腾讯位置服务 在设置 -> 第三方设置 中可以看到开通的服务&#xff0c;如果没有就在插件管理中添加插件 2.腾讯位置服务…

【spring mvc】文件上传、下载

文件上传&#xff0c;存储至本地目录中 一、代码1、工具类&#xff08;敏感后缀过滤&#xff09;2、文件上传&#xff0c;存储至本地3、文件下载 二、效果演示1、上传1.1、postMan 请求1.2、上传效果 2、下载2.1、下载效果 一、代码 1、工具类&#xff08;敏感后缀过滤&#x…

C语言预处理艺术:编译前的魔法之旅

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文一、预处理的作用与流程&#xf…

智汇云舟参编《城市轨道交通安全防范系统技术要求》国标正式发布

近日&#xff0c;根据国家标准化管理委员会官网&#xff0c;全国标准信息公共服务平台发布的公告&#xff0c;国家标准《城市轨道交通安全防范系统技术要求》&#xff08;GB/T 26718-2024&#xff09;已由全国城市轨道交通标准化技术委员会上报国家标准化管理委员会&#xff0c…

Linux(Centos7)安装Mysql/Redis/MinIO

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

Python从0到100(八十三):神经网络-使用残差网络RESNET识别手写数字

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能…