Boa 程序的移植
1、下载 Boa 源码
下载地址:http://www.boa.org/
下载 boa-0.94.13.tar.gz,
解压:[root@Localhost source]$tar -zxvf boa-0.94.13.tar.gz
2、生成 Makefile 文件
进入 boa-0.94.13,直接运行 src/configure 文件
[root@Localhost src]$./configure
3、修改 Makefile 文件
修改
LDFLAGS = -g
CC = gcc
CPP = gcc -E
为:
LDFLAGS = -g -static
CC = arm-linux-gcc
CPP = arm-linux-gcc -E
4、修改 src/compat.h
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成
#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
否则会在make时会出现下面错误:
5、修改src/boa.c
注释掉下面语句:
if (passwdbuf == NULL) {
DIE(”getpwuid”);
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE(”initgroups”);
}
即修改为:
#if 0
if (passwdbuf == NULL) {
DIE(”getpwuid”);
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE(”initgroups”);
}
#endif
否则最后在开发板运行时会出现以下错误:
boa.c:211 - getpwuid: No such file or directory
6、交叉编译
[root@Localhost src]$ make
Make过程中可能会出现以下错误:
错误一:
解决方法:
apt-get install bison
错误二:
解决方法:
apt-get install flex
7、去除调试信息,减小体积,大约能减小一半还多。 (可选)
[root@Localhost src]$ arm-linux-strip boa
配置 Boa
1、修改boa.conf文件
进入网络根文件系统,在/etc 目录下建立一个 boa 目录,里面放入 Boa 的主要配置文件 boa.conf。 在Boa 源码目录下已有一个示例 boa.conf,可以在其基础上进行修改。
修改User nobody 为 User 0 ; 修改Group nogroup 为 Group 0
ScriptAlias 的修改
修改 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
为 ScriptAlias /cgi-bin/ /var/www/cgi-bin/
这是在设置 CGI 的目录,你也可以设置成别的目录。比如用户文件夹下的某个目录。
ServerName 的设置
修改 #ServerName www.your.org.here
为 ServerName www.your.org.here
注意: 该项默认为未打开, 执行 Boa 会异常退出, 提示“ gethostbyname::No such file or
directory”,所以必须打开。其它默认设置即可。
2、将 mime.types 文件复制/etc 目录下,通常可以从 linux 主机的 /etc 目录下直接复制即可。
在根文件系统目录下:cp /etc/mime.types etc/
运行BOA
开发板操作:
[root@~]#/bin/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
或是用户设置错误等等,都可以查到。
Q: 无法启动 Boa, error log 显示 “boa.c:266.icky Linux kernel bug!:No such file”
A:修改 src/boa.c,将以下判断注释掉:
/*if (setuid(0) != -1) {
DIE("icky Linux kernel bug!");
}*/
重新编译
Q:无法启动 Boa,error log 显示 “boa.c:211 - getpwuid….略”
A:修改 src/boa.c,将以下判断注释掉:
/*if (passwdbuf == NULL) {
DIE("getpwuid");
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE("initgroups");
}*/
重新编译
功能测试
静态网页测试
编写了一个简单的测试HTML程序,并存入根文件系统的 /var/www 目录下,直接在浏览器中输入开发板的 IP 地址 192.168.10.122/aa.html
出现静态页面,配置成功