關於嵌入式web服務器


1.boa的配置文件boa.conf

  

    Port 80 //服務訪問端口

    User 0
    Group 0

    ErrorLog /var/log/boa/error_log //錯誤日志地址
    AccessLog /var/log/boa/access_log //訪問日志文件

    DocumentRoot /var/www //HTML文檔的主目錄

    UserDir public_html //

    DirectoryIndex index.html //默認訪問文件

    DirectoryMaker /usr/lib/boa/boa_indexer

    KeepAliveMax 1000 //一個連接所允許的HTTP持續作用請求最大數目

    KeepAliveTimeout 10 //HTTP持續作用中服務器在兩次請求之間等待的時間數,以秒為單位

    MimeTypes /etc/mime.types //指明mime.types文件位置

    DefaultType text/plain //文件擴展名沒有或未知的話,使用的缺省MIME類型

    CGIPath /bin:/usr/bin:/usr/local/bin //提供CGI程序的PATH環境變量值

    Alias /doc /usr/doc //為路徑加上別名

    ScriptAlias /cgi-bin/ /var/www/cgi-bin/ //輸入站點和CGI腳本位置

 

2.boa簡介

  

BOA
========================
服務器是一個小巧高效的web服務器,是一個運行於unix或linux下的,支持CGI的、適合於嵌入式系統的單任務的http服務器,源代碼開放、性能高。  

是一種非常小巧的Web服務器,其可執行代碼只有大約60KB左右。作為一種單任務Web服務器,Boa只能依次完成用戶的請求,而不會fork出新的進程來處理並發連接請求。但Boa支持CGI,能夠為CGI程序fork出一個進程來執行。Boa的設計目標是速度和安全。   


CGI
========================
在物理上是一段程序,運行在服務器上,提供同客戶端HTML頁面的接口。即客戶端與服務器的接口。   

比如留言本的工作流程:先由用戶在客戶端輸入一些信息,如名字之類的東西。接着用戶按一下“留言”(到目前為止工作都在客戶端),瀏覽器把這些信息傳送到服務器的CGI目錄下特定的cgi程序中,於是cgi程序在服務器上按照預定的方法進行處理。在本例中就是把用戶提交的信息存入指定的文件中。然后cgi程序給客戶端發送一個信息,表示請求的任務已經結束。此時用戶在瀏覽器里將看到“留言結束”的字樣。整個過程結束。

 

3.CGI簡介


CGI簡介:
=====================
一、概念:公共網關接口CGI(Common GatewayInterface) 是WWW技術中最重要的技術之一,有着不可替代的重要地位。CGI是外部應用程序(CGI程序)與Web服務器之間的接口標准,是在CGI程序和Web服務器之間傳遞信息的規程。CGI規范允許Web服務器執行外部程序,並將它們的輸出發送給Web瀏覽器,CGI將Web的一組簡單的靜態超媒體文檔變成一個完整的新的交互式媒體。

在物理上,CGI是一段程序,運行在服務器上,提供同客戶端HTML頁面的接口。這樣說大概還不好理解。

那么我們看一個實際例子:
====================================
現在的個人主頁上大部分都有一個留言本。留言本的工作是這樣的:先由用戶在客戶端輸入一些信息,如名字之類的東西。接着用戶按一下“留言”(到目前為止工作都在客戶端),瀏覽器把這些信息傳送到服務器的CGI目錄下特定的cgi程序中,於是cgi程序在服務器上按照預定的方法進行處理。在本例中就是把用戶提交的信息存入指定的文件中。然后cgi程序給客戶端發送一個信息,表示請求的任務已經結束。此時用戶在瀏覽器里將看到“留言結束”的字樣。整個過程結束。


二、功能:絕大多數的CGI程序被用來解釋處理來自表單的輸入信息,並在服務器產生相應的處理,或將相應的信息反饋給瀏覽器。CGI程序使網頁具有交互功能。

CGI應用程序主要的用途有以下幾種:   

