移植BOA服务器到开发板

移植BOA 服务器到GEC210 开发板 html

开发平台
主机:VMWare--Ubuntu 10.04 LTS
开发板:GEC210 / linux-2.6.35.7
编译器:arm-linux-gcc-4.5.1
所需软件:boa-0.94.13.tar.gz
下载:http://www.boa.org/boa-0.94.13.tar.gz
第一部分  移植步骤
BOA 服务程序编译
一、设置好交叉编译工具链路径:
export PATH=/usr/local/arm/4.5.1/bin:$PATH
二、解压下载好的BOA 压缩包
tar zxvf boa-0.94.13.tar.bz2
三、进入解压后的目录
cd boa-0.94.13
四、进入BOA 源码包的src 目录(下面操做均在该目录下进行)
cd src
五、利用configure 工具配置生成Makefile 文件
./configure
六、修改生成的Makefile 文件(设置交叉编译器)

CC = gcc
CPP = gcc –E
修改成:
CC=arm-linux-gcc
CPP=arm-linux-gcc –E

七、修改defines.h 文件
将#define SERVER_ROOT “/etc/boa”修改成#define SERVER_ROOT “/gec/web”
该处定义的是WEB 服务器的文件根目录,跟boa.conf 文件中的DocumentRoot 一致便可。
八、修改compat.h 文件
将#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改为#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
防止在make 时出现以下错误提示:
util.c:100:1: pasting "t" and "->" does not give a valid preprocessing token
九、修改boa.c 文件
注释掉下面两句话:
#if 0
if (passwdbuf == NULL) {
DIE(”getpwuid”);
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE(”initgroups”);
}
#endif
不然会出现错误: getpwuid: No such file or directory
注释掉下面语句:
#if 0
if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
#endif
不然会出现错误: - icky Linux kernel bug!: No such file or directory
十、编译boa
make
至此,在src 目录中将获得交叉编译后的boa 程序,可使用如下方法缩小程序的体积
arm-linux-strip boa //去掉相关调试信息,对交叉编译生成的boa 程序瘦身。
编译错误(1):
yacc  -d boa_grammar.y
make: yacc:命令未找到
make: *** [y.tab.c]
解决办法:#apt-get install bison,安装完成后要再一次执行 #./configure
再执行 #make
编译错误(2):
y.tab.c: 在函数‘yyparse’中:
y.tab.c:1319:7: 警告:隐式声明函数‘yylex’
lex  boa_lexer
make: lex:命令未找到
make: *** [lex.yy.c] 错误127
解决办法:#yum install flex
安装完成,再#make就能够了
第二部分  BOA 服务器运行环境搭建
1、在解压的boa 源码目录下有个boa.conf 文件,根据GEC210 根文件系统的设计,对它进行以下修改:
一、修改用户与用户组信
1)、User 的修改:
将User nobody 修改成User 0
2)、Group 的修改:
将Group nogroup 修改成Group 0
在根文件系统中的/etc/passwd 文件中没有nobody 用户,因此设成0。
在根文件系统中的/etc/group 文件中没有nogroup 组,因此设成0。
二、相关日志文件存放位置项,保留将保存日志文件,根据须要能够选择是否注释掉
#ErrorLog /var/log/boa/error_log
#AccessLog /var/log/boa/access_log
三、打开ServerName 的设置:
将#ServerName www.your.org.here 前面的#号去掉,该项默认为未打开,执
行Boa 会异常退出,提示“gethostbyname::No such file or directory”,因此
须打开。
四、将DocumentRoot /var/www 修改成:DocumentRoot /gec/web,否则会提示错误
GET / HTTP/1.1" ("/var/www/"): document open: No such file or directory
五、将DirectoryMaker /usr/lib/boa/boa_indexer 注释掉
六、将MimeTypes /etc/mime.types 修改成:MimeTypes /gec/web/mime.types
七、将DefaultType text/plain 修改成:DefaultType text/html。
八、将Alias /doc /usr/doc 注释掉。
九、SccriptAlias 的设置:
将ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/修改成
ScriptAlias /cgi-bin/ /gec/web/cgi-bin/
至此,BOA 服务器配置已经完成,接下来完善根文件系统便可在GEC210 上运行。
2、完善根文件系统
一、在开发板的根文件系统根目录建立必要的BOA 服务器运行目录:
在根文件系统的根目录下建立/gec/web 目录:
cd /root/rootfs
mkdir -p gec/web
进入到建立好的web 目录下,建立cgi-bin 目录:
mkdir cgi-bin
二、把交叉编译生成的boa 程序和配置好的boa.conf 文件及主机下的/etc/mime.types 文件
都复制到板上的/gec/web 目录下,并在该目录下建立一文件index.html,文件内容能够参
考以下:
<html>
<head>
<title>BOA TEST</title>
</head>
<body>
<h1>BOA TEST</h1>
</body>
</html>
三、进入到板上的/gec/web 目录下,执行./boa,能够看到以下启动信息:
在主机上启动浏览器,输入URL 为http://192.168.0.23,访问板上的BOA 服务,效果以下:linux

wps_clip_image-20959
四、测试完静态页面后,接下来测试CGI 脚本文件:
在主机上建立一文件test.c,文件内容以下:
include <stdio.h>
int main(void)
{
printf("Contenttype:text/html\n\n");
printf("<html>\n");
printf("<head><title>BOA CGI TEST</title></head>\n");
printf("<body>\n");
printf("<h1>BOA CGI TEST</h1>\n");
printf("</body>\n");
printf("</html>\n");
return 0;
}
编译:arm-linux-gcc test.c –o test.cgi
而后用交叉编译工具链编译,将获得的test.cgi 文件复制到板上的/gec/web/cgi-bin 目录下:
在浏览器输入http://192.168.0.23/cgi-bin/test.cgi,能够看到以下效果: web

wps_clip_image-21077

相关文档及文件下载连接: http://download.csdn.net/detail/klcf0220/5888169 小程序

另外还有一份关于S3C2440开发板的:http://download.csdn.net/detail/klcf0220/5888157浏览器

相关文章
相关标签/搜索