移植thttpd嵌入式web服务器

转载 2012年03月25日 15:05:15

大家都知道,thttpd是一款非常优秀的适用于嵌入式平台的web服务器,网上也有一些教我们如何移植的文章。对于一般情况可能都适用,但是偏偏到了我这就不能一次成功。

总的算起来,我前几天开始装,基本上安装下面的步骤:(参考来自:tekkman.cublog.cn )

载并解压

下载地址为:

http://www.acme.com/software/thttpd/ 我下载的是最新的2.25b

2 交叉thttpd

[tekkamanninja@Tekkaman-Ninja source]$ cd thttpd-2.25b
[tekkamanninja@Tekkaman-Ninja thttpd-2.25b]$CC=/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-gcc./configure –host=arm-9tdmi-linux-gnu
[tekkamanninja@Tekkaman-Ninja thttpd-2.25b]$ make

 

 

 

3 安装与配置
3.1 拷贝thttpd二进制可执行文件到根文件系统/usr/sbin/目录中

[tekkamanninja@Tekkaman-Ninja thttpd-2.25b]$ cp thttpd/home/tekkamanninja/working/nfs/rootfs/usr/sbin/



3.2 拷贝thttpd配置文件

[tekkamanninja@Tekkaman-Ninja thttpd-2.25b]$ cp contrib/redhat-rpm/thttpd.conf/home/tekkamanninja/working/nfs/rootfs/etc/


3.3在开发板上为thttpd创建一个独立的用户:httpd,并用此用户创建httpd服务的根目录html

[root@/root]#adduser httpd
Changing password for httpd
Enter the new password (minimum of 5, maximum of 8 characters)
Please use a combination of upper and lower case letters and numbers.
Enter new password:
Bad password: too short.

Warning: weak password (continuing).
Re-enter new password:
passwd[786]: password for `httpd' changed by user `root'
Password changed.
[root@/root]#exit
process '-/bin/login' (pid 787) exited. Scheduling it for restart.
starting pid 790, tty '': '/bin/login'

192.168.1.2 login: httpd
Password:

Processing /etc/profile...
Set search library path in /etc/profile
Set user path in /etc/profile
Set PS1 in /etc/profile
Done

[httpd@/home/httpd]$mkdir html

3.4 拷贝测试网页到httpd服务的根目(可选,测试之用):

[tekkamanninja@Tekkaman-Ninja thttpd-2.25b]$ cp index.html/home/tekkamanninja/working/nfs/rootfs/home/httpd/html/

我是动态编译所以查看一下需要的动态库

[tekkamanninja@Tekkaman-Ninja thttpd-2.25b]$/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-readelf-d thttpd

Dynamic section at offset 0x12014 contains 21 entries:
  Tag Type Name/Value
 0x00000001 (NEEDED) Shared library: [libcrypt.so.1]
 0x00000001 (NEEDED) Shared library: [libc.so.6]
 0x0000000c (INIT) 0x9548
 0x0000000d (FINI) 0x16564
 0x00000004 (HASH) 0x8128
 0x00000005 (STRTAB) 0x8c14
 0x00000006 (SYMTAB) 0x8494
 0x0000000a (STRSZ) 1066 (bytes)
 0x0000000b (SYMENT) 16 (bytes)
 0x00000015 (DEBUG) 0x0
 0x00000003 (PLTGOT) 0x220e4
 0x00000002 (PLTRELSZ) 872 (bytes)
 0x00000014 (PLTREL) REL
 0x00000017 (JMPREL) 0x91e0
 0x00000011 (REL) 0x91a0
 0x00000012 (RELSZ) 64 (bytes)
 0x00000013 (RELENT) 8 (bytes)
 0x6ffffffe (VERNEED) 0x9130
 0x6fffffff (VERNEEDNUM) 2
 0x6ffffff0 (VERSYM) 0x903e
 0x00000000 (NULL) 0x0

虽然这里只列出了需要libcrypt  libc 这两个动态库,但是想要运行thttpd还需要libnss_files 动态库,具体原因请看:http://www.jollen.org/blog/2006/10/library_dependency_1.html

[tekkamanninja@Tekkaman-Ninja thttpd-2.25b]$ cp -d/home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/lib/libnss_files*/home/tekkamanninja/working/nfs/rootfs/lib/


 你可以在启动文件里增加thttpd的启动命令:thttpd -C /etc/thttpd.conf

注意只有root有启动权限!

4、增加对CGI的支持

默认配置下,thttpd不可以运行GCI(特别是动态编译的CGI程序)要想使用CGI支持功能,必须更改thttpd.conf的配置:

 

