嵌入式WEB服务器BOA的移植方法(二)

2019-07-13 06:35发布

 嵌入式WEB服务器BOA的移植方法(二)
作者:李驹光、郑耿
本文摘自作者《嵌入式Linux系统开发详解-基于EP93XX系列ARM》一书的相关章节。

   第三步就是测试Boa能否正常工作,静态HTML页面能否正常访问,CGI脚本能否正常运行,一般采用NFS方式来进行测试工作,可以将嵌入式目标系统上 的/etc目录拷贝到主机的NFS共享目录下,然后将NFS共享目录下的etc目录重新NFS mount为目标系统上的/etc目录。这样就可以在主机上对etc目录下的各种配置文件,如进行修改而立刻在目标系统上生效。   假设主机/nfs目录为共享目录,在其下面建立一个www子目录作为Web站点的主目录,其内容如下:
# ls
cgi-bin  images index.html
   index.html为测试主页面,images为存放各种图片的子目录,cgi-bin为CGI脚本的存放目录。根据示例boa.conf的配置,目前 HTML文档的主目录为/var/www,CGI脚本目录为/var/www/cgi-bin,则运行以下命令将主机的/nfs/www目录mount成 目标板上的/var/www目录。然后就可以运行boa了:
# mount -t nfs 192.168.67.1:/nfs/www /var/www -o nolock
# boa
在工作站上运行浏览器进行测试,在地址栏输入目标系统IP,即http://192.168.67.16 ,可以看到相关页面,表示静态HTML页面测试通过。     接下来进行CGI脚本的测试,我们需要一个测试用的CGI脚本。可以写个最简单的Hello World程序,示例代码如下
#include
void main() {
    printf("Content-type: text/html/n/n") ;
    printf("/n") ;
    printf("CGI Output/n") ;
    printf("/n") ;
    printf("

Hello, world.

/n") ;
    printf("/n") ;
    printf("/n") ;
    exit(0) ;
}
   然后进行交叉编译,将得到的helloworld.cgi拷贝到主机的/nfs/www/cgi-bin目录下。
#arm-linux-gcc -o helloworld.cgi helloworld.c
#cp helloworld.cgi /nfs/www/cgi-bin
在浏览器地址栏输入http://192.168.67.16/cgi-bin/helloworld.cgi,可以看到相关页面,表示CGI脚本测试通过。   现在我们已经可以让Boa在嵌入式目标系统上正常工作了,嵌入式Web服务器移植成功。
在以上的移植过程中,最好设定boa.conf中的错误日志文件ErrorLog,允许Boa记录错误信息;
测试静态HTML页面和CGI脚本时,不管结果如何,最好都查看错误日志文件;
CGI脚本测试很容易发生权限不够的错误,要保证Boa访问的主目录、CGI脚本目录以及临时文件目录(如果没有设置TMP环境变量时,缺省是/tmp目录),都必须能被Boa运行时所代表的用户完全访问,该用户由boa.conf中的User指出。
  下一部分的内容为基于WEB的应用开发,敬请关注!