转自: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\r\n"); 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移植过程中的代码,在以上代码中添加\r\n后,执行成功。 |