1.根據瀏覽者填寫的HTML表單發送定制的答復;   

2.創建可單擊的圖像縮小圖;   

3.創建一個瀏覽者可以搜索內容的數據庫;   

4.提供服務器與數據庫的接口,並把結果轉換成HTML文檔;   

5.制作動態HTML文擋。

 

三、處理步驟:

   ⑴通過Internet把用戶請求送到服務器。
  
⑵服務器接收用戶請求並交給CGI程序處理。
 
⑶CGI程序把處理結果傳送給服務器。  
 
⑷服務器把結果送回到用戶。

四、優點:
   CGI可以為我們提供許多HTML無法做到的功能。比如 a.一個記數器 b.顧客信息表格的提交以及統計 c.搜索程序 d.WEB數據庫,用Html是沒有辦法記住客戶的任何信息的.

用Html也是無法把信息記錄到某一個特定文件里的。要把客戶端的信息記錄在服務器的硬盤上,就要用到CGI。這是CGI最重要的作用,它補充了Html的不足。  

使在網絡服務器下運行外部分應用程序(或網關)成為可能。CGI-BIN 目錄是存放CGI腳本的地方。這些腳本使WWW服務器和瀏覽器能運行外部程序,而無需啟動另一個原因程序。

   它是運行在Web服務器上的一個程序,並由來自於瀏覽者的輸入觸發。CGI是在HTTP服務器下運行外部程序(或網關)的一個接口,它能讓網絡用戶訪問遠程系統上的使用類型程序,就好像他們
在實際使用那些遠程計算機一樣。   

CGI能夠讓瀏覽者與服務器進行交互,如果你曾經遇到過在網絡上填表或者進行搜索,就很有可能就是用的CGI。   


五、應用程序工作原理:
   1.瀏覽器通過HTML表單或超鏈接請求指上一個CGI應用程序的URL。   

2.服務器收發到請求。   

3.服務器執行指定所CGI應用程序。   

4.CGI應用程序執行所需要的操作,通常是基於瀏覽者輸入的內容。   

5.CGI應用程序把結果格式化為網絡服務器和瀏覽器能夠理解的文檔(通常是HTML網頁)。   

6.網絡服務器把結果返回到瀏覽器中。


六、注意的問題
   CGI應用程序運行在瀏覽器可以請求的服務器系統上,執行時需要使用服務器CPU時間和內存。如果有成千上萬的這種程序會同時運行,那會對服務器系統提出極高的要求。你要慎重考慮這個問題,以防止服務器系統崩潰。   

不完善的CGI應用程序可能成為別人非法進人服務器系統的通道,有可能導致重要的資料被刪除或外泄。

 4.XML簡介

一、概念:
==================
XML(Extensible Markup Language),一種擴展性標識語言。"擴展性""標識""語言"。每一個詞都明確的點明了XML的重要
特點和功能。我們來仔細分析:


1.擴展性---使用XML,你可以為你的文檔建立自己的標記(tags)。
=================
XML的第一個詞是"擴展性",這正是XML強大的功能和彈性的原因。
在HTML里,有許多固定的標記,我們必須記住然后使用它們,你不能使用HTML規范里沒有的標記。而在XML中,你能建立
任何你需要的標記。你可以充分發揮你的想象力,給你的文檔起一些好記的標記名稱。比如,你的文檔里包含一些游戲
的攻略,你可以建立一個名為<game>的標記,然后在<game>下再根據游戲類別建立<RPG>,<SLG>等標記。只要清晰,易於
理解你可以建立任何數量的標記。


2.標識---使用XML你可以識別文檔中的元素。
=================
XML的第二個詞是"標識",這表明了XML的目的是標識文檔中的元素。

不論你是HTML,還是XML,標識的本質在於便於理解,如果沒有標識,你的文檔在計算機看來只是一個很長的字符串,每個
字看起來都一樣,沒有重點之分。 通過標識,你的文檔才便於閱讀和理解,你可以划分段落,列明標題。XML中,你更
可以利用其擴展性 來為文檔建立更合適的標識。

