qingwei_cui 发表于 2016-12-15 19:10:42

GoAhead移植到OpenWRT

本帖最后由 qingwei_cui 于 2016-12-15 21:46 编辑

12年做智能家居网关时,将GoAhead移植到at91sam9x5。-> goAhead2.5嵌入式web服务器移植 今天往一块板子上折腾OpenWRT时,顺便将GoAhead移植到OpenWRT系统上,运作正常!突然发现好久没发帖了{:sweat:}

1.make menuconfig

2.ipk

3.run

4.goahead运行效果

4058665 发表于 2016-12-15 21:30:16

搜了下 真是好东西最近也正为选择合适嵌入式的webserver发愁
楼主git用的也很牛

qingwei_cui 发表于 2016-12-15 21:43:35

本帖最后由 qingwei_cui 于 2016-12-15 22:38 编辑

4058665 发表于 2016-12-15 21:30
搜了下 真是好东西最近也正为选择合适嵌入式的webserver发愁
楼主git用的也很牛
...

1. 需求分析

需要在设备内部集成WEB管理功能,类似于家用路由器,通过网页浏览器登陆设备,实现对设备进行状态监视、参数设置、固件升级等功能。

硬件条件:设备内部主控制器的嵌入式CPU普遍低端,主频只有几百兆,内存有128M的,也有的只有几百K片上配置,WEB管理功能的集成不能影响设备网络主业务性能,可能无文件系统。

轻量级 WEB Server
首先要找一个合适的轻量级的WEB Server,最好是C/C++实现的,有OS和没有OS都能方便移植。WEB Server不需要太复杂,能支持1种动态语言,提供良好的CGI接口。
设备管理架构 Device Manager Framework
以轻量级的WEB Server为基础,提供一个设备管理框架,可通过代码直接定制目录结构,可直接修改模板增减状态和配置页面。

使用AJAX等技术实现不重新加载页面的情况下,刷新网页局部,实现设备状态“实时”监视功能。

2. 轻量级WEB Server 对比

开源的轻量级WEB Server很多,比如GoAhead、Shttpd、Thttpd、Lighttpd、BOA、mathopd、minihttpd、appweb,但适合于移植到嵌入式平台的并不多。

GoAhead
GoAhead基于C语言的嵌入式WEB Server,由Embedthis公司维护,实现了服务端的嵌入式Javascript、CGI、DHTML,支持文件上传,网上资料比较多,最新V3.6.3源码在这。

GoAhead本身自带Windows、Linux、各种RTOS的移植子目录文件,其他服务器公共模块移植性做的很好,可不使用文件系统而将所有WEB资源文件ROM化,是学习进阶C语言的很好例子。若开发linux平台下的web监控,你可以利用windows下的vs先调试好JS+CSS前端,再去linux平台下解决数据交互层面的问题。

BOA
BOA 服务器是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的、适合于嵌入式系统的单任务的http服务器。
源代码开放、性能高。由于它是一个单任务的Web服务器,只能一次完成用户的请求,而不会fork出新的进程来处理并发的链接请求。但是Boa支持Cgi,能够为Cgi程序fork出一个进程来执行相应的客户请求。

Lighttpd
Lighttpd是一个德国人领导的开源Web服务器软件,具有非常低的内存开销、cpu占用率低、性能好以及丰富的模块等特点,相比GoAhead更专业,支持php,当然更占点资源。Lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI,CGI,Auth,输出压缩(output compress),URL重写,Alias等重要功能。

lighttpd针对web并发请求的特点,采用事件驱动模式架构以提高性能,可以看作是一个轻量级的Apache,消耗内存更少,Apahche的很多功能在lighttpd上都有相应的实现。lighttpd支持FastCGI,利用临时内存文件快速响应HTTP请求;支持COMET,服务器端的主动推送技术;并支持异步IO模式的响应。

uHttpd
uHTTPd是一个OpenWrt/LUCI 开发者从头编写的Web服务器,能满足嵌入式设备在linux平台下的轻量级任务需求,使用select模型进行多请求并发处理。

uHTTPd是OpenWRT上默认的Web服务器,支持CGI,以及静态文件的服务,很多路由器使用OpenWRT架构,顺便使用支持lua的uHTTPd开发管理界面。通过Luci处理CGI请求,实现基于Lua脚本的web开发。

busybox httpd
busybox是嵌入式Linux下的开发“瑞士军刀”,基本上Android手机上都有安装;httpd是busybox的附带工具之一,轻量级,支持CGI。用的人少:(

3. 设备管理架构

Luci
感兴趣的童鞋可以在虚拟机上先安装OpenWrt镜像,体验下Luci的管理界面。

引自->设备产品WEB管理界面实现

http://images.cnblogs.com/cnblogs_com/xmphoenix/201104/201104121053215130.jpg

落叶知秋 发表于 2016-12-15 21:51:02

支持支持支持,没接触过,但是觉得很diao的样子。搜索了一下,算是物联网的小型利器了

4058665 发表于 2016-12-15 22:09:18

板载资源是够的目前主要考虑的开发效率如果接近apache或net开发方式最好了
看了楼主推荐的几个server   
应该会在GoAhead   或   Lighttpd中选了
非常感谢楼主提供的思路看了git   楼主大牛做了很多优秀的设计佩服!

qingwei_cui 发表于 2016-12-15 22:44:40

4058665 发表于 2016-12-15 22:09
板载资源是够的目前主要考虑的开发效率如果接近apache或net开发方式最好了
看了楼主推荐的几个serve ...

boa用得也比较多,过奖了!

xiaoliang8071 发表于 2017-7-11 09:50:18

楼主给了一个比较明确的方向 留个爪印方便回看

fengyunyu 发表于 2017-9-23 16:13:50

LZ大牛,看命令行头晕
页: [1]
查看完整版本: GoAhead移植到OpenWRT