国产精品国产三级国产试看,香蕉人精品视频多人免费永久视频,宅男噜噜噜66一区二区,天天插天天射,女人体(1963)菠萝蜜视频,97在线视频人妻无码一区,精品久久久久精品色婷婷综合

免費web服務(wù)器的架設(shè)教程(如何架設(shè)web服務(wù)器)

更新時間:2022-12-16 18:12:42作者:佚名

免費web服務(wù)器的架設(shè)教程(如何架設(shè)web服務(wù)器)

  一、什么是boa?

  BOA是一款非常小巧的Web服務(wù)器,源代碼開放、性能優(yōu)秀、支持CGI通用網(wǎng)關(guān)接口技術(shù),特別適合應(yīng)用在嵌入式系統(tǒng)中。

  BOA服務(wù)器主要功能是在互聯(lián)嵌入式設(shè)備之間進行信息交互,達到通過網(wǎng)絡(luò)對嵌入式設(shè)備進行監(jiān)控,并將反饋信息自動上傳給主控設(shè)備的目的。它是基于HTTP超文本傳輸協(xié)議的,Web網(wǎng)頁是Web服務(wù)最基本的傳輸單元。

  嵌入式Web服務(wù)的工作基于客戶機/服務(wù)器計算模型,由Web瀏覽器(客戶機)和Web服務(wù)器(服務(wù)器)構(gòu)成,也即著名的B/S結(jié)構(gòu)。運行于客戶端的瀏覽器首先要與嵌入式Web服務(wù)器BOA端建立連接,打開一個套接字虛擬文件,此文件建立標(biāo)志著SOCKET連接建立成功然后客戶端瀏覽器通過套接字SOCKET以GET或者POST參數(shù)傳遞方式向Web服務(wù)器提交請求,Web瀏覽器提交請求后,通過HTTP協(xié)議傳送給Web服務(wù)器。Web服務(wù)器接到請求后,根據(jù)請求的不同進行事務(wù)處理,返回HTML文件或者通過CGI調(diào)用外部應(yīng)用程序,返回處理結(jié)果。

  服務(wù)器通過CGI與外部應(yīng)用程序和腳本之間進行交互,根據(jù)客戶端瀏覽器在請求時所采用的方法,服務(wù)器會搜集客戶所提供的信息,并將該部分信息發(fā)送給指定的CGI擴展程序,CGI擴展程序進行信息處理并將結(jié)果返回給服務(wù)器,然后服務(wù)器對信息進行分析,并將結(jié)果發(fā)送回客戶端在瀏覽器上顯示出來。

  二、boa移植步驟

  平臺:ubuntu 16.04 版本是:boa-0.94.13.tar.gz

  1. 下載地址:

  http://www.boa.org/

  服務(wù)器已經(jīng)無法訪問,可以公號后臺回復(fù)關(guān)鍵字:boa,獲取壓縮包

  2. 源碼解壓

  源代碼拷貝到:

  /home/peng/boa

  peng@ubuntu:~/boa$ tar -xf boa-0.94.13.tar.gz

  

從頭搭建一個嵌入式web服務(wù)器-boa服務(wù)器


  3. 安裝詞法解析器

  $ sudo apt-get install bison

  $ sudo apt-get install flex

  yacc是一個文法分析器的生成器,bison即是yacc的GNU版本 Lex和YACC是用于構(gòu)造詞法分析機和語法解釋器的工具,利用Lex和YACC你可以輕松的構(gòu)造一個語法解釋器。

  4. 修改編代碼

  src/compat.h 打開文件

  src/compat.h

  修改

  120: #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff

  為

  120: #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

  src/log.c 打開文件:

  src/log.c

  

從頭搭建一個嵌入式web服務(wù)器-boa服務(wù)器


  3. boa.c

  

從頭搭建一個嵌入式web服務(wù)器-boa服務(wù)器


  5. 編譯 peng@ubuntu:~/boa/boa-0.94.13$ cd src/

  peng@ubuntu:~/boa/boa-0.94.13/src$ ./configure --prefix=/home/peng/boa/boa-0.94.13/tmp

  peng@ubuntu:~/boa/boa-0.94.13/src$ make

  peng@ubuntu:~/boa/boa-0.94.13/src$ sudo mkdir /etc/boa

  peng@ubuntu:~/boa/boa-0.94.13/src$ sudo cp ../boa.conf /etc/boa

  6. 修改配置文件boa.conf

  

