開發板搭建簡單的Web服務器
BOA服務器是一個小巧高效的web服務器,是一個運行於Linux或unix下的,支持CGI、適合於嵌入式的單任務的服務器,源代碼開放,性能高
BOA是非常小巧的web服務器,其可執行代碼僅60kb左右,作爲單任務的web服務器,BOA只能依此完成用戶的請求,而不會創建子進程處理併發連接請求,但由於BOA支持CGI,因此它能夠爲CGI創建一個新的進程
CGI在物理上是一段程序,運行在服務器上,提供客戶端的HTML頁面的接口,即客戶端和服務器的接口
在開發板上搭建web服務器
-
boa的拷貝和解壓
首先,登錄boa的官網:www.boa.org下載壓縮包,之後將文件下載到Ubuntu並解壓
解壓命令:tar xvzf boa-0.94.13.tar.gz,之後進入boa-0.94.13
鏈接:https://pan.baidu.com/s/1F4XfwZBE4BZYmHQwbe8Twg 提取碼:hig8
-
boa生成Makefile編譯文件
進入src目錄,運行./configure以生成Makefile編譯文件
修改Makefile,將編譯工具改爲交叉編譯工具
/* 打開Makefile,將31行左右的CC=gcc更改爲CC=arm-none-linux-guneabi-gcc -static 將32行左右的CPP=gcc -E更改爲CPP=arm-none-linux-guneabi-gcc —E -static 保存退出 輸入make開始編譯 編譯過程中會提示錯誤: util.c: In function 'get_commonlog_time': util.c:100: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o] Error 1 make: *** Waiting for unfinished jobs.... 只需按照提示打開compat.h文件,將第120行的#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 更改爲:#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff即可 保存退出,使用make編譯文件 */
使用ls命令查看boa是否生成成功,再使用ll boa查看boa可執行文件的大小是否爲932743
之後可以使用以下命令爲boa可執行文件瘦身
arm-none-linux-gnueabi-strip boa
之後再次查看boa文件大小,發現減小至642340
-
在開發板終端輸入:mount -t nfs 192.168.3.38:/home/linuxsystemcode/ /mnt -o nolock
其中,192.168.3.38爲Ubuntu的IP地址
-
準備開發板相關運行環境
- 將boa可執行文件複製到開發板/bin目錄下
- 在開發板下創建/www文件夾(根目錄下創建www),並在其中創建cgi-bin目錄
- 在www目錄下創建服務器端的html文件index.html(不能更改文件名)
- 拷貝boa-0.94.13目錄下默認的boa.conf到/etc/boa(在/etc下新建boa)
- 將虛擬機/etc目錄下的mime.types複製到開發板/etc目錄
- 在開發板/etc目錄下,使用vi創建文件group,並添加root:*:0:
-
修改配置文件(也可以先修改文件之後再複製到開發板)
- 打開boa.conf文件(/etc/boa)
- 將第50行左右的,Group nogroup,替換爲Group root
- 將第95行左右的,#Servername www.your.org.here,替換爲Servername www.your.org.here
- 將第115行左右的,DocumentRoot /var/www,替換爲DocumentRoot /www
- 將第194行左右的,ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/,替換爲ScriptAlias /cgi-bin/ /www/cgi-bin/
-
添加自動運行腳本
- 打開/etc/init.d/rcS文件,在文件末尾添加boa &
測試web服務器
最後,開發板終端輸入ifconfig查看開發板IP地址(客戶端必須是同一網段),在任意設備網絡設備中輸入:
http://192.168.3.20(開發板IP),即可出現以下結果
程序中所用的index.html文件內容如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>iTOP-4412</title>
<style type="text/css">
<!--
.STYLE1 {font-size: 36px}
body {
background-color: #996600;
}
-->
</style>
</head>
<body>
<table width="613" height="424" border="0" align="center">
<tr>
<td colspan="2" align="center" valign="middle"><h2 class="STYLE1">iTOP-4412 WEB SERVER </h2></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
</body>
</html>