关闭

基于BOA的WEB服务的搭建

标签: 服务器web服务器交叉编译
404人阅读 评论(0) 收藏 举报
分类:
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 

CPP=arm-linux-gcc –E

测试为本机的话就不用修改

1.6、修改defines.h文件 
将#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,可以看到效果。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:49661次
    • 积分:1028
    • 等级:
    • 排名:千里之外
    • 原创:48篇
    • 转载:34篇
    • 译文:1篇
    • 评论:1条
    文章分类
    最新评论