零、前言
嵌入式一般选择轻量的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下
接下来我们需要创建一个配置文件到 /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服务 。
如果要让 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