因为要用,所以查了一些资料,再结合自己的实际情况,在ARM板子上做了一个WEB服务器,服务器可以通过CGI进行动态交互.现记录于此.
主机:redhat企业版4
目标板:EBD9260-S(内核版本2.6.19)
主机IP:192.168.0.12
目标板IP:192.168.0.11
交叉编译环境已经设置好.由于ARM资源的限制,不可能将一些大型的服务器移植上去,对脚本的支持也不大可能,开源的boa就是这么一个服务器:可以传送静态网页和通过纯CGI的方式进行交互.
步骤:
1.从
www.boa.org上下载boa的源码,目前版本是boa-0.94.13
2.tar -xzvf boa-0.94.13
cd boa-0.94.13/src
./configure,生成Makefile
3.vi Makefile,修改:
CC=armv5l-linux-gcc
CPP=armv5l-linux-gcc -E
保存退出
4.make,出现错误:
util.c:100:1:pasting "t" and "->" does not give a valid preprocessing token
5.修改compat.h中:
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
#define TIMEZONE_OFFSET(foo) foo##->tm_zone
为:
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
#define TIMEZONE_OFFSET(foo) (foo)->tm_zone
6.还有一个错误需要修改:
将boa.c中的
if(setuid(0)!=-1){
DIE("icky Linux Kernel bug!");
}
将这三行注掉,不然编译不会出错,但是启动不起来
7.重新make,生成可执行文件boa
8.剥去调试信息:armv5l-linux-strip boa
9. 修改boa-0.94.13目录中的boa.conf:
port 80
user 0
group 0
Errorloog /var/log/boa/error_log
Accesslog /var/log/boa/access_log
server Name
www.xibiren.comDocument Root /var/www
DirectaryIndex index.html
KeepAliveMax 1000
KeepAliveTimeOut 10
Mimetypes /etc/mime.types
DefaultType text.plain
CGIPATH /bin:/usr/bin:/usr/local/bin
Alias /doc /usr/doc
ScriptAlias /cgi-bin/ /var/www/cgi/bin/
10:在目标板上:
mkdir /var/www
mkdir /var/www/cgi-bin
mkdir /var/log/boa
mkdir /etc/boa
通过ftp或者nfs的方式将主机下的/etc/mime_types.h传到目标板/etc下
将刚才修改的boa.conf传到/etc/boa下
将生成的boa可执行文件传到/usr/bin下
制作index.html,将其传到目标板/var/www/下
11.在目标板上启动boa,在主机上的浏览器中输入:
http://92.168.0.11就可以看到index.html的内容了,如果看到,则说明boa移植成功了
12.测试cgi.
编写hello.cgi:
#include <stdio.h>
int main(void)
{
printf("Conten-type:text/html\n\n");
printf("<html>\n");
printf("<head><title>CGI OUTPUT</title></head>\n");
printf("<body\n>");
printf("<h1>Hello,xibiren!</h1>\n");
printf("</body>\n");
printf("</html>\n");
exit(0);
}
然后armv5l-linux-gcc -o hello.cgi hello.c
生成hello.cgi,将其传输到目标板上/var/www/cgi-bin/目录下
13.在主机浏览器中输入http://192/168.0.11/cgi-bin/hello.cgi
如果能看到:
Hello,xibiren!
的测试界面,则说明cgi测试通过.
//****----------------//
要想进一步用好boa的cgi功能,还必须移植CGIC库.下次再写了.
//****----------------//
按照上面的步骤执行之后,需要重新制作文件系统,才能在下此开机之后能够使用.
//****-----------------//