嵌入式WEB伺服器BOA的移植方法(二)
作者:李駒光、鄭耿
本文摘自作者《嵌入式Linux系統開發詳解-基於EP93XX系列ARM》一書的相關章節。
第三步就是測試Boa能否正常工作,靜態HTML頁面能否正常訪問,CGI指令碼能否正常運行,一般採用NFS方式來進行測試工作,可以將嵌入式目標系統上 的/etc目錄拷貝到主機的NFS共用目錄下,然後將NFS共用目錄下的etc目錄重新NFS mount為目標系統上的/etc目錄。這樣就可以在主機上對etc目錄下的各種設定檔,如進行修改而立刻在目標系統上生效。
假設主機/nfs目錄為共用目錄,在其下面建立一個www子目錄作為Web網站的主目錄,其內容如下:
# ls
cgi-bin images index.html
index.html為測試首頁面,images為存放各種圖片的子目錄,cgi-bin為CGI指令碼的存放目錄。根據樣本boa.conf的配置,目前 HTML文檔的主目錄為/var/www,CGI指令碼目錄為/var/www/cgi-bin,則運行以下命令將主機的/nfs/www目錄mount成 目標板上的/var/www目錄。然後就可以運行boa了:
# mount -t nfs 192.168.67.1:/nfs/www /var/www -o nolock
# boa
在工作站上運行瀏覽器進行測試,在地址欄輸入目標系統IP,即http://192.168.67.16 ,可以看到相關頁面,表示靜態HTML頁面測試通過。
接下來進行CGI指令碼的測試,我們需要一個測試用的CGI指令碼。可以寫個最簡單的Hello World程式,範例程式碼如下
#include <stdio.h>
void main() {
printf("Content-type: text/html/n/n") ;
printf("<html>/n") ;
printf("<head><title>CGI Output</title></head>/n") ;
printf("<body>/n") ;
printf("<h1>Hello, world.</h1>/n") ;
printf("</body>/n") ;
printf("</html>/n") ;
exit(0) ;
}
然後進行交叉編譯,將得到的helloworld.cgi拷貝到主機的/nfs/www/cgi-bin目錄下。
#arm-linux-gcc -o helloworld.cgi helloworld.c
#cp helloworld.cgi /nfs/www/cgi-bin
在瀏覽器地址欄輸入http://192.168.67.16/cgi-bin/helloworld.cgi,可以看到相關頁面,表示CGI指令碼測試通過。
現在我們已經可以讓Boa在嵌入式目標系統上正常工作了,嵌入式Web伺服器移植成功。
在以上的移植過程中,最好設定boa.conf中的錯誤記錄檔檔案ErrorLog,允許Boa記錄錯誤資訊;
測試靜態HTML頁面和CGI指令碼時,不管結果如何,最好都查看錯誤記錄檔檔案;
CGI指令碼測試很容易發生許可權不夠的錯誤,要保證Boa訪問的主目錄、CGI指令碼目錄以及臨時檔案目錄(如果沒有設定TMP環境變數時,預設是/tmp目錄),都必須能被Boa運行時所代表的使用者完全訪問,該使用者由boa.conf中的User指出。
下一部分的內容為基於WEB的應用開發,敬請關注!