1、BOA服务程序编译
1.1、解压下载好的BOA压缩包
tar xzvf boa-0.94.13.tar.bz2
1.2、进入解压后的目录
cd boa-0.94.13
1.3、先BOA源码包的src目录(下面操作均在该目录下进行)
cd src
1.4、利用configure 工具配置生成Makefile文件
./configure
1.5、修改生成的Makefile文件(设置为交叉编译器)将
CC = gcc
CPP = gcc –E
修改为:
CC=arm-linux-gcc
将#define SERVER_ROOT “/etc/boa”修改为#define SERVER_ROOT “/gec/web”
该处定义的是WEB服务器的文件根目录,跟boa.conf文件中的DocumentRoot一致即可。
1.7、修改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
1.8、修改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
1.9、编译boa
Make
至此,在src目录中将得到交叉编译后的boa程序,可以使用以下方法缩小程序的体积
arm-linux-strip boa //去掉相关调试信息,对交叉编译生成的boa程序瘦身
2、BOA服务器运行环境搭建
2.1、在解压后的boa源码目录下有个boa.conf文件,根据GEC2440根文件系统的设计,对它进行如下修改:
2.1.1、修改用户与用户组信息
1)、User 的修改:
将User nobody 修改为User 0
2)、Group的修改:
将Group nogroup修改为Group 0
在根文件系统中的/etc/passwd文件中没有nobody 用户,所以设成0。
在根文件系统中的/etc/group文件中没有nogroup组,所以设成0。
2.1.2、相关日志文件存放位置项,保留将保存日志文件,根据需要可以选择是否注释掉
#ErrorLog /var/log/boa/error_log
#AccessLog /var/log/boa/access_log
2.1.3、打开ServerName的设置:
将#ServerName www.your.org.here前面的#号去掉,该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or directory”,所以必须打开。
2.1.4、将DirectoryMaker /usr/lib/boa/boa_indexer注释掉。
2.1.5、将MimeTypes /etc/mime.types修改为:MimeTypes /gec/web/mime.types
2.1.6、将DefaultType text/plain修改为:DefaultType text/html。
2.1.7、将Alias /doc /usr/doc注释掉。
2.1.8、SccriptAlias的设置:
将ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/修改为:
ScriptAlias /cgi-bin/ /gec/web/cgi-bin/
至此,BOA服务器配置已经完成,接下来完善根文件系统即可在GEC2440上运行。
2.2、完善根文件系统
2.2.1、在开发板的根文件系统根目录创建必要的BOA服务器运行目录:
在根文件系统的根目录下创建/gec/web目录:
cd /root/rootfs
mkdir -p gec/web
进入到创建好的web目录下,创建cgi-bin目录:
mkdir cgi-bin
2.2.2、把交叉编译生成的boa程序和配置好的boa.conf文件及主机下的/etc/mime.types文件都复制到板上的/gec/web目录下,并在该目录下创建一文件index.html,文件内容可以参考如下:
<html>
<head>
<title>BOA TEST</title>
</head>
<body>
<h1>BOA TEST</h1>
</body>
</html>
2.2.3、进入到板上的/gec/web目录下,执行./boa,可以看到如下启动信息:
在主机上启动浏览器,输入URL为 http://192.168.25.150,访问板上的BOA服务。
2.2.4、测试完静态页面后,接下来测试CGI脚本文件:
在主机上创建一文件hello.c,文件内容如下:
#include<stdio.h>
int main()
{
printf("Content-type:text/html\n\n");
printf("<html>\n");
printf("<head><title>BOA 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 –o hello hello.c
然后用交叉编译工具链编译,将得到的hello文件复制到板上的/gec/web/cgi-bin目录下:
在浏览器输入 http://192.168.25.150/cgi-bin/hello,可以看到效果。
1.1、解压下载好的BOA压缩包
tar xzvf boa-0.94.13.tar.bz2
1.2、进入解压后的目录
cd boa-0.94.13
1.3、先BOA源码包的src目录(下面操作均在该目录下进行)
cd src
1.4、利用configure 工具配置生成Makefile文件
./configure
1.5、修改生成的Makefile文件(设置为交叉编译器)将
CC = gcc
CPP = gcc –E
修改为:
CC=arm-linux-gcc
CPP=arm-linux-gcc –E
测试为本机的话就不用修改
将#define SERVER_ROOT “/etc/boa”修改为#define SERVER_ROOT “/gec/web”
该处定义的是WEB服务器的文件根目录,跟boa.conf文件中的DocumentRoot一致即可。
1.7、修改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
1.8、修改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
1.9、编译boa
Make
至此,在src目录中将得到交叉编译后的boa程序,可以使用以下方法缩小程序的体积
arm-linux-strip boa //去掉相关调试信息,对交叉编译生成的boa程序瘦身
2、BOA服务器运行环境搭建
2.1、在解压后的boa源码目录下有个boa.conf文件,根据GEC2440根文件系统的设计,对它进行如下修改:
2.1.1、修改用户与用户组信息
1)、User 的修改:
将User nobody 修改为User 0
2)、Group的修改:
将Group nogroup修改为Group 0
在根文件系统中的/etc/passwd文件中没有nobody 用户,所以设成0。
在根文件系统中的/etc/group文件中没有nogroup组,所以设成0。
2.1.2、相关日志文件存放位置项,保留将保存日志文件,根据需要可以选择是否注释掉
#ErrorLog /var/log/boa/error_log
#AccessLog /var/log/boa/access_log
2.1.3、打开ServerName的设置:
将#ServerName www.your.org.here前面的#号去掉,该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or directory”,所以必须打开。
2.1.4、将DirectoryMaker /usr/lib/boa/boa_indexer注释掉。
2.1.5、将MimeTypes /etc/mime.types修改为:MimeTypes /gec/web/mime.types
2.1.6、将DefaultType text/plain修改为:DefaultType text/html。
2.1.7、将Alias /doc /usr/doc注释掉。
2.1.8、SccriptAlias的设置:
将ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/修改为:
ScriptAlias /cgi-bin/ /gec/web/cgi-bin/
至此,BOA服务器配置已经完成,接下来完善根文件系统即可在GEC2440上运行。
2.2、完善根文件系统
2.2.1、在开发板的根文件系统根目录创建必要的BOA服务器运行目录:
在根文件系统的根目录下创建/gec/web目录:
cd /root/rootfs
mkdir -p gec/web
进入到创建好的web目录下,创建cgi-bin目录:
mkdir cgi-bin
2.2.2、把交叉编译生成的boa程序和配置好的boa.conf文件及主机下的/etc/mime.types文件都复制到板上的/gec/web目录下,并在该目录下创建一文件index.html,文件内容可以参考如下:
<html>
<head>
<title>BOA TEST</title>
</head>
<body>
<h1>BOA TEST</h1>
</body>
</html>
2.2.3、进入到板上的/gec/web目录下,执行./boa,可以看到如下启动信息:
在主机上启动浏览器,输入URL为 http://192.168.25.150,访问板上的BOA服务。
2.2.4、测试完静态页面后,接下来测试CGI脚本文件:
在主机上创建一文件hello.c,文件内容如下:
#include<stdio.h>
int main()
{
printf("Content-type:text/html\n\n");
printf("<html>\n");
printf("<head><title>BOA 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 –o hello hello.c
然后用交叉编译工具链编译,将得到的hello文件复制到板上的/gec/web/cgi-bin目录下:
在浏览器输入 http://192.168.25.150/cgi-bin/hello,可以看到效果。