1. 程式人生 > >嵌入式WEB伺服器BOA的移植方法(一)

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

 

作者:李駒光、鄭耿


本文摘自作者《嵌入式Linux系統開發詳解-基於EP93XX系列ARM》一書的相關章節。

   隨著Internet技術的興起,在嵌入式裝置的管理與互動中,基於Web方式的應用成為目前的主流,這種程式結構也就是大家非常熟悉的B/S結構,即在 嵌入式裝置上執行一個支援指令碼或CGI功能的Web伺服器,能夠生成動態頁面,在使用者端只需要通過Web瀏覽器就可以對嵌入式裝置進行管理和監控,非常方 便實用。本節主要介紹這種應用的開發和移植工作。
使用者首先需要在嵌入式裝置上成功移植支援指令碼或CGI功能的Web伺服器,然後才能進行應用程式的開發。
    1、 嵌入式Web伺服器移植  由於嵌入式裝置資源一般都比較有限,並且也不需要能同時處理很多使用者的請求,因此不會使用Linux下最常用的如Apache 等伺服器,而需要使用一些專門為嵌入式裝置設計的Web伺服器,這些Web伺服器在存貯空間和執行時所佔有的記憶體空間上都會非常適合於嵌入式應用場合。
   典型的嵌入式Web伺服器有Boa (www.boa.org)和thttpd (http://www.acme.com/software/thttpd/)等,它們和Apache等高效能的Web伺服器主要的區別在於它們一般是 單程序伺服器,只有在完成一個使用者請求後才能響應另一個使用者的請求,而無法併發響應,但這在嵌入式裝置的應用場合裡已經足夠了。
     我們紹比較常用的Boa伺服器的移植。
     Boa是一個非常小巧的Web伺服器,可執行程式碼只有約60KB。它是一個單任務Web伺服器,只能依次完成使用者的請求,而不會fork出新的程序來處理 併發連線請求。但Boa支援CGI,能夠為CGI程式fork出一個程序來執行。Boa的設計目標是速度和安全,在其站點公佈的效能測試中,Boa的效能 要好於Apache伺服器。
    第一步完成Boa程式的移植。從www.boa.org下載Boa原始碼,當前最新版本為0.94.13,將其解壓並進入原始碼目錄的src子目錄
    # tar xzf boa-0.94.13.tar.gz
    # cd boa-0.94.13/src
生成Makefile檔案
    # ./configure
    修改Makefile檔案,找到CC=gcc,將其改成CC = arm-linux-gcc,再找到CPP = gcc –E,將其改成CPP = arm-linux-gcc –E,並儲存退出。
    然後執行make進行編譯,得到的可執行程式為boa,將除錯資訊剝去,得到的最後程式只有約60KB大小。
    # make
    # arm-linux-strip boa
   第二步完成Boa的配置,使其能夠支援CGI程式的執行。Boa需要在/etc目錄下建立一個boa目錄,裡面放入Boa的主要配置檔案boa.conf。在Boa原始碼目錄下已有一個示例boa.conf,可以在其基礎上進行修改,下面解釋一下該檔案的含義:
#監聽的埠號,預設都是80,一般無需修改
Port 80
# bind呼叫的IP地址,一般註釋掉,表明繫結到INADDR_ANY,通配於伺服器的所有IP地址
#Listen 192.68.0.5
#作為哪個使用者執行,即它擁有該使用者的許可權,一般都是nobody,需要/etc/passwd中有
#nobody使用者
User nobody
#作為哪個使用者組執行,即它擁有該使用者組的許可權,一般都是nogroup,需要在/etc/group文
#件中有nogroup組
Group nogroup
#當伺服器發生問題時傳送報警的email地址,目前未用,註釋掉
#ServerAdmin
[email protected]

#錯誤日誌檔案。如果沒有以/開始,則表示從伺服器的根路徑開始。如果不需要錯誤日誌,則用#/dev/null。在下面設定時,注意一定要建立/var/log/boa目錄
ErrorLog /var/log/boa/error_log
#訪問日誌檔案。如果沒有以/開始,則表示從伺服器的根路徑開始。如果不需要錯誤日誌,則用#/dev/null或直接註釋掉。在下面設定時,注意一定要建立/var/log/boa目錄
#AccessLog /var/log/boa/access_log
#是否使用本地時間。如果沒有註釋掉,則使用本地時間。註釋掉則使用UTC時間
#UseLocaltime
#是否記錄CGI執行資訊,如果沒有註釋掉,則記錄,註釋掉則不記錄
#VerboseCGILogs
#伺服器名字
ServerName www.hyesco.com
#是否啟動虛擬主機功能,即裝置可以有多個網路介面,每個介面都可以擁有一個虛擬的Web服
#務器。一般註釋掉,即不需要啟動
#VirtualHost
#非常重要,HTML文件的主目錄。如果沒有以/開始,則表示從伺服器的根路徑開始。
DocumentRoot /var/www
#如果收到一個使用者請求的話,在使用者主目錄後再增加的目錄名
UserDir public_html
#HTML目錄索引的檔名,也是沒有使用者只指明訪問目錄時返回的檔名
DirectoryIndex index.html
#當HTML目錄沒有索引檔案時,使用者只指明訪問目錄時,boa會呼叫該程式生成索引檔案然後
#返回給使用者,因為該過程比較慢最好不執行,可以註釋掉或者給每個HTML目錄加上#DirectoryIndex指明的檔案
#DirectoryMaker /usr/lib/boa/boa_indexer
#如果DirectoryIndex不存在,並且DirectoryMaker被註釋,那麼就用Boa自帶的索引
#生成程式來生成目錄的索引檔案並輸出到下面目錄,該目錄必須是Boa能讀寫
# DirectoryCache /var/spool/boa/dircache
#一個連線所允許的HTTP持續作用請求最大數目,註釋或設為0都將關閉HTTP持續作用
KeepAliveMax 1000
#HTTP持續作用中伺服器在兩次請求之間等待的時間數,以秒為單位,超時將關閉連線
KeepAliveTimeout 10
#指明mime.types檔案位置。如果沒有以/開始,則表示從伺服器的根路徑開始。可以註釋掉
#避免使用mime.types檔案,此時需要用AddType在本檔案裡指明
MimeTypes /etc/mime.types
#副檔名沒有或未知的話,使用的預設MIME型別
DefaultType text/plain
#提供CGI程式的PATH環境變數值
CGIPath /bin:/usr/bin:/usr/local/bin
#將副檔名和MIME型別關聯起來,和mime.types檔案作用一樣。如果用mime.types
#檔案,則註釋掉,如果不使用mime.types檔案,則必須使用
#AddType application/x-httpd-cgi cgi
#指明文件重定向路徑
#Redirect /bar http://elsewhere/feh/bar
#為路徑加上別名
Alias /doc /usr/doc
#非常重要,指明CGI指令碼的虛擬路徑對應的實際路徑。一般所有的CGI指令碼都要放在實際路徑
#裡,使用者訪問執行時輸入站點+虛擬路徑+CGI指令碼名
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
   使用者可以根據自己需要,對boa.conf進行修改,但必須要保證其他的輔助檔案和設定必須和boa.conf裡的配置相符,不然Boa就不能正常工作。 在上面的例子中,我們還需要建立日誌檔案所在目錄/var/log/boa,建立HTML文件的主目錄/var/www,將mime.types檔案拷貝 到/etc目錄,建立CGI指令碼所在目錄/var/www/cgi-bin/。mime.types檔案用來指明不同副檔名對應的MIME型別,一般 可以直接從Linux主機上拷貝一個,大部分也都是在主機的/etc目錄下。

相關推薦

嵌入式web伺服器boa移植全過程含圖解過程

移植平臺:mini2440(arm9 s3c2440)開發板 ,核心2.6.29   一、boa下載和安裝: 1、修改編譯安裝檔案: 1)在www.boa.org下載boa-0.94.13.tar.gz 並解壓 2)在src目錄下執行./configure生成Ma

