一、Boa程序的移植<br /><br />1、下载Boa源码<br /> 下载地址: http://www.boa.org/<br /> 目前最新发行版本: 0.94.13 (几年没更新版本了)<br /> 下载 boa-0.94.13.tar.gz,<br /><br />注意:若从boa上下载的是boa-0.94.13.tar.tar,解压方式一样<br /> 解压: [tekkamanninja@Tekkaman-Ninja source]$tar xzf boa-0.94.13.tar.gz<br /><br />2、生成Makefile文件<br /> 进入boa-0.94.13,直接运行src/configure文件 [tekkamanninja@Tekkaman-Ninja src]$./configure<br /><br />3、修改Makefile文件(注意:必须用cross-2.95.3, 如使用3.4.1、4.1.1等等会出错) CC = /home/tekkamanninja/working/source/2.95.3/bin/arm-linux-gcc <br />CPP = /home/tekkamanninja/working/source/2.95.3/bin/arm-linux-gcc -E<br /><br />4、交叉编译 [tekkamanninja@Tekkaman-Ninja src]$ make<br /><br />5、去除调试信息,减小体积。(可选) [tekkamanninja@Tekkaman-Ninja src]$ /home/tekkamanninja/working/source/2.95.3/bin/arm-linux-strip boa<br /><br />6、将编译好的程序放入根文件系统的/bin目录下。 [tekkamanninja@Tekkaman-Ninja src]$ cp boa /home/tekkamanninja/working/nfs/rootfs/bin/<br /><br />--------------------------------------------------------------------------------<br />二、配置Boa<br /><br />Boa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。在Boa源码目录下已有一个示例boa.conf,可以在其基础上进行修改。 [tekkamanninja@Tekkaman-Ninja src]$ cd ../..<br />[tekkamanninja@Tekkaman-Ninja source]$ cd ../nfs/rootfs/etc/<br />[tekkamanninja@Tekkaman-Ninja etc]$ mkdir boa<br />[tekkamanninja@Tekkaman-Ninja etc]$ chmod 777 boa/<br />[tekkamanninja@Tekkaman-Ninja etc]$ cd boa<br />[tekkamanninja@Tekkaman-Ninja boa]$ kwrite boa.conf<br /><br />1、Group的修改<br /><br />修改 Group nogroup<br />为 Group user(开发板上有的组)<br />修改 User nobody<br />为 User boa (user组中的一个成员)<br />根据你的开发板的情况设定。一定要存在的组和用户。<br /><br />以下是我在开发板上的操作:<br />[root@~]#adduser -g user boa<br />Changing password for boa<br />Enter the new password (minimum of 5, maximum of 8 characters)<br />Please use a combination of upper and lower case letters and numbers.<br />Enter new password:<br />Bad password: too short.<br /><br />Warning: weak password (continuing).<br />Re-enter new password:<br />passwd[820]: password for `boa' changed by user `root'<br />Password changed.<br />[root@~]#<br /><br />2、ScriptAlias的修改<br /><br />修改 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/<br />为 ScriptAlias /cgi-bin/ /var/www/cgi-bin/<br /><br />这是在设置CGI的目录,你也可以设置成别的目录。比如用户文件夹下的某个目录。<br /><br />3、ServerName的设置<br /><br />修改 #ServerName www.your.org.here<br />为 ServerName www.your.org.here<br /><br />注意:该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or directory”,所以必须打开。其它默认设置即可。你也可以设置为你自己想要的名字。比如我设置为:ServerName tekkaman2440<br /><br />此外,还需要:<br /><br />将mime.types文件复制/etc目录下,通常可以从linux主机的 /etc目录下直接复制即可。<br /><br />(以下配置和boa.conf的配置有关)<br /><br />创建日志文件所在目录/var/log/boa<br /><br />创建HTML文档的主目录/var/www<br /><br />创建CGI脚本所在录 /var/www/cgi-bin<br /><br />[tekkamanninja@Tekkaman-Ninja log]$ mkdir -m 777 boa<br />[tekkamanninja@Tekkaman-Ninja log]$ cd ..<br />[tekkamanninja@Tekkaman-Ninja var]$ mkdir -m 777 www<br />[tekkamanninja@Tekkaman-Ninja var]$ mkdir -m 777 www/cgi-bin<br />[tekkamanninja@Tekkaman-Ninja var]$ cd ..<br />[tekkamanninja@Tekkaman-Ninja rootfs]$ cp /etc/mime.types etc/<br /><br />三、运行Boa<br /><br />开发板操作:<br /><br />[root@~]#boa<br /><br />如果发现boa没有运行,则可以在开发板的/var/log/boa/error_log文件中找原因。<br />比如端口已被其他程序占用: [root@~]#cat /var/log/boa/error_log<br />[20/Feb/2008:21:21:57 +0000] boa.c:194 - unable to bind: Address already in use<br /><br />或是用户设置错误等等,都可以查到。<br />--------------------------------------------------------------------------------<br /><br />四、功能测试<br /><br />静态网页测试<br /><br />将静态网页存入根文件系统的/var/www目录下(可以将主机 /usr/share/doc/HTML/目录下的index.html、homepage.css和img、stylesheet-images目录复制到/var/www目录下)<br /><br />我参考《嵌入式Web服务器移植 》的做法如下:<br /><br />在根文件系统的/var目录下 [tekkamanninja@Tekkaman-Ninja var]$ cp /usr/share/doc/HTML/index.html www/<br />[tekkamanninja@Tekkaman-Ninja var]$ cp -r /usr/share/doc/HTML/img www/<br />[tekkamanninja@Tekkaman-Ninja var]$ cp /usr/share/doc/HTML/homepage.css www/<br />[tekkamanninja@Tekkaman-Ninja var]$ cp -r /usr/share/doc/HTML/stylesheet-images www/<br /><br />直接在浏览器中输入开发板的IP地址(比如我的是http://192.168.1.2) ,出现fedora的欢迎网页。静态HTML调试成功。<br /><br />CGI功能测试<br /><br />1、编写HelloworldCGI.c程序<br /><br />[tekkamanninja@Tekkaman-Ninja source]$ vi helloworldCGI.c<br /><br />(主程序的程序开头一定要用Tab,而不是空格,不然编译可能不通过)<br /><br />#include<br />#include<br />int main(void)<br />{<br /> printf('Content-type: text/html\n\n');<br /> printf('\n');<br /> printf('\n');<br /> printf('\n');<br /> printf('<br /><br />Hello,world.<br />\n');<br /> printf('\n');<br /> printf('\n');<br /> exit(0);<br />}<br /><br />2.交叉编译生成CGI程序 <br />[tekkamanninja@Tekkaman-Ninja source]$ /home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-gcc -o helloworldCGI helloworldCGI.c<br /><br />将helloworldCGI 拷贝至根文件系统的/var/www/cgi-bin/下<br /><br />[tekkamanninja@Tekkaman-Ninja source]$ cp helloworldCGI ../nfs/rootfs/var/www/cgi-bin/<br /><br />3.测试<br /><br />浏览器输入<br /> http://192.168.1.2/cgi-bin/helloworldCGI <br />网页出现 Hello,world. 调试成功! |
|