Chinaunix首页 | 论坛 | 博客
  • 博客访问: 713627
  • 博文数量: 240
  • 博客积分: 3616
  • 博客等级: 大校
  • 技术积分: 2663
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-21 23:59
文章分类

全部博文(240)

文章存档

2013年(6)

2012年(80)

2011年(119)

2010年(35)

分类: LINUX

2011-11-07 14:43:39

嵌入式Web服务器移植

《嵌入式Linux系统开发详解--基于EP93XX系列ARM》一书和boa自带的文档等对该内容有比较详细的介绍,但在实验过程中,仍可能会出现一些问题。下面是我在WNC201系统(AT91RM9200)上的移植过程,欢迎讨论。

第一步 Boa程序的移植

1、下载Boa源码
下载地址: , 或者
最新发行版本: 0.94.13
下载 boa-0.94.13.tar.gz,注意:从boa上下载的是boa-0.94.13.tar.tar,解压方式一样
解压:# tar xzf boa-0.94.13.tar.gz

2、生成Makefile文件
直接运行src/configure文件

3、修改Makefile文件
a、
修改 CC = gcc
CC = /usr/local/arm/2.95.3/bin/arm-linux-gcc
b、
修改 CPP = gcc - E
CPP = /usr/local/arm/2.95.3/bin/arm-linux-gcc -E

4、编译
# make
# /usr/local/arm/2.95.3/bin/arm-linux-strip boa

第二步 Boa的配置
Boa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。在Boa源码目录下已有一个示例boa.conf,可以在其基础上进行修改。

1、Group的修改
修改 Group nogroup
Group 0
由于在/etc/group文件中没有nogroup组,所以设成0。另外在/etc/passwd中有nobody用户,所以User nobody不用修改。

2、ScriptAlias的修改
修改 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
ScriptAlias /cgi-bin/ /var/www/cgi-bin/

3、ServerName的设置
修改 ServerName
ServerName
注意:该项默认为未打开,执行Boa会异常退出,提示"gethostbyname::No such file or directory",所以必须打开。其它默认设置即可。

4、User的设置
原文是以nobody用户启动boa的,在后来的实践中发现,该用户无法实现POST,无法上传文件,无法访问共享内存,所以在我的系统中,
修改 User nobody
User root 或者 0

但是这样,boa无法正常启动,查看ErrorLog可以看到,"boa.c:266.icky Linux kernel bug!:No such file"。解决该问题的方法是将boa.c文件中以下几行判断去掉即可。

if (setuid(0) != -1) {
DIE("icky Linux kernel bug!");
}


第三部:Boa的执行
成功配置以后,还需要创建日志文件所在目录/var/log/boa,创建HTML文档的主目录/var/www,将静态网页存入该目录下(可以将主机/usr/share/doc/HTML/目录下的index.html文件和img目录复制到/var/www目录下),创建CGI脚本所在录/var/www/cgi-bin,将cgi的脚本存放在该目录下。另外还要将mime.types文件复制/etc目录下,通常可以从linux主机的/etc目录下直接复制即可。
实际运行时,可以将boa.conf文件、index.html文件、img目录和mime.types文件放到CF卡目录下,建立目录后,拷贝至相应目录。
制作run.sh
mkdir /etc/boa
cp /cf/boa/boa.conf /etc/boa/
mkdir /var/log
mkdir /var/log/boa
mkdir /var/www
cp /cf/boa/index.html /var/www/
cp -r /cf/boa/img /var/www/
mkdir /var/www/cgi-bin
cp /cf/boa/mime.types /etc/
cp /cf/boa/boa /
./boa &
直接在浏览器中输入,出现Red Hat的欢迎网页。静态HTML调试成功。

第四步 CGI脚本测试
1、编写Helloworld.c程序
#include
int main(void)
{
printf("Content-type: text/html\n\n");
printf("\n");
printf("\n");
printf("\n");
printf("

Hello,world.

\n");
printf("\n");
printf("\n");
exit(0);
}

交叉编译生成helloworld.cgi
# /usr/local/arm/2.95.3/bin/arm-linux-gcc -o helloworld.cgi helloworld.c

2、浏览
将helloworld.cgi拷贝至/var/www/cgi-bin/下,浏览器输入
/cgi-bin/helloworld.cgi
注意:拷贝至目标板上后,必须更改其属性chmod 755 *

 

 

http://www.eefocus.com/chenzhufly/blog/09-03/166610_85b4c.html

陈注的blog
阅读(718) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~