<b>frist step<b>
這里<b>表示粗體,只用來說明是用粗體來顯示"frist step"字符,<b>本身並不包含任何實際的信息,在頁面上你看不
到<b>,真正傳達信息的是"frist step "。


3.語言---使用XML你要遵循特定的語法來標識你的文檔。
=================
XML第三個詞是"語言"。這表明了作為一種語言XML必須遵循一定的規則。雖然XML的擴展性允許你創建新標識,但它仍然
必須遵循特定的結構,語法和明確的定義。

在計算機領域,語言常常用來編程實現一些功能和應用,但不是所有的"語言"都是用來編程的,XML就只是一種用來定義
標識和描述信息的語言。

 

 

二.xml結構化---XML促使文檔結構化,所有的信息按某種關系排列。
====================
"結構化"聽起來太抽象了,我們這樣理解,結構化就是為你的文檔建立一個框架,就象寫文章先寫一個提綱。結構化使
你的文檔看起來不會雜亂無章,每一部分都緊密聯系,形成一個整體。

結構化有兩個原則:
1.每一部分(每一個元素)都和其他元素有關聯。關聯的級數就形成了結構。
2.標識本身的含義與它描述的信息相分離。

我們來看一個簡單的例子幫助理解:
<?xml version="1.0" encoding="GB2312"?>
<myfile>
<title>XML輕松學習手冊</title>
<chapter>XML快速入門
<para>什么是XML</para>
<para>使用XML的好處</para>
</chapter>
<chapter>XML的概念
<para>擴展性</para>
<para>標識</para>
</chapter>
</myfile>
這是本文的XML描述文檔,可以看到標識分三級關聯,非常清晰:
<myfile>
<chapter>
<para>
...
</para>
</chapter>
</myfile>
上面這樣的文檔結構,我們又稱之為"文檔樹",主干是父元素,如<myfile>,分支和頁是子元素,如<chapter>和<para>。

 


三、xml的好處
==================
使用XML有什么好處?來看w3c組織(XML標准制定者)的說明:

XML使得在網絡上使用SGML語言更加"簡單和直接": 簡化了定義文件類型的過程,簡化了編程和處理SGML文件的過程,
簡化了在Web上的傳送和共享。

1.XML可以廣泛的運用於web的任何地方;
2.XML可以滿足網絡應用的需求;
3.使用XML將使編程更加簡單;
4.XML便於學習和創建;
5.XML代碼將清晰和便於閱讀理解;

 

四、xml實例分析
==================
XML非常簡單,學習容易。如果你熟悉HTML,你會發現它的文檔和HTML非常相似,看同樣的示例文檔(例1):

?xml version="1.0"?><br><br>
<myfile><br><br>
<title>XML Quick Start</title><br><br>
<author>ajie</author><br><br>
<email>ajie@aolhoo.com</email><br><br>
<date>20010115</date><br><br>
</myfile>

第一行是一個XML聲明,表示文檔遵循的是XML的1.0 版的規范。

第二行定義了文檔里面的第一個元素(element),也稱為根元素: < myfile>。這個就類似HTML里的< HTML>開頭標記。
注意,這個名稱是自己隨便定義的。

再下面定義了四個子元素:title,author,email,和date。分別說明文章的標題,作者,郵箱和日期。當然,你可以用
中文來定義這些標簽,看上去更便於理解:

<?xml version="1.0" encoding="GB2312"?>
<文章>
<標題>XML輕松學習手冊</標題>
<作者>ajie</作者>
<信箱>ajie@aolhoo.com</信箱>
<日期>20010115</日期>
</文章>


這就是XML的文檔,任何掌握HTML的網友都可以直接寫出這樣簡單的XML文檔。


另外,學習XML還必須掌握一種頁面腳本語言,常見的就是javascript和VB script。因為XML數據是使用script
實現HTML中調用和交互的。我們看一個最簡單的例子(例2):

