嵌入式设备使用的web服务器 ——thttpd移植

thttpd服务器与CGI的使用——解决CGI中不能使用system()函数的问题 一、thttpd服务器的下载与安装 1. 下载。thttpd服务器的网站为http://www.acme.com/software/thttpd/,此网站上有thttpd的下载安装方法,即 cd /usr/src/redhat/SOURCES wget http://www.acme.com/software/thttpd/thttpd-2.27.tar.gz rpm -ta thttpd-2 阅读详情

1.官网下载http://www.acme.com/software/thttpd/
 版本thttpd-2.25b.tar.gz

2.解压
 tar -zxvf thttpd-2.25b.tar.gz

3../configure
4.修改makefile
CC = gcc -> CC = arm-none-linux-gnueabi-gcc
总共有3个makefile要改
压缩根目录包1个,cgi-src目录1个,extras目录1个
5.make

 

6.
拷贝thttpd-2.25b/contrib/redhat-rpm/thttpd.conf文件到目标板文件系统/etc目录下

[cpp]  view plain copy
  1. # This section overrides defaults  
  2. dir=/etc/thttpd/html  
  3.   
  4. chroot  
  5. user=root  
  6. logfile=/etc/thttpd/thttpd.log  
  7. pidfile=/etc/thttpd/thttpd.pid  
  8. cgipat=/cgi-bin/*.cgi  
  9. # This section _documents_ defaults in effect  
  10. # port=80  
  11. # nosymlink# default = !chroot  
  12. # novhost  
  13. # nocgipat  
  14. # nothrottles  
  15. # host=0.0.0.0  
  16. # charset=iso-8859-1  

7.
拷贝thttpd到目标板文件系统/bin目录下
8.
目标板文件系统创建/etc/thttpd目录(属性755)
目标板文件系统创建/etc/thttpd/html目录(属性755)
9.
拷贝主页index.html到html目录(属性644)
10.
运行thttpd -D -C /etc/thttpd.conf //加载配置文件
11.
浏览器输入ip地址可以看到主页了

================================================================================

另一篇 :

Porting thttpd web server to ARM-Linux

Development:
    kernel:2.6.31-14-generic ubuntu9.10
    cross-tools:arm-linux-gcc version 4.1.2
Target
    kernel: 2.6.28.9 MOZART380 armv5tejl

<1>下载thttpd
    下载地址:http://www.acme.com/software/thttpd/ 
    Version:2.25b
<2>解压thttpd
    tar -xvzf thttpd-2.25b.tar.gz
    cd thttpd-2.25b/
<3>configure
    export CC=arm-linux-gcc (path/to/arm-linux-gcc)
    ./configure --host=arm-linux
    make
<4>拷贝thttpd
    cp thttpd /path/to/target-filesystem/thttpd/
    cp /etc/thttpd/* /path/to/target-filesystem/thttpd/
<5>创建子dir
    cd /path/to/target-filesystem/thttpd/
    mkdir www
    mkdir log
    mkdir -m 777 -p www/cgi-bin
<6>修改运行时conf
    gedit thttpd.conf
    正确设置以下参数
    port=80
    dir=/path/to/target-filesystem/thttpd/www
    #chroot        [2]
    user=root    [3]
    cgipat=/cgi-bin/*
    throttles=./throttle.conf[4]
    logfile=/path/to/target-filesystem/thttpd/log/thttpd.log
    pidfile=/path/to/target-filesystem/thttpd/log/thttpd.pid
    host=YourHostName
<7>运行thttpd
    ./thttpd -C thttpd.conf
<8>静态页面测试
    编写测试程序
    index.html
    ///////////////////////////////////////////////////////////////////////////
        <html>
        <head>
        <title>Welcome to nginx!</title>
        </head>
        <body bgcolor="white" text="black">
        <center><h1>Welcome to thttpd !</h1></center>
        </body>
        </html>
    ///////////////////////////////////////////////////////////////////////////
        拷贝
        cp index.html /path/to/target-filesystem/thttpd/www/
    测试
    http://YOURSIP/
<9>CGI脚本测试
    编写测试程序
    number.c
    ///////////////////////////////////////////////////////////////////////////
       #include <stdio.h>

        int main(void)
        {
        int i = 10;
        printf("Content-type: text/html\n\n");
        printf("<html>\n");
        printf("<head><title>CGI Output</title></head>\n");
        printf("<body>\n");
        while(i)
            printf("<h1>%d\n</h1>\n",i--);
        printf("<body>\n");
        printf("</html>\n");
        return 0;
        }
    ///////////////////////////////////////////////////////////////////////////
    交叉编译
    arm-linux-gcc -o number.cgi number.c
    拷贝至cgi-bin
        cp number.cgi /path/to/target-filesystem/thttpd/www/cgi-bin/
    更改属性
        chmod 755 number.cgi
    测试
        http://YOURSIP/cgi-bin/number.cgi

Q/A:
1.thttpd.conf可以在何处获取
A:thttpd-2.25b并没有thttpd.conf,可以使用host端的thttpd.conf
   如果host没有安装thttpd
   sudo apt-get install thttpd
   cp /etc/thttpd/* /path/to/target-filesystem/thttpd/

2.无法打开throttle.conf: No such file or directory
A:查看thttpd.conf,确保throttle.conf的配置路径指向其存放路径
  由于bean将其放在了thttpd/目录下,所以设置如下
  throttles=./throttle.conf

3.出现“unknown user - 'www-data' ”的错误
A:查看thttpd.conf,确保user的配置在target中存在
  bean裁剪filesys没有提供adduser,所以设置如下
  user=root

4.出现“chdir: No such file or directory ”的错误
A:查看thttpd.conf, 确保dir的设置正确
  bean将所有的测试放于/exchange下,关于dir的设置如下
  dir=/exchange/thttpd/www
  此处的dir是cgipat的父目录

5.出现“cannot load the lib xxxxx”
A:查看thttpd以来的动态库
  arm-9tdmi-linux-gnu-readelf -d thttpd
  ************************************************************************

Dynamic section at offset 0x11368 contains 22 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libcrypt.so.0]
 0x00000001 (NEEDED)                     Shared library: [libc.so.0]
 0x0000000c (INIT)                       0x9468
 0x0000000d (FINI)                       0x15acc
 0x00000019 (INIT_ARRAY)                 0x2135c
 0x0000001b (INIT_ARRAYSZ)               4 (bytes)
 0x0000001a (FINI_ARRAY)                 0x21360
 0x0000001c (FINI_ARRAYSZ)               4 (bytes)
 0x00000004 (HASH)                       0x8108
 0x00000005 (STRTAB)                     0x8cd0
 0x00000006 (SYMTAB)                     0x84a0
 0x0000000a (STRSZ)                      1022 (bytes)
 0x0000000b (SYMENT)                     16 (bytes)
 0x00000015 (DEBUG)                      0x0
 0x00000003 (PLTGOT)                     0x21440
 0x00000002 (PLTRELSZ)                   872 (bytes)
 0x00000014 (PLTREL)                     REL
 0x00000017 (JMPREL)                     0x9100
 0x00000011 (REL)                        0x90d0
 0x00000012 (RELSZ)                      48 (bytes)
 0x00000013 (RELENT)                     8 (bytes)
 0x00000000 (NULL)                       0x0

  ************************************************************************
可以看出thttpd以来libcrypt和libc lib,将arm-linux-tools的lib目录下的相应库文件拷贝至target的/lib目录
如果依然出现错误,将libnss_files lib拷贝至target的/lib目录,bean个人认为是前两个库依赖libnss_files[未验证]。

当然, 也可以直接使用静态库文件

cd thttpd-2.25b/

vi Makefile
指定静态链接二进制文件
LDFLAGS = static

重新编译


6,无法解析cgi.
A:检查thttpd的配置,默认配置时打开了chroot,此时不支持运行cgi
  修改thttpd.conf,将chroot注释掉,并保证user/logfile/pidfile/port/cgipat的有效设置

 

参考:

http://www.4ucode.com/Study/Topic/1594382


EBAZ4203(4205)+WEB实现远程控制记录 EBAZ4203,EBAZ4205 通过WEB实现远程控制 阅读详情

相关推荐

基于thttpd搭建web服务器(html调用cgi接口的c程序)

利用thttpd搭建web服务器,首先在根文件系统搭建中添加thttpd的工具(可以使用buildroot或yocto搭建根文件系统)。本节利用thttpd搭建2个界面(1界面使用html文件搭建,另一个界面使用C语言搭建cgi接口,同时在html文件中调用C语言程序)。

q544344318的博客 1390

移植thttpd

【代码】移植thttpd。

LangLang_2020的博客 505

arm-linux的web服务器选择及小巧的boa服务下载移植

arm-linux的web服务器选择及小巧的boa服务下载移植

lengkp的博客 1379

thttpd移植

1.官网下载http://www.acme.com/software/thttpd/ 版本thttpd-2.25b.tar.gz 2.解压 tar -zxvf thttpd-2.25b.tar.gz ./configure 4.修改makefile CC = arm-none-linux-gnueabi-gcc 总共有3个makefile要改 压缩根目录包1个,cgi-src目...

光明顶魔教工程师 637

【转载】移植多款轻量级 Web服务器到ARM-Linux系统

http://blog.chinaunix.net/u1/34474/showart_488114.html网络服务对于嵌入式Linux来说,已经是基本的内容了。对于简单的WEB服务,可以移植现成的开源软件。   现在使用于小型系统的轻量级WebServer主要有:lighttpd、thttpd、shttpd和boa等等。   早在07年5月份的时候,由于毕业设计的需要,我就移植过了Boa服务

musiclover的专栏 2770

thttpd移植与安全认证配置

thttpd移植与安全认证配置 将源码包拷贝到主机主目录下的工作目录(/root/workdir),并解压到当前目录: [root@ workdir]#tar -zxvf thttpd-2.25b.tar.gz 进入解压后的源码文件夹: [root@ workdir]#cd thttpd-2.2.25b 源码文件夹主要文件说明如下: contrib/redhat-rpm 目录里面存放有thttpd配置文件thttpd.conf extras/ 目录里面是密码生成源文件,编译后会生成htpasswd可执行文件,用于生成密码文件。 cgi-src/ 目录里存放的是php可嵌入式html的脚本语言。这里可以不用考虑

嵌入式设备使用的web服务器 ——thttpd移植 (非常详细,仔细品味一定会有收获)

1.官网下载http://www.acme.com/software/thttpd/  版本thttpd-2.25b.tar.gz 2.解压  tar -zxvf thttpd-2.25b.tar.gz 3../configure 4.修改makefile CC = gcc -> CC = arm-none-linux-gnueabi-gcc 总共有3个makefile要改

lqxandroid2012的专栏 3409

thttpd-2.29.tar.gz

thttpd 开发 编译所需要的第三方库, 放上来主要是方便大家下载,这样会比较快一些。

移植多款轻量级 Web服务器到ARM-Linux系统

移植多款轻量级 Web服务器到ARM-Linux系统 网络服务对于嵌入式Linux来说,已经是基本的内容了。对于简单的WEB服务,可以移植现成的开源软件。 现在使用于小型系统的轻量级WebServer主要有:lighttpd、thttpd、shttpd和boa等等。 早在07年5月份的时候,由于毕业设计的需要,我就移植过了Boa服务器。但是并未写出记录...

weixin_34390996的博客 132

嵌入式Linux下的thttpd web服务器的移植.pdf

嵌入式Linux下的thttpd web服务器的移植.pdf

thttpd-2.27.tar_thttpd_嵌入式HTTP_

用于小型微处理器的嵌入式WEB服务器源码

p4wnp1板linux怎么配置_Linux系统移植之——文件系统移植对每个学linux而言就像深夜的酒...

上章节分享了uboot、kernel的移植,本章节主要给大家总结文件系统的移植,主要内容如下:1 构造目标板的根目录及文件系统1.1 建立一个目标板的空根目录1.2 在 my_rootfs 中建立 Linux 目录树1.3 创建 linuxrc 文件2 移植 Busybox2.1 下载 busybox2.3 编译并安装 Busybox3 移植 TinyLogin3.1 下载3.2 修改 tinyL...

weixin_39641231的博客 208

用Proteus8.9自带STM32F401VE的Controller仿真STM32F407ZGT6,F429IGT6

@用Proteus8.9自带STM32F401VE的Controller仿真STM32F407ZGT6,F429IGT6 一, 目前得到的 Proteus8.9版本软件能够支持的Cortex-M4固件库项目,只能到达STM32F401VE (如下图1所示)。 (图1) 作为ST公司Cortex-M4更为广泛应用的F407,F429系列芯片;现在的Proteus8.9版本软件还没有固件库支持,不能...

kaillen的博客 3万+

boa配置文件解析

随着Internet技术的兴起,在嵌入式设备的管理与交互中,基于Web方式的应用成为目前的主流,这种程序结构也就是大家非常熟悉的B/S结构,即在嵌入式设备上运行一个支持脚本或CGI功能的Web服务器,能够生成动态页面,在用户端只需要通过Web浏览器就可以对嵌入式设备进行管理和监控,非常方便实用。本节主要介绍这种应用的开发和移植工作。 用户首先需要在嵌入式设备上成功移植支持脚本或CGI功能的Web

hjjph的专栏 3678

python 爬取携程全国旅游景点信息-2024.4.13

携程网是中国领先的在线旅行服务公司,提供酒店预订、机票预订、旅游度假、商旅管理等服务。携程网上有大量的旅游景点和酒店信息,这些信息对于旅行者和旅游业者都有很大的价值。通过爬虫技术,我们可以从携程网上获取这些信息,并进行数据清洗、数据分析、数据可视化等操作,从而得到有用的洞察和建议。

britlee的博客 1万+

(赛事-2022)[re:Invent 2018]-002:通过分析log多次迭代优化奖励函数后- 最快7.6s / 圈

Deepracer training 流程

Rainbow 4711

常见的几种嵌入式web服务器

嵌入式WEB服务器常见的有:Lighttpd, Shttpd, Thttpd, Boa, Mini_httpd, Appweb, Goahead Lighttpd LibHttpd是一个开源轻量级嵌入式Web server,是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。 lighttpd 适...

fzk0813 2万+

setup time和hold time的计算

内容仅仅为了方便记忆,与原理无关

sddhyl的博客 7810

移植thttpd嵌入式web服务器

大家都知道,thttpd是一款非常优秀的适用于嵌入式平台的web服务器,网上也有一些教我们如何移植的文章。对于一般情况可能都适用,但是偏偏到了我这就不能一次成功。 总的算起来,我前几天开始装,基本上安装下面的步骤:(参考来自:tekkman.cublog.cn ) 1 下载并解压 下载地址为: http://www.acme.com/software/thttpd/ 我下载的是最新的2.2

lqxandroid2012的专栏 865

macOS 12.7.6部署Ollama+Dify避坑指南

本文介绍了在macOS 12.7.6系统下部署Ollama和Dify的详细步骤及避坑指南。主要内容包括:1)关闭系统完整性保护(SIP)以允许修改系统目录;2)安装特定版本的Docker(2.1.0.5)和docker-compose(v2.38.2)以避免兼容性问题;3)配置Ollama服务并下载nomic-embed-text和deepseek-r1:7b模型;4)针对macOS调整Dify的docker配置文件,包括延长超时时间、修改存储路径、增加资源限制等关键设置。文中提供了完整的命令操作步骤和配置

Hi20240217的博客 3100

项目管理-(补充)七种基本质量工具

七种基本质量工具,用于PDCA循环的架构内 解决与质量相关的问题,分为老七工具和新七工具。 1)老七种:刘英只点劣质茶(流程图、因果图、直方图、散点图、帕累托图、控制图、核查表)2)新七种:锯树联亲测动优(矩阵图、树形图、关联图、亲和图、过程决策程序图、活动网络图、优先矩阵)

weixin_42081167的博客 4602

移植thttpd——轻量级的Web Server

移植thttpd Web服务器下载从http://www.acme.com/software/thttpd/ 下载thttpd编译thttpdCC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc ./configure host=arm-linuxvi Makefile指定静态链接二进制文件LDFLAGS = staticmake LDFLAGS="st

SEU_EXtreme! 3228

CSAPP performance lab

CSAPP 深入理解计算机系统的performance Lab

weixin_46091531的博客 1249

移植thttpd web服务器

移植thttpd web服务器到友善之臂mini2440开发板上(CPU是s3c2440)1. 环境硬件环境:Host:X86PC        Target:davinci DM6446 (TI) 软件环境:Host:Federo (linux2.6.15)(完全安装)Target:arm-linux                kernel:linux-2.6.1

dancesky的专栏 742

ADT MCP Server 把 ABAP 开发带进 Agent 模式

今天讨论 ADT MCP Server,不能只把它看成 Visual Studio Code 里多出来的一个开关。它真正有意思的地方,在于它把 ABAP 后端开发里那些原本需要手工点击、手工创建、手工激活、手工查服务元数据的动作,包装成一组可以被 GitHub Copilot 这类 coding agent 调用的工具。SAP 在 RAP130 练习里把它描述为运行在 ADT for Visual Studio Code 扩展内部的本地 HTTP Server,它实现的是 Model Context Pro

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 181

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: 移植openssh至arm9嵌入式开发板及常见错误
下一篇: Vsftpd-3.0.2服务器arm-linux移植—mini2440开发板
evenness
博客等级 码龄15年 99粉丝 8原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值