嵌入式WEB伺服器BOA移植方法

  作者:李駒光、鄭耿 本文摘自作者《嵌入式Linux系統開發詳解-基於EP93XX系列ARM》一書的相關章節。   隨著Internet技術的興起,在嵌入式裝置的管理與互動中,基於Web方式的應用成為目前的主流,這種程式結構也就是大家非常熟悉的B/S結構,即在 嵌入式裝置上

web伺服器專題:tomcat基礎及模組

Web伺服器專題:Tomcat(一)基礎及模組 針對java系的經典伺服器,打算系統的整理一下Tomcat的機制和一些原理,以此記錄。 插一則題外話,關於tomat這個名字的由來:Tomcat 名稱的由來 關於Tomcat 基礎的 tomcat 內容就不過多贅述了,基本的百度百科都可以看到,在這裡我想從cat

嵌入式web伺服器boa的編譯移植

Linux下Boa伺服器移植,交叉編譯boa併成功移植到FL2440開發板上,並且CGI程式執行正常。 主機環境:redhat9交叉編譯器:arm-linux-gcc 3.4.1 BOA版本:0.94.13平臺:s3c2440一:下載原始碼:從http://www.boa.org/官方網站下載原始碼,並將原

Web網站的測試流程和方法

不同的 ui測試 放置 有時 測試流程 數據 測試的 雲測 切換 近期,Alltesting的眾測平臺  有不少web網站的功能測試項目,像:  農事GERP種植系統   雲測試平臺   頭號專家網項目第三輪功能測試   於是,有些新加入眾測平臺的

嵌入式web伺服器boa -- html網頁設計總結

嵌入式web伺服器boa – html網頁設計總結 (一)頁面分割的實現 四個HTML頁面:index.html(主介面)、top.html、left.html、right.html; 實現在主頁面顯示其餘三個頁面的拼接頁面,也即實現頁面分割; 程式碼實現:

