Boa服务器编译
作者:互联网
对于物联网的数据发布,特点是流量小、服务器系统资源有限,还有就是非我所长,够用就行。
Boa的特点:部署方便,简单易用,资源占用小,功能够用。
编译:
#!/bin/sh
#下载源码
wget http://www.boa.org/boa-0.94.13.tar.gz
#安装两个辅助编译工具,分别对应yacc和lex两个命令
apt-get install bison flex
#修改头文件
src/compat.h
//#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
编译警告汇总:
// (1)
y.tab.c:1196:16: warning: implicit declaration of function ‘yylex’ [-Wimplicit-function-declaration]
yychar = yylex ();
// (2)
boa_lexer.l:82:2: warning: implicit declaration of function ‘yyerror’; did you mean ‘perror’? [-Wimplicit-function-declaration]
yyerror("unterminated string constant");
^~~~~~~
// (3)
lex.yy.c:1330:16: warning: ‘input’ defined but not used [-Wunused-function]
static int input (void)
^~~~~
lex.yy.c:1287:17: warning: ‘yyunput’ defined but not used [-Wunused-function]
static void yyunput (int c, char * yy_bp )
^~~~~~~
// (4)
request.c:84:17: warning: pointer targets in passing argument 3 of ‘accept’ differ in signedness [-Wpointer-sign]
&remote_addrlen);
^~~~~~~~~~~~~~~
//(5)
/usr/include/arm-linux-gnueabihf/sys/socket.h:232:12: note: expected ‘socklen_t * restrict’ {aka ‘unsigned int * restrict’} but argument is of type ‘int *’
extern int accept (int __fd, __SOCKADDR_ARG __addr,
^~~~~~
常用配置项:
#HTTP静态资源根目录
DocumentRoot /var/www
#HTTP默认服务端口
Port 80
#日志文件(设置为/dev/null则关闭)
ErrorLog /var/log/boa/error_log
AccessLog /var/log/boa/access_log
#CGI程序路径(重定向)
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
#配置文件默认路径, 宏定义在 src/defines.h,可在编译前修改
#同时,可在执行启动命令时通过启动参数 -c 覆盖默认路径
#define SERVER_ROOT "/etc/boa"
编译:
./configure
#如果是交叉编译,则修改生成的Makfile重新指定交叉编译器
CC=arm-linux-gnueabihf-gcc
CPP=arm-linux-gnueabihf-gcc
make
启动:
#创建配置文件目录/etc/boa并将boa.conf拷贝到此处
#将编译生成的二进制文件boa拷贝到/usr/bin目录
boa
配置为systemd服务:
创建服务配置文件/lib/systemd/system/boa.service
[Unit]
Description=Boa-HTTP Server
After=network.target
[Service]
Type=forking
ExecStart=boa
[Install]
WantedBy=multi-user.target
#更新配置文件
systemctl daemon-reload
#启动服务
systemctl start boa
#添加开机启动
systemctl enable boa
补充说明:
虽然部署方式灵活,但我还是推荐以官方默认方式来配置它,比如配置文件、静态资源 、日志文件、CGI程序等默认路径;
也许是代码太过老旧,编译时出现了很多警告,有时间还是可以作进一步了解的;
配置文件中还有一些配置项,有某些应用场景还是可以进一步尝试的,比如KeepAlive配置项,具体细节可参考官方文档:http://www.boa.org/documentation/
标签:function,配置文件,int,编译,warning,服务器,boa,Boa 来源: https://blog.csdn.net/goal_ff/article/details/115312534