转自:http://hi.baidu.com/%D2%BC%BF%DA%B3%BE%B0%A3/blog/item/02cf3efa574652d60b46e010.html
BOA+PHP+SQLite移植三部曲之BOA
第一部:BOA的移植
基于嵌入式的WEB服务器(boa),boa在嵌入式Linux上的移植
开发板:PXA270-RP (Linux 2.6.9)
宿主机: Centos 6.0 (linux 2.6.32)
交叉编译器:arm-linux-gcc 3.4.6
开发板IP地址:192.168.0.50
宿主机IP地址:192.168.0.100
开发板挂载宿主机的根目录命令:
[root@Intel /]mount -o soft,timeo=100,rsize=1024 192.168.0.100:/ /mnt
第一步:Boa程序的移植
1、下载Boa源码
下载地址: http://www.boa.org/
下载 boa-0.94.13.tar.gz 解压:
[root@localhost /]# tar -xzvf boa-0.94.13.tar.gz
2、生成Makefile文件
[root@localhost /]# cd boa-0.94.13/src/
[root@localhost src]# ./configure
在运行之前,查看一下是否具有可执行权限
3、修改Makefile文件
把CC = gcc
改为 CC = arm-linux-gcc
把CPP = gcc - E
改为CPP = arm-linux-gcc -E
4、编译
[root@localhost src]# make
过程中没有出现问题。
第二步:Boa的配置
在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。在Boa源码目录下已有一个示例boa.conf,可以在其基础上进行修改
1、Group的修改
修改 Group nogroup
为 Group 0
2、ScriptAlias的修改
修改 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
为 ScriptAlias /cgi-bin/ /var/www/cgi-bin/
3、ServerName的设置
修改 ServerName www.your.org.here
为 ServerName 192.168.0.50
注意:该项默认为未打开,执行Boa会异常退出,所以必须打开,把前边#号去掉,其它默认设置即可。
第三步:Boa的执行
成功配置以后,还需要创建日志文件所在目录/var/log/boa,创建HTML文档的主目录/var/www,将静态网页存入该目录下(可以将主机 /usr/share/doc/HTML/目录下的index.html文件和img目录复制到/var/www目录下),创建CGI脚本所在录/var/www/cgi-bin,将cgi的脚本存放在该目录下。另外还要将mime.types文件复制到开发板/etc目录下,通常可以从linux主机的/etc目录下直接复制即可。
遇到的错误之一:
注意:这些目录都是在开发板上创建的
之前没看清楚文档的意思,在宿主机上建的,一直不成功,原因就在这里
在开发板上(minicom)执行以下命令:
以boa-0.94.13放在宿主机的根目录下为例
[root@Intel /]# mkdir /etc/boa
[root@Intel /]# cp /mnt/boa-0.94.13/boa.conf /etc/boa/
[root@Intel /]# mkdir /var/log
[root@Intel /]# mkdir /var/log/boa
[root@Intel /]# mkdir /var/www
[root@Intel /]# cp /mnt/index.html /var/www/
[root@Intel /]# cp -r /mnt/img /var/www/
[root@Intel /]# mkdir /var/www/cgi-bin
[root@Intel /]# cp /mnt/etc/mime.types /etc/
[root@Intel /]# cp /mnt/boa-0.94.13/src/boa /
执行:[root@Intel /]# ./boa &
直接在宿主机浏览器中输入http://192.168.0.50,出现Centos6.0的欢迎网页。表示静态HTML调试成功。
改正过前面的错误之后,静态页面调试成功!
第四步:CGI脚本测试
1、编写Helloworld.c程序
#include
int main(void)
{
printf("Content-type: text/html
");
printf(" ");
printf(" ");
printf(" ");
printf(" Hello,world.");
printf(" ");
printf(" ");
exit(0);
}
交叉编译生成helloworld.cgi
# arm-linux-gcc -o helloworld.cgi helloworld.c
将helloworld.cgi拷贝至/var/www/cgi-bin/下,主机浏览器输入:
http://192.168.0.50/cgi/bin/helloworld.cgi,
按回车,出现hellow,world! 表示成功!
遇到的错误之二:
注意:CGI程序调试了很多遍,一直不成功,执行时网页中出现“502 Bad Gateway”,最终对比了PHP移植过程中的代码,在以上代码中添加
后,执行成功。