從頭搭建一個嵌入式web服務(wù)器-boa服務(wù)器


  

從頭搭建一個嵌入式web服務(wù)器-boa服務(wù)器


  

從頭搭建一個嵌入式web服務(wù)器-boa服務(wù)器


  

從頭搭建一個嵌入式web服務(wù)器-boa服務(wù)器


  修改AccessLog /var/log/boa/access_log

  為#AccessLog /var/log/boa/access_log

  其中,#表示注釋,在文件內(nèi)部,我們找到#后面的內(nèi)容,然后加上#下面的內(nèi)容即可。

  Boa Webserver配置參數(shù)說明:

  Port:boa服務(wù)器監(jiān)聽的端口,默認的端口是80。如果端口小于1024,則必須是root用戶啟動服務(wù)器。

  Listen:綁定的ip地址。不使用這個參數(shù)時,將綁定所有的地址。

  User:連接到服務(wù)器的客戶端的身份,可以是用戶名或UID。(為什么非要指定為文件的所有者才能訪問網(wǎng)頁呢?nobody用戶也有讀權(quán)限啊)

  Group:連接到服務(wù)器的客戶端的組,可以是組名或GID。

  ServerAdmin:服務(wù)器出故障時要通知的郵箱地址。

  ErrorLog:指定錯誤日志文件。如果路徑?jīng)]有以“/”開始,則相對于ServerRoot路徑。沒有配置時默認的文件是/dev/stderr。若不想記錄日志,指定文件為/dev/null。

  AccessLog:設(shè)置存取日志文件,與ErrorLog類似。

  UseLocaltime:設(shè)置使用本地時間,使用UTC時注釋這個參數(shù)。這個參數(shù)沒有值。

  VerboseCGILogs:在錯誤日志文件中記錄CGI啟動和停止時間,若不記錄,注釋這個參數(shù)。這個參數(shù)沒有值。

  ServerName:指定服務(wù)器的名稱,當(dāng)客戶端使用gethostname + gethostbyname時返回給客戶端。

  VirtualHost:虛擬主機開關(guān)。使用此參數(shù),則會在DocumentRoot設(shè)定的目錄添加一個ip地址作為新的DocumentRoot來處理客戶端的請求。如DocumentRoot設(shè)置為/var/www,則http://localhost/ 則轉(zhuǎn)換成/var/www/127.0.0.1/,若注釋此參數(shù),則為/var/www/。 DocumentRoot:HTML文件的根目錄(也就是網(wǎng)站的目錄)。 UserDir:指定用戶目錄。

  DirectoryIndex:指定預(yù)生成目錄信息的文件,注釋此變量將使用DirectoryMaker變量。這個變量也就是設(shè)置默認主頁的文件名。

  DirectoryMaker:指定用于生成目錄的程序,注釋此變量將不允許列目錄。

  DirectoryCache:當(dāng)DirectoryIndex文件不存在,而DirecotryMaker又被注釋掉時,將列出這個參數(shù)指定目錄給客戶端。

  KeepAliveMax:每個連接允許的請求數(shù)量。如果將此值設(shè)為" 0 ",將不限制請求的數(shù)目。

  KeepAliveTimeOut:在關(guān)閉持久連接前等待下一個請求的秒數(shù)。(秒)。

  MimeTypes:設(shè)置包含mimetypes信息的文件,一般是/etc/mime.types。

  DefaultType:默認的mimetype類型,一般是text/html。 CGIPath:相當(dāng)于給CGI程序使用的$PATH變量。 SinglePostLimit:一次POST允許最大的字節(jié)數(shù),默認是1MB. AddType: 增加MimeType沒有指定的類型,例: AddType type extension [extension ...]。要使用cgi,必須添加cgi類型:AddType application/x-httpd-cgi cgi Redirect:重定向文件 Aliases:指定路徑的別名。

  ScriptAlias:指定腳本路徑的虛擬路徑。

  三、運行測試

  在 /www下新建index.html文件,并放置名為yikou.png的圖片到image目錄下。 文件目錄如下:

  root@ubuntu:/www# tree ./

  ./

  ├── image

  │ └── yikou.png

  └── index.html

  1 directory, 2 files

  index.html內(nèi)容

  用戶名:

  密 碼:

  關(guān)于html語法,后面一口君會寫幾篇入門的教程。

  運行boa

  root@ubuntu:/home/peng/boa/boa-0.94.13/src# ./boa

  root@ubuntu:/home/peng/boa/boa-0.94.13/src# [29/Jan/2022:15:42:26 +0000] boa: server version Boa/0.94.13

  [29/Jan/2022:15:42:26 +0000] boa: server built Jan 29 2022 at 07:42:23.

  [29/Jan/2022:15:42:26 +0000] boa: starting server pid=5761, port 80

  打開瀏覽器

  輸入地址:

  http://192.168.174.128/

  只要能ping通boa所在主機的ip地址的瀏覽器都可以訪問。

  

