移植Boa(web服务器)到嵌入式Linux系统

嵌入式技术

1330人已加入

描述


一、Boa程序的移植

1、下载Boa源码
    下载地址: http://www.boa.org/
    目前最新发行版本: 0.94.13   (几年没更新版本了)
    下载 boa-0.94.13.tar.gz,

注意:若从boa上下载的是boa-0.94.13.tar.tar,解压方式一样
    解压:

 

2、生成Makefile文件
   进入boa-0.94.13,直接运行src/configure文件

[tekkamanninja@Tekkaman-Ninja src]$./configure

 

3、修改Makefile文件(注意:必须用cross-2.95.3, 如使用3.4.1、4.1.1等等会出错) 4、交叉编译

[tekkamanninja@Tekkaman-Ninja src]$ make

 

5、去除调试信息,减小体积。(可选)

[tekkamanninja@Tekkaman-Ninja src]$ /home/tekkamanninja/working/source/2.95.3/bin/arm-linux-strip boa

 

6、将编译好的程序放入根文件系统的/bin目录下。

[tekkamanninja@Tekkaman-Ninja src]$ cp boa /home/tekkamanninja/working/nfs/rootfs/bin/

  

 

 

二、配置Boa

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

 

1、Group的修改

修改 Group nogroup
为 Group user(开发板上有的组)
修改 User nobody
为 User boa (user组中的一个成员)
根据你的开发板的情况设定。一定要存在的组和用户。
 
以下是我在开发板上的操作:

[root@~]#adduser -g user boa
Changing password for boa
Enter the new password (minimum of 5, maximum of 8 characters)
Please use a combination of upper and lower case letters and numbers.
Enter new password:
Bad password: too short.

Warning: weak password (continuing).
Re-enter new password:
passwd[820]: password for `boa' changed by user `root'
Password changed.
[root@~]#

2、ScriptAlias的修改

修改 ScriptAlias /cgi-bin/  /usr/lib/cgi-bin/
为 ScriptAlias /cgi-bin/  /var/www/cgi-bin/

这是在设置CGI的目录,你也可以设置成别的目录。比如用户文件夹下的某个目录。

3、ServerName的设置

修改 #ServerName www.your.org.here
为 ServerName www.your.org.here

注意:该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or directory”,所以必须打开。其它默认设置即可。你也可以设置为你自己想要的名字。比如我设置为:ServerName tekkaman2440

此外,还需要:

将mime.types文件复制/etc目录下,通常可以从linux主机的 /etc目录下直接复制即可。

(以下配置和boa.conf的配置有关)

创建日志文件所在目录/var/log/boa

创建HTML文档的主目录/var/www

创建CGI脚本所在录 /var/www/cgi-bin

 

[tekkamanninja@Tekkaman-Ninja log]$ mkdir -m 777 boa
[tekkamanninja@Tekkaman-Ninja log]$ cd ..
[tekkamanninja@Tekkaman-Ninja var]$ mkdir -m 777 www
[tekkamanninja@Tekkaman-Ninja var]$ mkdir -m 777 www/cgi-bin
[tekkamanninja@Tekkaman-Ninja var]$ cd ..
[tekkamanninja@Tekkaman-Ninja rootfs]$ cp /etc/mime.types etc/

 

三、运行Boa

开发板操作:

[root@~]#boa

如果发现boa没有运行,则可以在开发板的/var/log/boa/error_log文件中找原因。

比如端口已被其他程序占用:

[root@~]#cat /var/log/boa/error_log
[20/Feb/2008:21:21:57 +0000] boa.c:194 - unable to bind: Address already in use

 

或是用户设置错误等等,都可以查到。

 

 

四、功能测试

静态网页测试

将静态网页存入根文件系统的/var/www目录下(可以将主机 /usr/share/doc/HTML/目录下的index.html、homepage.css和img、stylesheet-images目录复制到/var/www目录下)

我参考《嵌入式Web服务器移植 》的做法如下:

在根文件系统的/var目录下

[tekkamanninja@Tekkaman-Ninja var]$ cp /usr/share/doc/HTML/index.html www/
[tekkamanninja@Tekkaman-Ninja var]$ cp -r /usr/share/doc/HTML/img www/
[tekkamanninja@Tekkaman-Ninja var]$ cp /usr/share/doc/HTML/homepage.css www/
[tekkamanninja@Tekkaman-Ninja var]$ cp -r /usr/share/doc/HTML/stylesheet-images www/

 

直接在浏览器中输入开发板的IP地址(比如我的是http://192.168.1.2) ,出现fedora的欢迎网页。静态HTML调试成功。

CGI功能测试

1、编写HelloworldCGI.c程序

[tekkamanninja@Tekkaman-Ninja source]$ vi helloworldCGI.c

(主程序的程序开头一定要用Tab,而不是空格,不然编译可能不通过)

 

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
        printf("Content-type: text/html\n\n");
        printf("\n");
        printf("CGI Output\n");
        printf("\n");
        printf("

Hello,world.

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

 

2.交叉编译生成CGI程序

 

[tekkamanninja@Tekkaman-Ninja source]$ /home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-gcc -o helloworldCGI helloworldCGI.c

 

将helloworldCGI 拷贝至根文件系统的/var/www/cgi-bin/下

 

[tekkamanninja@Tekkaman-Ninja source]$ cp helloworldCGI ../nfs/rootfs/var/www/cgi-bin/

 

3.测试

浏览器输入
   http://192.168.1.2/cgi-bin/helloworldCGI

网页出现 Hello,world. 调试成功!

 

[tekkamanninja@Tekkaman-Ninja src]$ cd ../..
[tekkamanninja@Tekkaman-Ninja source]$ cd ../nfs/rootfs/etc/
[tekkamanninja@Tekkaman-Ninja etc]$ mkdir boa
[tekkamanninja@Tekkaman-Ninja etc]$ chmod 777 boa/
[tekkamanninja@Tekkaman-Ninja etc]$ cd boa
[tekkamanninja@Tekkaman-Ninja boa]$ kwrite boa.conf

 

CC = /home/tekkamanninja/working/source/2.95.3/bin/arm-linux-gcc
CPP = /home/tekkamanninja/working/source/2.95.3/bin/arm-linux-gcc -E


 

[tekkamanninja@Tekkaman-Ninja source]$tar x*** boa-0.94.13.tar.gz



打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分