1.將下面代碼存為myfile.html

<html>
<head>
<script language="Javascript" for="window" event="onload">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("myfile.xml");
nodes = xmlDoc.documentElement.childNodes;
title.innerText = nodesitem(0).text;
author.innerText = nodes.item(1).text;
email.innerText = nodes.item(2).text;
date.innerText = nodes.item(3).text;

</script>
<title>在HTML中調用XML數據</title>
</head>
<body bgcolor="#FFFFFF">
<b>標題: </b>
<span id="title"> </span>
<b>作者: </b>
<span id="author"></span>
<b>信箱: </b>
<span id="email"></span>
<b>日期:</b>
<span id="date"></span>
</body><br><br>
</html><br><br>

2.將下面代碼存為myfile.xml

<?xml version="1.0" encoding="GB2312"?>
<myfile>
<title>XML輕松學習手冊</title>
<author>ajie</author>
<email>ajie@aolhoo.com</email>
<date>20010115</date>
</myfile>

3.將它們放在同一個目錄下,用IE5以上版本瀏覽器打開,可以看到效果。 學習並掌握一種script,你將真正了解到
XML無比的強大的功能。

 

五. XML和HTML的區別
==========================
XML和HTML都來自於SGML,它們都含有標記,有着相似的語法,HTML和XML的最大區別在於:HTML是一個定型的標記語言,
它用固有的標記來描述,顯示網頁內容。比如< H1>表示首行標題,有固定的尺寸。相對的,XML則沒有固定的標記,
XML不能描述網頁具體的外觀,內容,它只是描述內容的數據形式和結構。

這是一個質的區別:網頁將數據和顯示混在一起,而XML則將數據和顯示分開來。

我們看上面的例子,在myfile.htm中,我們只關心頁面的顯示方式,我們可以設計不同的界面,用不同的方式來排版頁
面,但數據是儲存在myfile.xml中,不需要任何改變。

(如果你是程序員,你會驚訝的發現,這與模塊化面向對象編程的思想極其相似!其實網頁何嘗不是一種程序呢?)

正是這種區別使得XML在網絡應用和信息共享上方便,高效,可擴展。所以我們相信,XML做為一種先進的數據處理方法,
將使網絡跨越到一個新的境界。

 


六. XML的嚴格格式
=======================
吸取HTML松散格式帶來的經驗教訓,XML一開始就堅持實行"良好的格式"。

我們先看HTML的一些語句,這些語句在HTML中隨處可見:

1.
sample
2.< b>< i>sample< /b>< /i>
3.< td>sample< /TD>
4.< font color=red>samplar< /font>

在XML文檔中,上述幾種語句的語法都是錯誤的。因為:

1.所有的標記都必須要有一個相應的結束標記;
2.所有的XML標記都必須合理嵌套;
3.所有XML標記都區分大小寫;
4.所有標記的屬性必須用""括起來;
所以上列語句在XML中正確的寫法是

1.
sample
2.< b>< i>sample< /i>< /b>
3.< td>sample< /td>
4.< font color="red">samplar< /font>

另外,XML標記必須遵循下面的命名規則:

1.名字中可以包含字母、數字以及其它字母;
2.名字不能以數字或"_" (下划線) 開頭;
3.名字不能以字母 xml (或 XML 或 Xml ..) 開頭;
4.名字中不能包含空格。

在XML文檔中任何的差錯,都會得到同一個結果:網頁不能被顯示。各瀏覽器開發商已經達成協議,對XML實行嚴格而
挑剔的解析,任何細小的錯誤都會被報告。你可以將上面的myfile.xml修改一下,比如將< email>改為< Email>,然后
用IE5直接打開myfile.xml,會得到一個出錯信息頁面:

<?xml version="1.0" encoding="GB2312"?>
<myfile>
<title>XML輕松學習手冊</title>
<author>ajie</author>
<Email>ajie@aolhoo.com</email>
<date>20010115</date>
</myfile>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM