[ZLG-ARM] 移植Boa Web服务器到ARM-Linux系统

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

这是什么服务器呢?

  
lpc2410 发表于 2009-7-3 13:07 | 显示全部楼层

有很多东西都不知道了啊

  
chun1chun 发表于 2009-7-18 13:40 | 显示全部楼层

學習了

  
armqt 发表于 2009-7-24 17:30 | 显示全部楼层

路轨哦

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

86

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部