//Logo Image
作者:巫佳哲(2008-12-24);推薦:徐業良(2008-12-24)

KS_2410網頁伺服器與動態網頁

本文介紹如何使用與設定KS_2410之網頁伺服器功能,以及如何透過CGI(Common Gateway Interface)動態網頁方式來顯示系統即時資訊與進行遠端控制功能。要使用網頁伺服器功能前,必須先設定正確的網路資訊,請先參考【KS_2410基本硬體裝置設定與使用】中的第二節網路設定。

1.     網頁伺服器相關設定資訊

首先由開機檔得知(『/etc/init.d』資料夾內的rcS檔),目前KS_2410的網頁伺服器在開機時預設為啟動,所以不需要再輸入指令去啟動網頁伺服器。網頁伺服器的預設環境參數內容(http port、權限、名稱等)如表1,若有需要做更改的話,直接利用“vi”文字編輯指令,修改在『/etc/boa』資料夾內的boa.conf檔案即可。注意,若是隨意修改可能會造成網頁伺服器無法正常運作,修改前最好可以利用“cp”複製指令製作備份。確認參數正確無誤後,可以參考執行範例一來測試網頁伺服器是否正常運作。

1. 伺服器相關設定參數表

伺服器設定參數

預設值

在設定檔boa.conf相對位置

伺服器http port

80

25行(圖1

執行權限

root

4849行(圖2

伺服器名稱

Friendly-arm

96行(圖3

網頁根目錄

/www

113行(圖4

伺服器首頁名稱

index.html

125行(圖5

CGI型態

cgi

175行(圖6

1. boa.conf25行(伺服器Http Port

2. boa.conf4849行(執行權限)

3. boa.conf96行(伺服器名稱)

4. boa.conf113行(網頁根目錄)

5. boa.conf125行(伺服器首頁名稱)

6. boa.conf175行(CGI型態)

範例一:顯示靜態網頁

範例一主要是在網頁根目錄下放置一個名稱為index.html的網頁,再透過其他個人電腦的網頁瀏覽器(如IEPCMANKKMAN等)去瀏覽其網頁資訊。首先在網頁根目錄『/www』下放置一個名稱為index.html的網頁,其內容簡單即可。HTML網頁程式撰寫語法,請自行參考坊間眾多的網頁製作書籍。此範例中的網頁內容如圖7。接下來在個人電腦上開啟網頁瀏覽器,並在網址列內鍵入網址(http://伺服器位址/index.html),最後會在網頁瀏覽器上顯示放置於『/www』下的index.html網頁內容,如圖8畫面。

7. 範例一Index.html網頁程式碼

8. 範例一Index.html網頁畫面

2.     CGI介紹與撰寫方式

CGI(Common Gateway Interface)中文翻譯為「共通閘道介面」,是一種標準介面程式,能讓客戶端藉由網頁與伺服器溝通、執行應用程式及要求數據等。CGI溝通流程如圖9所示,客戶端可藉由網頁瀏覽器等介面發送要求給伺服端,伺服端先透過CGI介面將接受到的要求轉述給應用程式,應用程式會執行相關要求之程式並將其結果再回傳給CGI,此時CGI會將結果再轉述成動態網頁方式讓客戶端的網頁瀏覽器可以讀取。透過這樣的流程,可以讓我們進行遠端控制以及即時讀取兩大功能。

9. CGI流程

可以用來撰寫CGI的語法有許多,如PerlUnix shell scriptsPythonRubyPHPTclC/C++Visual Basic等。本文使用Unix shell scripts方式來撰寫CGI,其撰寫的方式和語法就如同在寫Shell scripts相同,詳細可以參考linux相關書籍。在CGI動態網頁中有一些常用的環境變數如表2,在範例二會示範如何將這些環境變數顯示在CGI動態網頁上。除了可以將這頁環境變數顯示於動態網頁上,可以藉由Shell scripts簡單的邏輯判斷等方式,來分辨遠端所傳送過來的指令並且做適當回應,在範例三則會示範藉如何透過動態網頁來遠端控制LED燈的開關。

2. CGI環境參數說明

變數名稱

內容

GATEWAY_INTERFACE

ServerCGI版本編號。

QUERY_STRING

傳遞給CGI程式的QUERY資訊。

REMOTE_ADDR

Client端的IP位址。

SCRIPT_NAME

CGI程式所在的路徑。

SERVER_NAME

Server的名稱

SERVER_ADDR

ServerIP位址。

SERVER_PORT

ServerPORT埠。

SERVER_SOFTWARET

Server程式的名稱和版本。

範例二:透過動態網頁顯示系統資訊

範例二主要是利用一個動態網頁cgi_ex.cgi,將系統的一些即時資訊提供客戶端的網頁瀏覽器讀取。首先建立一個cgi_ex.cgi的動態網頁將其並放置於網頁根目錄內,其撰寫界面可使用Windows XP中的筆記本或Linux中的文字編譯器(gedit)等軟體進行撰寫。此範例的動態網頁程式碼內容如圖10,第1行為CGI所引用的位置『/bin/sh』,第3~26行是將相關的環境參數和字串利用指令“echo”顯示,再透過指令“>”“>>”存入tmp.txt檔,第27~29行是將tmp.txt檔顯示於網頁瀏覽器,第30是透過指令“rm”刪除暫存檔tmp.txt檔。最後開啟個人電腦的網頁瀏覽器,在網址列內鍵入網址(http://伺服器位址/cgi_ex.cgi),結果會顯示如圖11的網頁資訊。

10. 範例二cgi_ex.cgi動態網頁程式碼

11. 範例二cgi_ex.cgi動態網頁畫面

範例三:透過網頁來控制LED燈號

範例三主要是利用動態網頁led.cgi的協助,達成遠端控制KS_2410上的LED燈。首先建立一個網站首頁index.html,內容包含簡易的文字敘述、表單與控制按鈕,其中表單的參數請參考圖1210行,控制按鈕的參數請參考圖1211~27行,此範例的網頁畫面如圖13所示。接著建立動態網頁led.cgi,圖14led.cgi之程式碼,第3~28行為判斷環境變數QUERY_STRING所代表的字串,其判斷流程為客戶端按下NO1. LED ON鈕(圖13紅框內)時,會由網頁瀏覽器發出網路指令“http://網頁伺服器位址/led.cgi?LED1=ON”,此時QUERY_STRING變數等於LED1=ON,再藉由led.cgi判斷後會自動執行“led 0 1”指令,開啟NO1. LED燈。最後將上述兩個網頁放置於網頁根目錄內。開啟客戶端的網頁瀏覽器並輸入網址,顯示畫面如圖13,此時可以透過網頁上的按鍵控制LED燈。

12. 範例三index.html程式碼

13. 範例三Index.html網頁畫面

14. 範例三led.cgi程式碼