交叉编译thttpd-2.29让duo成为http服务器

零、前言
嵌入式一般选择轻量的http,目前主要web服务器主要有:boa、thttpd、mini_httpd、shttpd、lighttpd、goaheand、appweb和apache等。

boa编译较简单,可自行百度资料交叉编译,我这边已经验证,没问题。

一、源码获取

wget http://www.acme.com/software/thttpd/thttpd-2.29.tar.gz

thttpd 官网(acme.com)
http://www.acme.com/software/thttpd/

解压
tar zxvf thttpd-2.29.tar.gz

进入源码目录
cd thttpd-2.29

二、交叉编译
编译较为简单,主要步骤为source交叉编译工具链环境、生成编译配置,修改makefile,make

a.生成编译配置
在源代码目录下执行
./configure CC=riscv64-unknown-linux-musl-gcc --host=riscv64-unknown-linux --prefix=$(pwd)/install_cv1800b

b.修改源码目录下的Makefile、cgi-src/Makefile、extras/Makefile
主要修改CC编译器名字及编译参数,按下图50-51地方修改

然后make即可完成编译

本次不进行make install ,因为安装需要修改所有和权限会出现失败,除非前面加sudo执行

在源码目录下可以看到生成的thttpd程序。

三、安装
将生成的thttpd拷贝至duo的usr/bin下,并执行chmod 777 thttpd 给其权限。

四、配置及运行
将源码下的index.html拷贝至板子下 /var/www下,并执行 chmod 644 index.html 给其权限

duo的/val/www下
image

接下来我们需要创建一个配置文件到 /etc
touch thttpd.conf
vi thttpd.conf

粘贴以下内容

# This section overrides defaults

dir=/var/www
chroot
user=root
# default = nobody
logfile=/var/log/thttpd.log
pidfile=/var/run/thttpd.pid
# This section _documents_ defaults in effect
# port=80
# nosymlink# default = !chroot
# novhost
# nocgipat
# nothrottles
# host=0.0.0.0
# charset=iso-8859-1

Esc后wq保存退出

运行http
thttpd -C /etc/thttpd.conf

http服务即在duo上运行起来了。

我们在pc端打开浏览器访问 192.168.42.1,即可体验http服务 。
image

如果要让 thttpd 开机启动,可以将该命令添加到 /etc/profile里或者init.d的S99自启脚本启动,或者通过服务的方式,Linux有很多种方式可以设置开机自启

更多配置参考thttpd的配置说明或者浏览器搜索,支持cgi和php,接下来的应用自由发挥吧。

典型的应用:智能家居的ota服务器,或者个人博客

四、程序获取
适合懒人,已经将交叉编译后的程序上传到git,自行取用。
Milkv-duo_Cross_Compile_software/thttpd at main · yue-xiaomin/Milkv-duo_Cross_Compile_software · GitHub

上一篇的mosquitto服务程序也可以同时运行,参考下面链接
交叉编译Mosquitto让duo成为智能家居mqtt服务器 - Duo - MilkV Community

1 Like

你好,我在安装懒人包时发现 install.sh 里似乎把 var 写成了 val

是的,这个是笔误,修复的版本稍后传到git