Web伺服器

丫就是熊個貓貓發表於2016-12-27

隨著Internet技術的興起,在嵌入式裝置的管理與互動中,基於Web方式的應用成為目前的主流,這種程式結構也就是大家非常熟悉的B/S結構,即在嵌入式裝置上執行一個支援指令碼或CGI功能的Web伺服器,能夠生成動態頁面,在使用者端只需要通過Web瀏覽器就可以對嵌入式裝置進行管理和監控,非常方便實用。本節主要介紹這種應用的開發和移植工作。
使用者首先需要在嵌入式裝置上成功移植支援指令碼或CGI功能的Web伺服器,然後才能進行應用程式的開發。

應用:1,釋出網頁。

2,視訊監控系統設計。

3,遠端控制系統設計。  
    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,並儲存退出。(都要加上-static 選項
    
然後執行make進行編譯,得到的可執行程式為boa,將除錯資訊剝去,得到的最後程式只有約60KB大小。
    # make
    # arm-linux-strip boa


   
第二步 完成Boa配置,使其能夠支援CGI程式的執行。

************************************************************************

先仔細閱讀下面,主要是為了先準備好需要的東西,即先把藥配置的檔案修改好,最後在把他們送到需要送到的目錄中去。

以下只是一個檔案的配置內容:

1. Boa需要在/etc目錄下建立一個boa目錄,裡面放入Boa的主要配置檔案boa.conf

Boa原始碼目錄下已有一個示例boa.conf,可以在其基礎上進行修改,下面解釋一下該檔案的含義:
1, #
監聽的埠號,預設都是80,一般無需修改
Port 80
2, # bind
呼叫的IP地址,一般註釋掉,表明繫結到INADDR_ANY通配於伺服器的所有IP地址
#Listen 192.68.0.5
3, #
作為哪個使用者執行,即它擁有該使用者的許可權,一般都是nobody需要/etc/passwd中有
#nobody
使用者
User nobody
4, #
作為哪個使用者組執行,即它擁有該使用者組的許可權,一般都是nogroup,需要在/etc/group
   #
件中有nogroup
Group nogroup   ->  Group 0  
改成0時有效的
5, #
當伺服器發生問題時傳送報警的email地址,目前未用,註釋掉
#ServerAdmin root@localhost
6, #
錯誤日誌檔案。如果沒有以/開始,則表示從伺服器的根路徑開始。如果不需要錯誤日誌,則用#/dev/null。在下面設定時,注意一定要建立/var/log/boa目錄
ErrorLog /var/log/boa/error_log
7, #
訪問日誌檔案。如果沒有以/開始,則表示從伺服器的根路徑開始。如果不需要錯誤日誌,則用     #/dev/null或直接註釋掉。在下面設定時,注意一定要建立/var/log/boa目錄
#AccessLog /var/log/boa/access_log
8, #
是否使用本地時間。如果沒有註釋掉,則使用本地時間。註釋掉則使用UTC時間
#UseLocaltime
9, #
是否記錄CGI執行資訊,如果沒有註釋掉,則記錄,註釋掉則不記錄
#VerboseCGILogs
10,#
伺服器名字
ServerName www.hyesco.com
11,#
是否啟動虛擬主機功能,即裝置可以有多個網路介面,每個介面都可以擁有一個虛擬的Web
#
務器。一般註釋掉,即不需要啟動
#VirtualHost
12,#
非常重要HTML文件的主目錄。如果沒有以/開始,則表示從伺服器的根路徑開始。
DocumentRoot /var/www
13,#
如果收到一個使用者請求的話,在使用者主目錄後再增加的目錄名
UserDir public_html
14,#HTML
目錄索引的檔名,也是沒有使用者只指明訪問目錄時返回的檔名
DirectoryIndex index.html  
【這裡的index.html檔案就是你等下在/var/www放的要執行的檔案】

【在實踐過程中,這個檔案的字尾名必須為 html htm 不行】
15,#
HTML目錄沒有索引檔案時,使用者只指明訪問目錄時,boa會呼叫該程式生成索引檔案然後
#
返回給使用者,因為該過程比較慢最好不執行,可以註釋掉或者給每個HTML目錄加上#DirectoryIndex指明的檔案
#DirectoryMaker /usr/lib/boa/boa_indexer
16,#
如果DirectoryIndex不存在,並且DirectoryMaker註釋,那麼就用Boa自帶的索引
#
生成程式來生成目錄的索引檔案並輸出到下面目錄,該目錄必須是Boa能讀寫
# DirectoryCache /var/spool/boa/dircache
17,#
一個連線所允許的HTTP持續作用請求最大數目,註釋或設為0都將關閉HTTP持續作用
KeepAliveMax 1000
18,#HTTP
持續作用中伺服器在兩次請求之間等待的時間數,以秒為單位,超時將關閉連線
KeepAliveTimeout 10
19,#
指明mime.types檔案位置。如果沒有以/開始,則表示從伺服器的根路徑開始。可以註釋掉
#
避免使用mime.types檔案,此時需要用AddType在本檔案裡指明
MimeTypes /etc/mime.types
20,#
副檔名沒有或未知的話,使用的預設MIME型別
DefaultType text/plain

21,#
提供CGI程式的PATH環境變數值
CGIPath /bin:/usr/bin:/usr/local/bin
22,#
副檔名和MIME型別關聯起來,和mime.types檔案作用一樣。如果用mime.types
#
檔案,則註釋掉,如果不使用mime.types檔案,則必須使用
#AddType application/x-httpd-cgi cgi
23,#
指明文件重定向路徑
#Redirect /bar http://elsewhere/feh/bar
24,#
為路徑加上別名
Alias /doc /usr/doc
25,#
非常重要,指明CGI指令碼的虛擬路徑對應的實際路徑。一般所有的CGI指令碼都要放在實際路徑
#
裡,使用者訪問執行時輸入站點+虛擬路徑+CGI指令碼名
ScriptAlias /cgi-bin/ /var/www/cgi-bin/

************************************************************************

這裡是把準備好了的檔案放到相應的目錄中去,目錄要建立的就用 mkdir 建立。
   
使用者可以根據自己需要,對boa.conf 【即以上配置的檔案】進行修改,但必須要保證其他的輔助檔案和設定必須和boa.conf裡的配置相符,不然Boa就不能正常工作。

在上面的例子中,(1)我們還需要建立日誌檔案所在目錄/var/log/boa (2)建立HTML文件的主目錄/var/www字尾一定需要是html .(3)mime.types檔案拷貝到/etc目錄,mime.types檔案用來指明不同副檔名對應的MIME型別,一般可以直接從Linux主機上拷貝一個,大部分也都是在主機的/etc目錄下。 (4)建立CGI指令碼所在目錄/var/www/cgi-bin/

************************************************************************

 

第三步:回到你對boa.0.94.13-tar.gz解壓的目錄下的/src目錄下,輸入 #./boa

        此時使用 #ps 可以看到有個程式為 boa ,負責boa服務沒有執行。

第四步:把boa檔案新增到檔案系統中,重新下載檔案系統,使系統啟動時就自動執行boa服務。

文章轉自:http://blog.chinaunix.NET/uid-29021161-id-3793130.html

相關文章