http://blog.sina.com.cn/caizhiwei99
开发平台:
Ubuntu14.04LTS+OK335XSAuthor:casyDate:2014/8/6
1.到Boa的官方网站:www.boa.org,或另一个下载地址:
http://sourceforge.net/projects/boa/files/下载源码boa-0.94.13.tar.gz。
2.将boa-0.94.13.tar.gz解压到home/forlinx目录下得到boa-0.94.13
目录。root@LinuxServer:/home/forlinx#tar-zxvfboa-0.94.13.tar.gz
3.进入boa-0.94.13/src目录,执行
root@LinuxServer:/home/forlinx/boa-0.94.13/src#./configure,执行后会自动在src目录下将生成Makefile文件,打开Makefile文件。4.修改所使用的编译器:用gedit打开makefile文件做如下修改。
CC=gcc
改为:CC=arm-linux-gcc
CPP=gcc–E
改为:CPP=arm-linux-gcc–E5.编译并优化:
修改/src/compat.h中的
#defineTIMEZONE_OFFSET(foo)foo##->tm_gmtoff
为:
#defineTIMEZONE_OFFSET(foo)foo->tm_gmtoff
否则会报错util.c:100:1:pasting“t”and“->”doesnotgiveavalidpreprocessingtokenmake:[util.o]Error1
然后,src目录下执行make命令,开始一键make!
make之后可能不是那么顺利哦,会遇到各种trouble!!!
boa服务器make错误-三心草的日志-网易博客
http://zhouyang340.blog.163.com/blog/static/3024095920121187544204/
成功后,将在src目录下生成boa可执行文件(大致256K),可去掉boa的调试信息对其进行优化,执行命令#arm-linux-stripboa后,boa变得只有60k大小。如图1所示:
6.修改配置文件boa.conf
复制ubuntu上/home/forlinx/boa-0.94.13/boa.conf文件到开发板的/etc/boa/目录下,修改权限#chmod–R777boa并修改如下内容。
Port 80
User root
Group root
ErrorLog /dev/console
AccessLog /www/log/boa/error_log
ServerName http://caizhiwei.com/
Document Root/www
Directory Index index.html
KeepAliveMax 1000
KeepAliveTimeout 10
MimeTypes /etc/mime.types
DefaultType text/plain
CGIPath /bin:/usr/bin:/usr/sbin:/sbin
ScriptAlias /cgi-bin/ /www/cgi-bin/
以上参数说明:
其中的一些设置的说明和可能出现的错误情况分析如下:
(1)Port80
监听的端口号,默认都是80,无需修改。
(2)Userroot
User后面对应一个用户
(3)Grouproot
Group对应group文件中一个组。作为哪个用户组,即它拥有该用户组的权限,一般都是root,需要在/etc/group文件中有root组。
(4)ErrorLog/www/log/boa/error_log
错误日志文件,error_log记录了boa的运行日志,如果发现运行错误通过#cat/www/log/boa/error_log就可查看错误信息。也可以设置为:ErrorLog/dev/console则在boa运行是错误信息直接从串口终端输出。如果不需要错误日志,则用/dev/null。
(5)AccessLog/www/log/boa/error_log
访问日志文件。如果不需要错误日志,则用/dev/null或者直接注释掉。(6)ServerNamehttp://embedclub.taobao.com/
该项默认是注释掉的,ServerName后面的内容任意取,表示服务器名字。该项必须打开,否则运行boa时会异常退出,提示“gethostbyname::Nosuchfileordirectory”。(7)DocumentRoot/www
存放HTML文档的主目录,这里对应根文件系统的www目录。(8)DirectoryIndexindex.html
HTML目录索引的文件名。(9)KeepAliveMax1000
一个连接所允许的HTTP持续作用请求最大数目,注释或设为0都将关闭HTTP持续作用。
(10)KeepAliveTimeout10
HTTP持续作用中服务器在两次请求之间等待的时间数,以秒为单位,超时将关闭连接。
(11)MimeTypes/etc/mime.types
指明mime.types的位置。(12)DefaultTypetext/plain
文件扩展名没有或未知的话,使用的缺省MIME类型。(13)CGIPath/bin:/usr/bin:/usr/sbin:/sbin
提供CGI程序的PATH环境变量值。
(14)ScriptAlias/cgi-bin//www/cgi-bin/
指明CGI脚本的虚拟路径对应的实际路径,一般所有的CGI脚本都要放在实际路径里,用户访问执行时输入站点IP+虚拟路径+CGI脚本名。其中,/cgi-bin/表示虚拟路径;/www/cgi-bin/表示实际路径。7.创建与boa.conf相关的目录与文件创建HTML文档的主目录:/www
创建日志文件所在目录:/www/log/boa创建CGI脚本所在录:/www/cgi-bin
创建日志文件:/www/log/boa/error_log步骤如下:
cd/opt/rootfsmkdirwww
chmod–R777www
mkdir–m777www/cgi-binmkdirwww/log
mkdirwww/log/boacdwww/log/boatoucherror_log
8.最后一步了,先拷贝Ubuntu主机/etc/mime.types文件到开发板/etc目录
下。#cp/etc/mime.types/opt/rootfs/etc
将步骤5中编译好的boa拷贝根文件系统的/bin目录下:#cpboa/opt/rootfs/bin
运行开发板中的boa程序:如果发现错误,不要急,按照错误号修改代码重新编译,直到成功!运行boa,如图2所示:
9.静态网页测试:
把St的LibV3.5的固件库下的index.html(谁便找了一个),复制到/www目录下,重启开发板,启动boa服务#boa.在浏览器中输入开发板ip:
10.
CGI
功能测试
:
编写
HelloCGI.c
程序
(
注意:
printf
语句以
Tab
开始
)
int
main
(
void
)
{
printf
("Content-type:
text/html\n\n");
printf
("\n"
);
printf
("
Output
);
printf
("
\n");
printf
("
caizhiwei
!.\n");
printf
("
\n");
10.
CGI
功能测试
:
编写
HelloCGI.c
程序
(
注意:
printf
语句以
Tab
开始
)
int
main
(
void
)
{
printf
("Content-type:
text/html\n\n");
printf
("\n"
);
printf
("
Output
);
printf
("
\n");
printf
("
caizhiwei
!.\n");
printf
("
\n");
10.CGI功能测试:printf("\n");exit(0);
}
在主机上交叉编译:
#arm-arago-linux-gnueabi-gcchelloCGI.c-ohelloCGI
将helloCGI拷贝至根文件系统的/www/cgi-bin/下,重启开发板,启动boa,在浏览器输入:http://192.168.0.59/cgi-bin/helloCGI网页出现Hello,i'mcaizhiwei!调试成功!如图所示:
11.动态WEB页面测试11-1.CGIC库源代码下载
从CGIC的主站点http://www.boutell.com/cgic/下载源码,当前最新版本是2.06版。11-2.CGIC库配置
借助Samba服务,将cgic205.tar.gz拷贝到虚拟机Linux系统中,解压cgic205.tar.gz到/home/forlinx目录,得到cgic205目录。#tarxvzfcgic205.tar.gz#cdcgic205
修改makefie文件中的编译工具:CC=gcc
改为CC=arm-linux-gcc
AR=ar
改为AR=arm-linux-ar
RANLIB=ranlib
改为RANLIB=arm-linux-ranlib
gcccgictest.o-ocgictest.cgi${LIBS}
改为:$(CC)$(CFLAGS)cgictest.o-ocgictest.cgi${LIBS}
gcccapture.o-ocapture${LIBS}
改为:$(CC)$(CFLAGS)capture.o-ocapture${LIBS}11-3.编译和优化
执行make命令得到的CGIC库libcgic.a并生成调试辅助程序capture和测试程序cgictest.cgi文件,执行#arm-arago-linux-gnueabi-stripcapture命令对生成的capture文件进行优化,减小大小。capture由原来的100K左右变成29K左右。11-4.测试
拷贝以上生成的capture和cgictest.cgi可执行文件到根文件系统的www/cgi-bin目录下。重启运行如图5所示。
服务器程序可以通过三种途径接收信息:环境变量、命令行和标准输入。具体使用哪一种方法要由