從頭搭建一個嵌入式web服務(wù)器-boa服務(wù)器


  四、錯誤匯總

  1.必需要在板子的/etc下建一個boa目錄(錯誤代碼忘了)

  2.”can't open boa.conf for reading“ 解決:不只要在你本身放置boa的目錄下放入boa.conf配置文件,并且要在板子的/etc/boa下也要放入boa.conf文件,這樣系統(tǒng)在運行boa的時候才能夠讀取到boa.conf文件。

  3.“unable to dup2 the error log bad file descriptor” 解決:在boa源碼里,即src文件夾下把log.c中的第73行的if語句注釋掉。

  4."unable to dup2 the error log:Bad file descriptor" 解決:在boa.conf里,把“#AccessLog /var/log/boa/access_log”注釋掉(即去掉#號)。

  5.“[01/Jan/2031:00:12:25 +0000] boa.c:226 - icky Linux kernel bug!: No such file or directory” 解決:在boa源碼里,即src文件夾下把boa.c中的第226行的if語句注釋掉。

  6."gethostbyname:: Resource temporarily unavailable" 解決:把“#ServerName www.your.org.here”的“#”號去掉。

  7."./boa: 1: syntax error: "(" unexpected" 解決:沒有修改Makefile,是用gcc編譯的,應(yīng)該改為是arm-linux-gcc編譯。

  8.若是頁面上是:“502 Bad Gateway The CGI was not CGI/1.1 compliant.“ 解決:給你要執(zhí)行的cgi可執(zhí)行程序賦個權(quán)限。chmod 777 filename

  9.在

  中,cgi可執(zhí)行程序的路徑就直接寫“cgi-bin/test2.cgi”就能夠了,不要寫板子上的絕對路徑,這樣就重復(fù)了,由于cgi執(zhí)行時會自動去boa.conf的指定的路徑里找。

  10.出現(xiàn)警告:“control reaches end of non-void function”,是由于某個函數(shù)沒有return,而函數(shù)定義時是非void型的。因此須要有個返回值。好比int cgiMain()這個函數(shù)就必定要有個返回值的,不然會報這個錯誤。

  11.運行網(wǎng)頁時老出現(xiàn)錯誤:“mkstemp:No such file or diectory” 解決:不能用post,只能用get。由于post方式須要新建一個臨時文件,這就須要用到mkstemp函數(shù)。這個函數(shù)是在系統(tǒng)中以惟一的文件名建立一個文件并打開,且只有當(dāng)前用戶才能訪問這個臨時文件。故權(quán)限不夠,或其余什么問題都會報這個錯誤。那么就用get吧!這里具體緣由細節(jié)筆者暫時也不是很清楚...

  12.直接寫的含有system()函數(shù)的c程序用arm-linux-gcc編譯到板子上的能夠執(zhí)行,而若是寫在cgi中的就不必定能執(zhí)行了。由于牽涉到一個cgi的權(quán)限的問題。即便給你的cgi-bin文件夾下的全部cgi可執(zhí)行文件都賦了權(quán)限,也不必定能執(zhí)行。

  解決辦法就是看看你的boa.conf中的權(quán)限設(shè)置的如何。這里正確的應(yīng)該是把“User nobody Group nogroup”改成“User root Group 0”,不然不能正確執(zhí)行!你會發(fā)現(xiàn)你的cgi可執(zhí)行程序的其余代碼都執(zhí)行了,卻只有這個system()函數(shù)沒有執(zhí)行!

  五、修改的參數(shù)說明

  (1)Group的修改:

  修改 Group nogroup 為 Group 0 Group表示連接到服務(wù)器的客戶端的組,可以是組名或GID。

  (2)user的修改

  修改 User nobody 為 User 0 User:連接到服務(wù)器的客戶端的身份,可以是用戶名或UID。

  (3)ScriptAlias的修改

  修改ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 為 ScriptAlias /cgi-bin/ /www/cgi-bin/ ScriptAlias:指定腳本路徑的虛擬路徑。

  (4)DocumentRoot的修改

  修改DocumentRoot /var/www 為DocumentRoot /www DocumentRoot:HTML文件的根目錄(也就是網(wǎng)站的目錄)。

  (5)ServerName的設(shè)置

  修改#ServerName www.your.org.here 為 ServerName www.your.org.here 否則會出現(xiàn)錯誤“gethostbyname::No such file or directory” ServerName:指定服務(wù)器的名稱,當(dāng)客戶端使用gethostname + gethostbyname時返回給客戶端。

  六、補充

  后續(xù)一口君會在本篇文章基礎(chǔ)之上,繼續(xù)講解HTTP協(xié)議,并基于該服務(wù)器實現(xiàn)一個物聯(lián)網(wǎng)綜合項目


本文標(biāo)簽: [db:關(guān)鍵詞]  

為您推薦

免費web服務(wù)器的架設(shè)教程(如何架設(shè)web服務(wù)器)

一、什么是boa?  BOA是一款非常小巧的Web服務(wù)器,源代碼開放、性能優(yōu)秀、支持CGI通用網(wǎng)關(guān)接口技術(shù),特別適合應(yīng)用在嵌入式系統(tǒng)中?! OA服務(wù)器主要功能是在互聯(lián)嵌入式設(shè)備之間進行信息交互,

2022-12-16 18:12

廣州番禺區(qū)五家互聯(lián)網(wǎng)醫(yī)院在線問診送藥到家

目前番禺區(qū)有5家醫(yī)院開辦了互聯(lián)網(wǎng)醫(yī)院,分別是番禺區(qū)中心醫(yī)院、番禺區(qū)何賢紀念醫(yī)院、番禺區(qū)中醫(yī)院、廣東祈福醫(yī)院、番禺區(qū)慢性病防治站。

2022-12-16 18:12

尼康單反相機哪款好 尼康單反相機哪款好性價比高

techradar 網(wǎng)站發(fā)表了一篇蒂姆科爾曼的文章,評出了尼康百年一來最好的 10 款尼康相機。但是令人驚訝的是Z9只能排在第五名。而且著名的F3等相機并未上榜,你認同嗎?  隨著史上最強相機Z9

2022-12-16 18:11

家用空調(diào)電路圖工作原理(家用空調(diào)電路圖工作原理圖)

一、解讀室內(nèi)機控制電路  格蘭仕KFR-28GW/B2室內(nèi)機控制電路采用變頻空調(diào)器專用芯片M38123M6-276SP,該芯片內(nèi)部除了寫入空調(diào)器專用程序外,還包含有微處理器(CPU)、程序存儲器、

2022-12-16 18:11

筆記本能外接顯卡嗎 華為筆記本能外接顯卡嗎

在筆記本領(lǐng)域,AMD當(dāng)前的銳龍5000平臺已經(jīng)擁有不遜于第11代酷睿的實力,U系列版本憑借更多的核心數(shù)量性能反而更具優(yōu)勢。即將來臨的第12代酷睿和銳龍6000也將面臨針尖對麥芒的較量,孰強孰弱還有

2022-12-16 18:11

廣州花都區(qū)兩家醫(yī)院在線問診快遞送藥上門

花都區(qū)人民醫(yī)院、廣州市中西醫(yī)結(jié)合醫(yī)院“足不出戶”就可免費完成復(fù)診續(xù)方、病情咨詢、檢驗報告查詢及解讀等服務(wù),僅需支付藥品及快遞費用,即可獲得快遞送藥上門服務(wù)。

2022-12-16 18:11