2017/1/20 16:36:26
目前,在嵌入式设备中所使用的web服务器主要有:Boa、thttpd、lighttpd、appweb、apache等。下图是从网上下载的对这些web服务器的详解和对比。 Boa是一种嵌入式设备所用的web服务器,它运行于linux和Unix下。它相较于其他web服务器,最大的区别就是他是一个单任务http服务器,它不像传统的web服务器那样为每个访问连接开启一个进程。Boa只能依次完成用户的请求,而不会fork()出新的进程来处理并发连接请求。但是Boa支持CGI(公共网关接口),能够为CGI程序fork()出一个进程来执行。出于Boa的设计目标就是速度和安全,以及它的单任务工作模式,令Boa在同等硬件条件下拥有更快的响应速度。
编译环境:Ubuntu-Server 16.04 LTS 32bit 目标平台:Android
...... 27 # Change these if necessary 28 29 YACC = yacc 30 LEX = lex 31 CC = arm-linux-androideabi-gcc 32 CPP = arm-linux-androideabi-gcc -E ......ii: gcc -g -O2 -pipe -Wall -I. -c -o util.o util.c util.c: 100:1: error: pasting “t” and “->” does not give a valid PReprocessing token make: * [util.o] Error 1 修改src/compat.h如下。......119 #ifdef HAVE_TM_GMTOFF120 #define TIMEZONE_OFFSET(foo) foo->tm_gmtoff121 #else122 #define TIMEZONE_OFFSET(foo) timezone123 #endif......error_log: error:icky Linux kernel bug!。 这个error要在后面运行boa时在error_log中才能看到。修改src/boa.c如下。......225 if (setuid(0) != -1) {226 //DIE("icky Linux kernel bug!");227 }......4 boa配置
4.1 boa.conf文件
在boa-094.13目录下,有boa.conf示例配置文件,我们在其基础上更改,以便更符合我们的配置。下面对配置项做一个介绍。
Port 80 web端口,默认80,如果被占用,会报错,可以更改为其他可用端口,不过在访问时需指定端口。User nobody ——> User 0Group nogroup ——> Group 0 访问连接时所用的用户名和组名,网上都是设为0,即root账户。应该也可以设置为已存在的用户和其对应的组名,不过,可能会牵涉到相关文件权限的问题。ErrorLog /var/log/boa/error_log ——> ErrorLog /etc/boa/error_logaccessLog /var/log/boa/access_log ——> AccessLog /etc/boa/access_log 这是两个日志文件,我们可以自己设置对应的位置,注意更改此boa目录及其子目录下的所有文件的权限为777。DocumentRoot /var/www ——> DocumentRoot /etc/boa/html 存放html文件的地方。DirectoryIndex index.html 第一张页面的名称:index.html。MimeTypes /etc/mime.types ——> MimeTypes /etc/boa/mime.types mime.types文件位置,可以从编译机器上拷贝至/etc/boa/。ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ ——> ScriptAlias /cgi-bin/ /etc/boa/cgi-bin/ CGI程序目录。4.2 Android系统上配置
根据boa.conf文件,配置boa服务器。
在/etc/下新建boa/目录。更改目录及子目录权限为777。
ll /etc/boa/ drwxrwxrwx 4 root root 4096 Jan 21 13:48 ./ drwxrwxrwx 3 root root 4096 Jan 19 15:17 ../ -rwxrwxrwx 1 root root 0 Jan 19 15:22 access_log* -rwxrwxrwx 1 root root 7350 Jan 19 15:31 boa.conf* drwxrwxrwx 2 root root 4096 Jan 19 16:52 cgi-bin/ -rwxrwxrwx 1 root root 0 Jan 19 15:22 error_log* drwxrwxrwx 2 root root 4096 Jan 19 15:55 html/ -rwxrwxrwx 1 root root 24241 Jan 19 15:11 mime.types*
将make源码生成的boa可执行程序push到Android系统的/system/bin/目录,修改权限为777。
简单找一个index.html放在/etc/boa/html/下,或者写一段简单的CGI程序,放在/etc/boa/cgi-bin/下。 执行boa程序,可以用top命令确认是否开启,如果没有启动,可以查看error_log,查找报错原因。5 验证boa服务
Android手机启动boa服务后,打开手机热点,假如你的手机热点的ip为192.168.43.1,port为80,则使用另一台终端,连接其热点,浏览器输入 http://192.168.43.1/ ,就可以看到你的index.html显示在浏览器上。
新闻热点
疑难解答