移植BOA服務器到開發板

移植BOA 服務器到GEC210 開發板 html

開發平臺
主機:VMWare--Ubuntu 10.04 LTS
開發板:GEC210 / linux-2.6.35.7
編譯器:arm-linux-gcc-4.5.1
所需軟件:boa-0.94.13.tar.gz
下載:http://www.boa.org/boa-0.94.13.tar.gz
第一部分  移植步驟
BOA 服務程序編譯
一、設置好交叉編譯工具鏈路徑:
export PATH=/usr/local/arm/4.5.1/bin:$PATH
二、解壓下載好的BOA 壓縮包
tar zxvf boa-0.94.13.tar.bz2
三、進入解壓後的目錄
cd boa-0.94.13
四、進入BOA 源碼包的src 目錄(下面操做均在該目錄下進行)
cd src
五、利用configure 工具配置生成Makefile 文件
./configure
六、修改生成的Makefile 文件(設置交叉編譯器)

CC = gcc
CPP = gcc –E
修改成:
CC=arm-linux-gcc
CPP=arm-linux-gcc –E

七、修改defines.h 文件
將#define SERVER_ROOT 「/etc/boa」修改成#define SERVER_ROOT 「/gec/web」
該處定義的是WEB 服務器的文件根目錄,跟boa.conf 文件中的DocumentRoot 一致便可。
八、修改compat.h 文件
將#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改爲#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
防止在make 時出現以下錯誤提示:
util.c:100:1: pasting "t" and "->" does not give a valid preprocessing token
九、修改boa.c 文件
註釋掉下面兩句話:
#if 0
if (passwdbuf == NULL) {
DIE(」getpwuid」);
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE(」initgroups」);
}
#endif
不然會出現錯誤: getpwuid: No such file or directory
註釋掉下面語句:
#if 0
if (setuid(0) != -1) {
DIE(」icky Linux kernel bug!」);
}
#endif
不然會出現錯誤: - icky Linux kernel bug!: No such file or directory
十、編譯boa
make
至此,在src 目錄中將獲得交叉編譯後的boa 程序,可使用如下方法縮小程序的體積
arm-linux-strip boa //去掉相關調試信息,對交叉編譯生成的boa 程序瘦身。
編譯錯誤(1):
yacc  -d boa_grammar.y
make: yacc:命令未找到
make: *** [y.tab.c]
解決辦法:#apt-get install bison,安裝完成後要再一次執行 #./configure
再執行 #make
編譯錯誤(2):
y.tab.c: 在函數‘yyparse’中:
y.tab.c:1319:7: 警告:隱式聲明函數‘yylex’
lex  boa_lexer
make: lex:命令未找到
make: *** [lex.yy.c] 錯誤127
解決辦法:#yum install flex
安裝完成,再#make就能夠了
第二部分  BOA 服務器運行環境搭建
1、在解壓的boa 源碼目錄下有個boa.conf 文件,根據GEC210 根文件系統的設計,對它進行以下修改:
一、修改用戶與用戶組信
1)、User 的修改:
將User nobody 修改成User 0
2)、Group 的修改:
將Group nogroup 修改成Group 0
在根文件系統中的/etc/passwd 文件中沒有nobody 用戶,因此設成0。
在根文件系統中的/etc/group 文件中沒有nogroup 組,因此設成0。
二、相關日誌文件存放位置項,保留將保存日誌文件,根據須要能夠選擇是否註釋掉
#ErrorLog /var/log/boa/error_log
#AccessLog /var/log/boa/access_log
三、打開ServerName 的設置:
將#ServerName www.your.org.here 前面的#號去掉,該項默認爲未打開,執
行Boa 會異常退出,提示「gethostbyname::No such file or directory」,因此
須打開。
四、將DocumentRoot /var/www 修改成:DocumentRoot /gec/web,否則會提示錯誤
GET / HTTP/1.1" ("/var/www/"): document open: No such file or directory
五、將DirectoryMaker /usr/lib/boa/boa_indexer 註釋掉
六、將MimeTypes /etc/mime.types 修改成:MimeTypes /gec/web/mime.types
七、將DefaultType text/plain 修改成:DefaultType text/html。
八、將Alias /doc /usr/doc 註釋掉。
九、SccriptAlias 的設置:
將ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/修改成
ScriptAlias /cgi-bin/ /gec/web/cgi-bin/
至此,BOA 服務器配置已經完成,接下來完善根文件系統便可在GEC210 上運行。
2、完善根文件系統
一、在開發板的根文件系統根目錄建立必要的BOA 服務器運行目錄:
在根文件系統的根目錄下建立/gec/web 目錄:
cd /root/rootfs
mkdir -p gec/web
進入到建立好的web 目錄下,建立cgi-bin 目錄:
mkdir cgi-bin
二、把交叉編譯生成的boa 程序和配置好的boa.conf 文件及主機下的/etc/mime.types 文件
都複製到板上的/gec/web 目錄下,並在該目錄下建立一文件index.html,文件內容能夠參
考以下:
<html>
<head>
<title>BOA TEST</title>
</head>
<body>
<h1>BOA TEST</h1>
</body>
</html>
三、進入到板上的/gec/web 目錄下,執行./boa,能夠看到以下啓動信息:
在主機上啓動瀏覽器,輸入URL 爲http://192.168.0.23,訪問板上的BOA 服務,效果以下:linux

wps_clip_image-20959
四、測試完靜態頁面後,接下來測試CGI 腳本文件:
在主機上建立一文件test.c,文件內容以下:
include <stdio.h>
int main(void)
{
printf("Contenttype:text/html\n\n");
printf("<html>\n");
printf("<head><title>BOA CGI TEST</title></head>\n");
printf("<body>\n");
printf("<h1>BOA CGI TEST</h1>\n");
printf("</body>\n");
printf("</html>\n");
return 0;
}
編譯:arm-linux-gcc test.c –o test.cgi
而後用交叉編譯工具鏈編譯,將獲得的test.cgi 文件複製到板上的/gec/web/cgi-bin 目錄下:
在瀏覽器輸入http://192.168.0.23/cgi-bin/test.cgi,能夠看到以下效果: web

wps_clip_image-21077

相關文檔及文件下載連接: http://download.csdn.net/detail/klcf0220/5888169 小程序

另外還有一份關於S3C2440開發板的:http://download.csdn.net/detail/klcf0220/5888157瀏覽器

相關文章
相關標籤/搜索