一:移植Boa(web服务器)到嵌入式Linux系统 一、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]$./configure3、修改Makefile文件(注意:必须用cross-2.95.3,
如使用3.4.1、4.1.1等等会出错) 4、交叉编译[tekkamanninja@Tekkaman-Ninja
src]$ make5、去除调试信息,减小体积。(可选)[tekkamanninja@Tekkaman-Ninja
src]$/home/tekkamanninja/working/source/2.95.3/bin/arm-linux-strip
boa6、将编译好的程序放入根文件系统的/bin目录下。[tekkamanninja@Tekkaman-Ninja
src]$ cp
boa/home/tekkamanninja/working/nfs/rootfs/bin/二、配置BoaBoa需要在/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
"); printf("
"); printf("CGI
Output
")