用thttpd做Web Server

httpd是busybox中自带的webserver,功能弱,不支持认证和CGI。thttpd和bPHP
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码
httpd是busybox中自带的web server,功能弱,不支持认证和CGI。thttpd和boa都支持认证CGI,功能比较全,Boa是一个单任务的小型http服务器,设计的小型系统不要数据库操作,所以可以使用thttpd作为server.

1. 编译thttpd

    cc=armv5l-linux-gcc ./configure -host=arm.这里设置为交叉编译.

2. make

3. 拷贝 thttpd到osroot/usr/sbin,拷贝contrib/redhat-rpm/thttpd.conf 到osroot/etc,

4. 测试一下thttpd所需要的动态库,readelf -d thttpd

5. 要想运行thttpd,还需要libnss类动态库,thttpd 使用到 NSS (Name Service Switch),因此若没有 libnss类动态库,thttpd 在通过 /etc/passwd 去查询 UNIX user时,会看到:unknown user - usr, 原因是 thttpd 读不到 'usr' 用户,相应的处理代码在thttpd.c 的 main()函数里,这里thttpd可以加入libnss_compat.so和libnss_file.so两个动态库文件.

6. 默认情况下,thttpd不可以运行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
cgipath=/cgi-bin/*
#声明CGI程序的目录,是以dir为根目录的路径
# nothrottles
# host=0.0.0.0
# charset=iso-8859-1
7. 在开发板上为thttpd创建一个独立的用户:httpd,并用此用户创建httpd服务的根目录html

最简单的测试方法不用配置文件,直接输入命令:
thttpd -p 80 -d /home/httpd/html -u root 启动

 

本文来源21aspnet,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/2170

发表评论