zedboard提供的demo系统很迷你,但是也能移植嵌入式Web服务器的。这里就移植boa服务器。
1.下载Boa服务器源代码(安装好了交叉编译器)
http://www.boa.org/,选择最后一个发布的版本0.94.13
tar -xzvf boa-0.94.13.tar.gz -C /home/xzy/sdb1/boa/
目录自己选择,要安装好交叉编译器
2.修改
进入解压后的src这个文件夹,执行./configure,如果没有可执行权限的话用chmod就可以了。
修改Makefile 输入 vim Makefile
找到CC=gcc,替换成我们的交叉编辑环境。 CC=arm-xilinx-linux-gnueabi-gcc
找到CPP=gcc -E,替换成我们的交叉编辑环境。 CC=arm-xilinx-linux-gnueabi-g++
3.改bug
注释下面这段代码,对应225,226,227.
4.修改compat.h
#define TIMEZONE_OFFSET(foo) foo## ->tm_gmtoff,修改
#define TIMEZONE_OFFSET(foo) foo ->tm_gmtoff
5.make
报错1,yacc -d boa_grammar.y make:yacc:command not found
解决方法apt-get install bison
在make 报错2,y.tab.c:In function 'yyparse'
解决方法 apt-get install flex
make ,成功了
make成功之后,运行如下命令去除可执行文件的冗余信息:
arm-xilinx-linux-gnueabi-strip boa
6配置Boa服务器
在源码目录下面可以找到一个boa.conf,我们在这个基础上修改配置。这个配置参考书上的。
User nobody 改为User 0
Group nobody 改为Group 0
ServerName 这个可以自己修改,我没有修改
#DirectoryMaker /usr/lib/boa/boa_indexer 这个原本是没有注释项的,
这里配置好的一些目录必须要保证其他的辅助文件和设置和这里相符,如我们要在demo系统中创建一些目录,下面会创建。另外将可执行文件boa,配置文件boa.conf,mime.types(在linux主机下的/etc下)拷贝到U盘,因为我还没有单间NFS服务器,所以要借助U盘。在新建一个index.html文件。
7.Boa最后的测试
7.1 启动系统,挂载U盘,mount /dev/sda1 /opt/
7.2 新建目录 mkdir -p /etc/boa /var/log/boa /var /www/cgi-bin
7.3 拷贝文件到相应目录
拷贝配置文件 cp boa.conf /etc/boa/
拷贝 cp mime.types /etc/
7.4 新建两个log文件 vi /var/log/boa/error_log /var/log/boa/access_log 不输入任何东西,保存就可以了。
7.5 chmod 777 index.html,并且拷贝到 cp index.html /var/www/
7.6 由于我的ip和电脑的ip不在一个网段,更改开发板的ip,ifconfig eth0 202.38.214.211
可以在运行cmd命令(pc机)来ping一下,看是否能ping通。
7.7 在U盘中不是还一个boa可执行文件没用上嘛,现在是他用上的时候了, 输入 ./boa &
7.8 在浏览器中输入202.38.214.211
可以看到成功运行了,ps:在书上有提到运行./boa &的时候会看到一些信息,我没有看到。
另外开发板一掉电,那些新建的目录就没有了,这个时候就可以用我们之前的软件开机运行的那个方法,重新制作出新的文件系统压缩镜像,也可以编写一个启动脚本(这个有待尝试)。
8.CGI小尝试
index.html源码为
<html> <head> <title>Zedboard WebServer Demo </title> </head> <body> <h1>hello 214!hello xzy!</h1> <p><a href="./cgi-bin/a.out">cgi in the boa server</a></p> </body> </html>
主要是比上面添加了<p><a href="./cgi-bin/a.out">cgi in the boa server</a></p>
CGI源码
对CGI源码进行交叉编译,然后放入zedboard的/var/www/cgi-bin目录下即可,原来的index.html用上面的index.html代替,其他都一样。效果如下:
点击上面的链接:出现
当用户通过Boa服务器访问到index.html网页时,单击CGI链接将可以访问到由上述C语言所编写的简易网页。