一、Boa程序的移植
1、下載Boa源碼
??? 下載地址: http://www.boa.org/
??? 目前最新發(fā)行版本: 0.94.13?? (幾年沒(méi)更新版本了)
??? 下載 boa-0.94.13.tar.gz,
注意:若從boa上下載的是boa-0.94.13.tar.tar,解壓方式一樣
??? 解壓:
?
2、生成Makefile文件
???進(jìn)入boa-0.94.13,直接運(yùn)行src/configure文件
[tekkamanninja@Tekkaman-Ninja src]$./configure
?
3、修改Makefile文件(注意:必須用cross-2.95.3, 如使用3.4.1、4.1.1等等會(huì)出錯(cuò)) 4、交叉編譯
[tekkamanninja@Tekkaman-Ninja src]$ make
?
5、去除調(diào)試信息,減小體積。(可選)
[tekkamanninja@Tekkaman-Ninja src]$ /home/tekkamanninja/working/source/2.95.3/bin/arm-linux-strip boa
?
6、將編譯好的程序放入根文件系統(tǒng)的/bin目錄下。
[tekkamanninja@Tekkaman-Ninja src]$ cp boa /home/tekkamanninja/working/nfs/rootfs/bin/
???
?
二、配置Boa
Boa需要在/etc目錄下建立一個(gè)boa目錄,里面放入Boa的主要配置文件boa.conf。在Boa源碼目錄下已有一個(gè)示例boa.conf,可以在其基礎(chǔ)上進(jìn)行修改。
?
1、Group的修改
為 Group user(開(kāi)發(fā)板上有的組)
修改 User nobody
為 User boa (user組中的一個(gè)成員)
[root@~]#adduser -g user boa
Changing password for boa
Enter the new password (minimum of 5, maximum of 8 characters)
Please use a combination of upper and lower case letters and numbers.
Enter new password:
Bad password: too short.
Warning: weak password (continuing).
Re-enter new password:
passwd[820]: password for `boa' changed by user `root'
Password changed.
[root@~]#
2、ScriptAlias的修改
修改 ScriptAlias /cgi-bin/? /usr/lib/cgi-bin/
為 ScriptAlias /cgi-bin/? /var/www/cgi-bin/
這是在設(shè)置CGI的目錄,你也可以設(shè)置成別的目錄。比如用戶文件夾下的某個(gè)目錄。
3、ServerName的設(shè)置
修改 #ServerName www.your.org.here
為 ServerName www.your.org.here
注意:該項(xiàng)默認(rèn)為未打開(kāi),執(zhí)行Boa會(huì)異常退出,提示“gethostbyname::No such file or directory”,所以必須打開(kāi)。其它默認(rèn)設(shè)置即可。你也可以設(shè)置為你自己想要的名字。比如我設(shè)置為:ServerName tekkaman2440
此外,還需要:
將mime.types文件復(fù)制/etc目錄下,通常可以從linux主機(jī)的 /etc目錄下直接復(fù)制即可。
(以下配置和boa.conf的配置有關(guān))
創(chuàng)建日志文件所在目錄/var/log/boa
創(chuàng)建HTML文檔的主目錄/var/www
創(chuàng)建CGI腳本所在錄 /var/www/cgi-bin
?
[tekkamanninja@Tekkaman-Ninja log]$ mkdir -m 777 boa
[tekkamanninja@Tekkaman-Ninja log]$ cd ..
[tekkamanninja@Tekkaman-Ninja var]$ mkdir -m 777 www
[tekkamanninja@Tekkaman-Ninja var]$ mkdir -m 777 www/cgi-bin
[tekkamanninja@Tekkaman-Ninja var]$ cd ..
[tekkamanninja@Tekkaman-Ninja rootfs]$ cp /etc/mime.types etc/
?
三、運(yùn)行Boa
開(kāi)發(fā)板操作:
[root@~]#boa
如果發(fā)現(xiàn)boa沒(méi)有運(yùn)行,則可以在開(kāi)發(fā)板的/var/log/boa/error_log文件中找原因。
比如端口已被其他程序占用:
[root@~]#cat /var/log/boa/error_log
[20/Feb/2008:21:21:57 +0000] boa.c:194 - unable to bind: Address already in use
?
或是用戶設(shè)置錯(cuò)誤等等,都可以查到。
?
?
四、功能測(cè)試
靜態(tài)網(wǎng)頁(yè)測(cè)試
將靜態(tài)網(wǎng)頁(yè)存入根文件系統(tǒng)的/var/www目錄下(可以將主機(jī) /usr/share/doc/HTML/目錄下的index.html、homepage.css和img、stylesheet-images目錄復(fù)制到/var/www目錄下)
我參考《嵌入式Web服務(wù)器移植 》的做法如下:
在根文件系統(tǒng)的/var目錄下
[tekkamanninja@Tekkaman-Ninja var]$ cp /usr/share/doc/HTML/index.html www/
[tekkamanninja@Tekkaman-Ninja var]$ cp -r /usr/share/doc/HTML/img www/
[tekkamanninja@Tekkaman-Ninja var]$ cp /usr/share/doc/HTML/homepage.css www/
[tekkamanninja@Tekkaman-Ninja var]$ cp -r /usr/share/doc/HTML/stylesheet-images www/
?
直接在瀏覽器中輸入開(kāi)發(fā)板的IP地址(比如我的是http://192.168.1.2) ,出現(xiàn)fedora的歡迎網(wǎng)頁(yè)。靜態(tài)HTML調(diào)試成功。
CGI功能測(cè)試
1、編寫(xiě)HelloworldCGI.c程序
[tekkamanninja@Tekkaman-Ninja source]$ vi helloworldCGI.c
(主程序的程序開(kāi)頭一定要用Tab,而不是空格,不然編譯可能不通過(guò))
?
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
????????printf("Content-type: text/html\n\n");
????????printf("\n");
????????printf("
????????printf("\n");
????????printf("Hello,world.
\n");
????????printf("\n");
????????printf("\n");
????????exit(0);
}
?
2.交叉編譯生成CGI程序?
[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
?
將helloworldCGI 拷貝至根文件系統(tǒng)的/var/www/cgi-bin/下
?
[tekkamanninja@Tekkaman-Ninja source]$ cp helloworldCGI ../nfs/rootfs/var/www/cgi-bin/
?
3.測(cè)試
瀏覽器輸入?? http://192.168.1.2/cgi-bin/helloworldCGI
網(wǎng)頁(yè)出現(xiàn) Hello,world. 調(diào)試成功!
?
[tekkamanninja@Tekkaman-Ninja src]$ cd ../..
[tekkamanninja@Tekkaman-Ninja source]$ cd ../nfs/rootfs/etc/
[tekkamanninja@Tekkaman-Ninja etc]$ mkdir boa
[tekkamanninja@Tekkaman-Ninja etc]$ chmod 777 boa/
[tekkamanninja@Tekkaman-Ninja etc]$ cd boa
[tekkamanninja@Tekkaman-Ninja boa]$ kwrite boa.conf
?
CC = /home/tekkamanninja/working/source/2.95.3/bin/arm-linux-gcc
CPP = /home/tekkamanninja/working/source/2.95.3/bin/arm-linux-gcc -E
?
[tekkamanninja@Tekkaman-Ninja source]$tar x*** boa-0.94.13.tar.gz
評(píng)論
查看更多