# This section overrides defaults
dir=/home/httpd/html
#chroot
#屏蔽chroot是为了运行动态编译的CGI
user=httpd# default = nobody
logfile=/var/log/thttpd.log
pidfile=/var/run/thttpd.pid
# This section _documents_ defaults in effect
port=81
#port参数用于更改端口号(可不改,若还运行了别的WEB服务器,则需用不同端口)
# nosymlink# default = !chroot
#symlinks
# novhost
cgipat=/cgi-bin/*
#声明CGI程序的目录,是以dir为根目录的路径
# nothrottles
# host=0.0.0.0
# charset=iso-8859-1

移植完成,可以测试了(只需在WEB浏览器中键入开发板的IP地址即可)

 

到了这里,当我输入目标板ip时,问题出现了:

错误:403 forbidden.
The requested URL '/' resolves to a file which is marked executable but is not a CGI file;

retrieving it is forbidden.

网上也有很多说法,可是好像都不适用于我这里,千辛万苦才找到以下解释:
原因:由于linux文件系统的权限问题,非cgi的文件请使用chmod -x去掉其可执行权限,否则web服务器

会认为它是cgi ( 比如index.html这样的文件 )

按如下解决

解决:chmod -x dir../index.html ,其中,dir..表示index.html的目录

到这,问题才算解决了,下一步该测试CGI了。。。

 

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

web服务器thttpd的移植 1.官网下载http://www.acme.com/software/thttpd/  版本thttpd-2.25b.tar.gz 2.解压  tar -zxv...
  • evenness
  • evenness
  • 2013年11月27日 13:55
  • 2647

移植thttpd嵌入式web服务器

大家都知道,thttpd是一款非常优秀的适用于嵌入式平台的web服务器,网上也有一些教我们如何移植的文章。对于一般情况可能都适用,但是偏偏到了我这就不能一次成功。 总的算起来,我前几天开始装,基本上...
  • sdvch
  • sdvch
  • 2014年09月01日 00:17
  • 2270

嵌入式web服务器Boa的移植

Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为C...
  • manchestermi
  • manchestermi
  • 2016年03月08日 15:42
  • 4297

嵌入式web服务器boa移植全过程(含图解过程)

移植平台:mini2440(arm9 s3c2440)开发板 ,内核2.6.29   一、boa下载和安装: 1、修改编译安装文件: 1)在www.boa.org下载boa-0.94...
  • cai_caiyi
  • cai_caiyi
  • 2016年11月30日 10:53
  • 1585

【教程】移植web server到Ubuntu就是这么简单!

Ubuntu:Ubuntu9.10   目的:移植web server到Ubuntu   window下载thttpd,地址:http://www.acme.com/software/thttpd/ ...
  • thisway_diy
  • thisway_diy
  • 2017年06月13日 16:36
  • 441

嵌入式WEB服务器移植三部曲之PHP的移植

不过,很纠结的是,这个在我的机器上面并没有成功。原因,不详。 转自:http://hi.baidu.com/%D2%BC%BF%DA%B3%BE%B0%A3/blog/item/024a7519be...
  • cos_sin_tan
  • cos_sin_tan
  • 2012年07月10日 20:56
  • 2713

嵌入式WEB服务器BOA的移植方法(一)

 作者:李驹光、郑耿本文摘自作者《嵌入式Linux系统开发详解-基于EP93XX系列ARM》一书的相关章节。   随着Internet技术的兴起,在嵌入式设备的管理与交互中,基于Web方式的应用成为目...
  • TrueLie
  • TrueLie
  • 2007年01月31日 19:07
  • 4322

移植 thttpd Web服务器

从http://www.acme.com/software/thttpd/ 下载thttpd 到/tmp 目录当中,并解压. 编译thttpd [arm@localhost thttpd-2.25b]...
  • 21aspnet
  • 21aspnet
  • 2011年06月28日 13:51
  • 2918

移植thttpd Web服务器

thttpd是个小型的web服务器。是移植到arm的不错选择,今天配置了一下,其中遇到了一些问题。当自己做个备份,也分享一下自己的配置经验吧。 CC=arm-linux-gcc ./conf...
  • q553716434
  • q553716434
  • 2012年07月28日 17:48
  • 758

移植thttpd嵌入式web服务器(转)

原文地址:http://blog.csdn.net/yaopingcs/article/details/4480224大家都知道,thttpd是一款非常优秀的适用于嵌入式平台的web服务器,网上也有一...
  • zlj7777
  • zlj7777
  • 2011年07月05日 16:23
  • 209
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:移植thttpd嵌入式web服务器
举报原因:
原因补充:

(最多只允许输入30个字)