轻量webserver嵌入式移植和配置-基于BOA

1 编译

首先官网www.boa.org下载最新版本源码.

以Ubuntu为例,确认系统已经安装了bison和flex:

sudo apt install bison flex

解压缩进入src文件夹,看一下defines.h,找到下面这几行:

#ifndef SERVER_ROOT
#define SERVER_ROOT "/application/boa"
#endif

这里我已经吧SERVER_ROOT根据我的需要做了修改,这个宏定义定义的就是部署后的boa工作目录.

接着在compat.h里找到下面这行:

#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

我已经做了修改,原来是foo##->tm_gmtoff,编译器不支持.

然后运行./configure,生成Makefile.

因为是移植,所以Makefile要做适当修改:

CC和CPP分别改成需要用到的交叉编译器,其他参数根据自己需要调整,例如我这里:

CC = arm-poky-linux-gnueabi-gcc  -march=armv7-a -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=/opt/fsl-imx-x11/4.14-sumo/sysroots/cortexa9hf-neon-poky-linux-gnueabi
CPP = arm-poky-linux-gnueabi-gcc -E  -march=armv7-a -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 --sysroot=/opt/fsl-imx-x11/4.14-sumo/sysroots/cortexa9hf-neon-poky-linux-gnueabi

最后,可以make一下了,编译出来两个东西boa和boa_indexer,就是boa webserver的本体.

2 配置

boa解压的目录里有个boa.conf,这就是boa的配置文件,里面有几个项目是需要调整的:

Port 80 #web服务端口

...

ErrorLog /application/boa/error_log #错误日志路径,保证可写

...

AccessLog /application/boa/access_log #访问日志路径,保证可写

...

DocumentRoot /application/boa/www #这里是放html文件的地方

...

DirectoryMaker /application/boa/boa_indexer #boa遍历web目录所需要的工具

...

MimeTypes /application/boa/mime.types #mime配置文件的路径

...

CGIPath /bin:/usr/bin:/sbin:/usr/sbin #cgi程序运行时的环境变量

...

ScriptAlias /cgi-bin/ /application/boa/www/cgi-bin/ #web路径到实际cgi路径的映射

配置文件里每一条都都有注释,根据自己需求去定义,如果在嵌入式目标板上有root权限,建议不用对User和Group两个选项修改.

3 部署

对应第二节中的配置文件,我这里需要在目标板上建立/application/boa文件夹,拷贝如下文件:

boa boa_indexer boa.conf

如果目标板的/etc目录下没有mime.types,就根据配置文件指定路径,从自己的电脑上拷贝一个过去(e.g. Ubuntu的/etc/mime.types).

然后,boa下建立www文件夹,www下建立cgi-bin文件夹.

www文件夹下面放如index.html等等站点的静态文件,cgi-bin下面就是各种cgi程序来提供动态功能了.

所有的静态资源要给读写权限,无脑chmod 666,cgi程序需要执行权限,无脑chmod 777.

运行./boa,如果没有root权限没法用小端口比如80,无脑root运行.

此时通过浏览器访问目标板ip就能看到主页了.

4 结论

boa确实很轻,对于一些简单的需求十几分钟搞定,资源受限系统特别合适.

boa实在太"轻"了,要实现一些功能比如用户权限管理之类还需要自己做很多工作,cgi也落后了,就不如折腾其他框架了.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值