一、Boa程序的移植
1、下載Boa源碼
下載地址:
http://www.boa.org/
目前最新發行版本: 0.94.13 (幾年沒更新版本了)
下載 boa-0.94.13.tar.gz,
注意:若從boa上下載的是boa-0.94.13.tar.tar,解壓方式一樣
解壓:
|
2、生成Makefile文件
進入boa-
0.
94.
13,
直接運行src/configure文件
|
3、修改Makefile文件(注意:必須用cross-2.95.3, 如使用3.4.1、4.1.1等等會出錯)
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
4、交叉編譯
|
5、去除調試信息,減小體積。(可選)
|
6、將編譯好的程序放入根文件系統的/bin目錄下。
|
二、配置Boa
Boa需要在/etc目錄下建立一個boa目錄,裏面放入Boa的主要配置文件boa.conf。 在Boa源碼目錄下已有一個示例boa.conf ,可以在其基礎上進行修改。
|
1、Group的修改
爲 Group user (開發板上有的組)
修改 User nobody
爲 User boa (user組中的一個成員)
|
2、ScriptAlias的修改
修改 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
爲 ScriptAlias /cgi-bin/ /var/www/cgi-bin/
這是在設置CGI的目錄,你也可以設置成別的目錄。比如用戶文件夾下的某個目錄。
3、ServerName的設置
修改 #ServerName
www.your.org.here
爲 ServerName
www.your.org.here
注意:該項默認爲未打開,執行Boa會異常退出,提示“gethostbyname::No such file or directory”,所以必須打開。其它默認設置即可。你也可以設置爲你自己想要的名字。比如我設置爲: ServerName tekkaman2440
此外,還需要:
將mime.types 文件複製/etc 目錄下,通常可以從linux主機的 /etc目錄下直接複製即可。
(以下配置和boa.conf 的配置有關)
創建日誌文件所在目錄/var/log/boa
創建HTML文檔的主目錄/var/www
創建CGI腳本所在錄 /var/www/cgi-bin
|
三、運行Boa
開發板操作:
[root@~]# boa
如果發現boa沒有運行,則可以在開發板的/var/log/boa/error_log文件中找原因。
比如端口已被其他程序佔用:
或是用戶設置錯誤等等,都可以查到。 |
四、功能測試
靜態網頁測試
將靜態網頁存入根文件系統的/var/www 目錄下(可以將主機 /usr/share/doc/HTML/目錄下的index.html、homepage.css和img、stylesheet-images目錄複製到/var/www目錄下)
我參考《嵌入式Web服務器移植 》 的做法如下:
在根文件系統的/var 目錄下
|
直接在瀏覽器中輸入開發板的IP地址(比如我的是http://192.168.1.2 ) ,出現fedora的歡迎網頁。靜態HTML調試成功。
CGI功能測試
1、編寫HelloworldCGI.c程序
[tekkamanninja@Tekkaman-Ninja source]$ vi helloworldCGI.c
(主程序的程序開頭一定要用Tab,而不是空格,不然編譯可能不通過)
|
2.交叉編譯生成CGI程序
|
將helloworldCGI 拷貝至根文件系統的/var/www/cgi-bin/下
|
3.測試
瀏覽器輸入
http://192.168.1.2/cgi-bin/helloworldCGI
網頁出現 Hello,world. 調試成功!
我遇到的問題:
1、Could not chdir to "/etc/boa": aborting
因爲板子上 /etc 不可寫 ,所以就改文件了
修改boa-0.94.13/src/defines.h 第30行:將/etc/boa 改爲你自己的目錄 我的是 /mnt/yaffs/boa。
2、log.c:73 - unable to dup2 the error log: Bad file
修改boa-0.94.13/src/log.c 第72-74行:將 該if 語句註釋掉
3、boa.c:226 - icky Linux kernel bug!: No such file o...
修改boa-0.94.13/src/boa.c 第225-227行:將該 if 語句註釋掉
這樣編譯、修改、編譯了n次之後終於搞定!
另外:
關於boa.conf 文件的問題直接貼出我的:
Port 80
User root
Group root
ErrorLog /var/log/boa/error_log
ServerName 10.10.19.123
DocumentRoot /mnt/yaffs/boa/www
UserDir public_html
DirectoryIndex index.html
DirectoryMaker /mnt/yaffs/boa/boa_indexer
KeepAliveMax 1000
KeepAliveTimeout 10
MimeTypes /mnt/yaffs/boa/mime.types
DefaultType text/plain
CGIPath /bin:/usr/bin:/usr/local/bin
Alias /doc /usr/doc
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
由於板子重啓之後,boa.conf的內容開頭就變了,boa無法運行, 我在開頭和末尾都加了很多行無用的註釋,這個問題就解決了!