嵌入式WEB伺服器BOA的移植方法(二)

來源:互聯網
上載者:User
  嵌入式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的應用開發,敬請關注!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.