WEB軟體使用者介面測試方法

    在WEB系統開發過程中,需要在三個階段對WEB應用的使用者介面進行軟體測試。在需求分析階段,對介面進行評審,確保與使用者需求及分析結果保持一致;在設計階段,對介面設計部分進行評審,確保以及你個達到了為所有使用者介面建立的通用質量標準,並且正確描述了特定與應用系統的介面

嵌入式Http伺服器BOA移植經驗總結(…

經過2 天的時間,終於將BOA 伺服器移植到了我的DM365 的IPCam 上了!現將個人經驗於大家一起分享! 環境: 主機:ubuntu9.10 交叉編譯工具:arm_v5t_le 目標板:TI 公司的DM365 詳細過程如下: 1. 下載Boa 原始碼 下載地址: http://www.boa.

我的學習方法

職位 代碼 提升自己 語言 做什麽 工資 分配 需要 修正 (本文引用有點亂,大部分都是引用別人的觀點,但是記錄的時候沒記從哪搞的,所以這篇就只好先這樣記著了。。。以後一定記得標明引用地點) 重復性工作占了一大半,周末要加班,怎麽勞逸結合提升自己?既然是重復性工作,就想辦法

java-web中生成文檔

all 檢查 download com ftl 緩沖 getc cor tps 基於Java的解決方案也是很多的,包括使用Jacob、Apache POI、Java2Word、iText等各種方式,其實在從Office 2003開始,就可以將Office文檔轉換成XML文件

Python Web框架之Django初探

python django easy_install pip Python Web框架之Django初探 Django是一個開放源代碼的Web應用框架,由Python寫成。采用了MVC的框架模式,即模型M,視圖V和控制器C。它最初是被開發來用於管理勞倫斯出版集團旗下的一些以新聞內容為主的網站

hibernate框架在eclipse下的配置方法

java、 sql數據庫 文件目錄 測試表 any 配置 包名 ive 當我 一、ORM O:object 對象 R:Realtion 關系(關系型數據庫) M:Mapping 映射 ORM:對象關系型映射   目前流行的編程語言,如Java、C# ,它們都是面向對象的編程

第三章 深入內觀的方法

穩定 photo sig 認識 他會 試驗 是什麽 忘記 謙虛 http://blog.sina.com.cn/s/blog_16697cb1a0102wxh7.html 第三章 深入內觀的方法(一) 歡迎來這裏禪修,非常高興看見你們。我告訴過你們:我所見過最美好

從頭開始編寫一個實時嵌入式操作系統的內核

rtos signed 語言 配置 ffd ldr 進行 first special 今年大四,在準備自己的畢業設計。因為畢設題目是一個比較復雜的多傳感器監控的嵌入式系統,然後最近自己有使用一些rtos,比方說freertos和ucos,感覺比起單純對單片機的裸機開發還是有

測試人員必知的快速測試方法.

軟件測試 快速測試 測試方法 對有些測試經驗的測試人士來說,都有總結或掌握一些小眾的測試技巧。而快速測試是一組基於風險的測試方法,是針對某些常見的軟件缺陷,實施專項攻擊,一般不需要大量的測試時間,只了解產品基本情況就可以在短時間內在發現一批錯誤 。以下是測試專家James Bachd 在快速軟件測

各開發語言的程序加密方法

加密從各個開發語言出發,對每個開發語言的角度對加密方法做一些闡述。這篇主要講述lua、erlang、perl、ruby語言的加密方法。加密所需:Virbox LM SDK最新版Virbox Protector加殼工具,DS Protector 文檔下載:http://dl.video.virbox.com/v

Web API中的路由——基本路由

名稱 nts delete nal dict quest 添加 let web api 一.Web API中的路由概念   路由的作用用一句話說明:通過request的uri找到處理該請求的Controller,Action,以及給Action的參數賦值。 web api

JDBC資料庫連線池連線資料庫及資料庫操作DAO層設計通用更新及查詢方法

該篇文章介紹了資料庫連線池獲取資料庫連線以及資料庫操作的基本使用,然後主要提供了java專案案例中dao層的一種設計,利用反射的原理定義了通用的查詢方法可以對應所有的表和例項。文章中的每段程式碼都提供了詳細的註釋及邏輯步驟 首先匯入資料庫連線的所需要的jar包:    

分頁技術原理與實現之分頁的意義及方法

轉載自https://www.jb51.net/article/86326.htm。 什麼是分頁技術  分頁,是一種將所有資料分段展示給使用者的技術.使用者每次看到的不是全部資料,而是其中的一部分,如果在其中沒有找到自習自己想要的內容,使用者可以通過制定頁碼或是翻頁的方式轉換可見內容,

Web前端-Html部分筆記

以下是我對Web前端-Html部分的筆記,因為博主也是初學Web前端,有很多東西都還停留在表層的理解,如果我的部落格有任何錯誤,請及時評論或者私信我,我會及時更改。也歡迎同樣初學Web-前端的你願意關注我的部落格,我會把我每週的學習內容進行整理和上傳,方便大家溝通和交流學習經驗。 由於是筆記