BOA移植

開發板:EDUKIT-III實驗箱,S3C2410+LINUX2.4,實驗箱隨箱光盤提供的Zimage,nor flash啓動。

主機:ubnutn10.4LTS,arm-linux-gcc 2.95.3

問題1:交叉工具鏈:cross-2.95.3.tar.bz2(下載地址:http://ftp.arm.linux.org.uk/pub/armlinux/toolchain/),開始使用的交叉工具鏈是arm-linux-gcc-3.3.2(下載地址:http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.3.2.tar.bz2),使用該工具鏈編譯出來的boa,在開發板上運行時,提示ssh: /lib/i686/libc.so.6: version `GLIBC_2.3′ not found (required by ./boa)錯誤。這是因爲arm-linux-gcc-3.3.2使用的glibc庫版本爲2.3版本,但是開發板上運行的LINUX的glibc版本爲2.2,因此運行boa,在動態鏈接glibc庫時,在開發板上找不到glibc2.3的庫,所以提示這樣的錯誤,解決方法用arm-linux-gcc-2.95.3交叉工具鏈。

交叉工具鏈安裝在/usr/local/arm/2.95.3/目錄下,要把arm-linux-gcc添加到PATH環境變量當中,方法有兩個:1.export PATH=/usr/local/arm/2.95.3/bin:$PATH,source /etc/profile,這種方法每次重啓終端後都必須執行一次;2.編輯/etc/profile文件,在該文件最後添加expot PATH=/usr/local/arm/2.95.3/bin:$PAH,然後重啓後生效。

問題2:對boa配置及其源碼修改完成後,./configure沒有問題,make時遇到如下錯誤:
stuyou@VMUBUNTU:/tmp/boa/boa-0.94.13/src$ make
yacc  -d boa_grammar.y
make: yacc: Command not found
make: *** [y.tab.c] Error 127
編譯一個linux下的c系統,包含詞法和語法分析模塊,Linux上用bison和flex。
yacc是一個文法分析器的生成器,bison即是yacc的GNU版本.Lex和YACC是用於構造詞法分析機和語法解釋器的工具,利用Lex和yacc你可以輕鬆的構造一個語法解釋器。
解決方法:sudo apt-get install flex bison
重新make,問題解決

問題3:在開發板上運行boa時,提示無法綁定IP地址,[03/Aug/2028:07:59:35 +0000] boa.c:194 - unable to bind: Address already in use,通過ps命令查看當前運行進程,結果如下:

/etc/var/boa # ps
  PID  Uid     VmSize Stat Command
    1 root        476 S   init
    2 root            SW  [keventd]
    3 root            SWN [ksoftirqd_CPU0]
    4 root            SW  [kswapd]
    5 root            SW  [bdflush]
    6 root            SW  [kupdated]
    8 root            SW  [mtdblockd]
    9 root            SW  [khubd]
   30 root        500 S   /sbin/httpd -h /usr/embest
   32 root        528 S   /sbin/inetd
   43 root        700 S   -sh
   44 root        476 S   init
   45 root        476 S   init
   46 root        476 S   init
   59 root        608 R   ps

發現httpd進程正在運行,進程號爲30,因此首先禁掉該進程

/etc/var/boa # kill 30

然後再重新啓動boa

etc/var/boa # ./boa
/etc/var/boa # [03/Aug/2028:08:00:03 +0000] boa: server version Boa/0.94.13
[03/Aug/2028:08:00:03 +0000] boa: server built Aug 22 2010 at 14:50:23.
[03/Aug/2028:08:00:03 +0000] boa: starting server pid=62, port 80

/etc/var/boa # ps
  PID  Uid     VmSize Stat Command
    1 root        476 S   init
    2 root            SW  [keventd]
    3 root            SWN [ksoftirqd_CPU0]
    4 root            SW  [kswapd]
    5 root            SW  [bdflush]
    6 root            SW  [kupdated]
    8 root            SW  [mtdblockd]
    9 root            SW  [khubd]
   32 root        528 S   /sbin/inetd
   43 root        704 S   -sh
   44 root        476 S   init
   45 root        476 S   init
   46 root        476 S   init
   62 root        604 S   ./boa
   63 root        608 R   ps

boa啓動成功

問題4:cgi腳本不能正常運行。這是因爲在主機上編譯cgi腳本的時候,主機用戶爲非root用戶,這時編譯出來的cgi腳本不能運行。解決方法切換到root用戶,sudo -i,然後再編譯cgi,arm-linux-gcc -o demo1.cgi demo1.c,下載到開發板上,運行成功。

【boa移植步驟參考如下文檔】

方法:(注意:第1-11步是在PC機上開啓boa服務器的過程)
1.在/tmp下建立一個目錄boa,把boa源碼(boa-0.94.13.tar.gz)拷貝到該目錄下,然後解壓tar -xzvf boa-0.94.13.tar.gz
2.在LINUX家目錄下建立boa目錄,這是boa的安裝目錄。拷貝boa.conf到/home/boa
3.指定配置文檔路徑,把/tmp/boa/boa-0.94.13/src下的defines.h中的第30行#define SERVER_ROOT   “/etc/boa“ 改爲#define SERVER_ROOT   “/home/boa“
4.以下步驟按照“boa的移植.txt”文檔進行。
5.在 /tmp/boa/boa-0.94.13/src下執行./configure,提示
creating ./config.status
creating Makefile
creating config.h
6.然後make,以下是make信息
make: Warning: File `Makefile' has modification time 9.5 s in the future
bison -y  -d boa_grammar.y
gcc  -g -O2 -pipe -Wall -I.   -c -o y.tab.o y.tab.c
y.tab.c: 在函數 ‘yyparse’ 中:
y.tab.c:1295: 警告:隱式聲明函數 ‘yylex’
flex  boa_lexer.l
gcc  -g -O2 -pipe -Wall -I.   -c -o lex.yy.o lex.yy.c
boa_lexer.l: 在函數 ‘yylex’ 中:
boa_lexer.l:82: 警告:隱式聲明函數 ‘yyerror’
boa_lexer.l: 在頂層:
lex.yy.c:1183: 警告:‘yyunput’ 定義後未使用
gcc  -g -O2 -pipe -Wall -I.   -c -o alias.o alias.c
gcc  -g -O2 -pipe -Wall -I.   -c -o boa.o boa.c
gcc  -g -O2 -pipe -Wall -I.   -c -o buffer.o buffer.c
gcc  -g -O2 -pipe -Wall -I.   -c -o cgi.o cgi.c
gcc  -g -O2 -pipe -Wall -I.   -c -o cgi_header.o cgi_header.c
gcc  -g -O2 -pipe -Wall -I.   -c -o config.o config.c
gcc  -g -O2 -pipe -Wall -I.   -c -o escape.o escape.c
gcc  -g -O2 -pipe -Wall -I.   -c -o get.o get.c
gcc  -g -O2 -pipe -Wall -I.   -c -o hash.o hash.c
gcc  -g -O2 -pipe -Wall -I.   -c -o ip.o ip.c
gcc  -g -O2 -pipe -Wall -I.   -c -o log.o log.c
gcc  -g -O2 -pipe -Wall -I.   -c -o mmap_cache.o mmap_cache.c
gcc  -g -O2 -pipe -Wall -I.   -c -o pipe.o pipe.c
gcc  -g -O2 -pipe -Wall -I.   -c -o queue.o queue.c
gcc  -g -O2 -pipe -Wall -I.   -c -o read.o read.c
gcc  -g -O2 -pipe -Wall -I.   -c -o request.o request.c
request.c: 在函數 ‘get_request’ 中:
request.c:84: 警告:傳遞參數 3 (屬於 ‘accept’) 給指針時目標與指針有/無符號不一致
gcc  -g -O2 -pipe -Wall -I.   -c -o response.o response.c
gcc  -g -O2 -pipe -Wall -I.   -c -o select.o select.c
gcc  -g -O2 -pipe -Wall -I.   -c -o signals.o signals.c
gcc  -g -O2 -pipe -Wall -I.   -c -o util.o util.c
gcc  -g -O2 -pipe -Wall -I.   -c -o sublog.o sublog.c
gcc  -g -O2 -pipe -Wall -I.   -c -o timestamp.o timestamp.c
gcc  -o boa y.tab.o lex.yy.o alias.o boa.o buffer.o cgi.o cgi_header.o config.o escape.o get.o hash.o ip.o log.o mmap_cache.o pipe.o queue.o read.o request.o response.o select.o signals.o util.o sublog.o timestamp.o -g
gcc  -g -O2 -pipe -Wall -I.   -c -o index_dir.o index_dir.c
gcc  -o boa_indexer index_dir.o escape.o -g
make: 警告:檢測到時鐘錯誤。您的創建可能是不完整的。
出現警告可以忽略,只要不出現錯誤即可,Make完成後,會在當前目錄下生成boa可執行文件。
7.拷貝boa boa.indexer到/home/boa/目錄
8.按照“boa的移植.txt”配置boa.conf
9.在/home/boa下創建www文件夾,cig-bin文件夾,log文件夾,把html相關文件拷貝到www文件夾
10.啓動boa.在/home/boa/目錄下執行./boa,默認在後臺運行,ps -a命令,可以看到boa正確啓動,或者cat log/error_log觀察錯誤信息,如果boa啓動正確,則打印如下信息
[27/Jul/2010:07:57:05 +0000] boa: server version Boa/0.94.13
[27/Jul/2010:07:57:05 +0000] boa: server built Jul 27 2010 at 15:30:25.
[27/Jul/2010:07:57:05 +0000] boa: starting server pid=3526, port 80
11.打開瀏覽器,訪問該boa服務器,瀏覽器地址欄中輸入http://192.168.1.120,該地址爲主機IP。瀏覽器輸出“hello, this is a web server!”
12.移植boa到嵌入式開發板,打開boa.conf的94行,#ServerName www.your.org.here,去掉註釋#
13.boa.conf的第155行MimeTypes /etc/mime.types修改爲MimeTypes /dev/null,如果不修改該行,則應該把PC上/etc/mime.types文件拷貝到開發板
14.打開/tmp/boa/boa-0.94.13/src下的Makefile文件,CC = gcc  和CPP = gcc -E 修改爲CC=arm-linux-gcc 和 CPP = arm-linux-gcc -E
15.然後重新make。先執行make clean,然後再make
16.啓動開發板,進入到開發板上的LINUX,在/home目錄下新建boa目錄
17.在/home/boa目錄下新建www,log,cgi-bin目錄下
18.把PC機上編譯好的boa,boa_indexer,boa.conf通過串口線下載到開發板的/home/boa下
19.把PC機上的www目錄下的文件壓縮打包,然後傳送到開發板,解壓後,放入/home/boa/www下
20.使用ifconfig eth0 ipaddress
20.在PC機上的瀏覽器中輸入開發板網址,可以看到“hello, this is a web server!”,boa服務器就在開發板中正確搭建了。
21.網頁中的cgi編程:編寫程序代碼,比如爲demo2.c,根據請求網頁(demo2.html)中<FORM ACTION="/cgi-bin/demo2.cgi">規定的demo2.cgi文件名,然後進行編譯,arm-linux-gcc -o demo2.cgi demo2.c
22.然後把demo2.html下載到開發板/home/boa/www目錄下,把編譯好的demo2.cgi拷貝到開發板的/home/boa/cgi-bin目錄下,併爲demo2.cgi增加執行權限
23.在PC機中的瀏覽器地址欄輸入http://http://192.168.1.120/demo2.html,這就是使用cgi編程的流程。
24.html網頁向boa服務器發送的數據格式是默認的,也可以通過腳本文件,更改發送數據格式。
25.該例子的所有文件均在該目錄下。

【boa的移植】

boa服務器移植:

<一> 修改源碼:
   1. 修改src/defines.h中的
      第30行:#define SERVER_ROOT "/home/boa"  # boa配置文件(boa.conf)的存放路徑
   2. 修改compat.h:
      去掉 第120行"#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff" 中的 "##"      這是早期編譯器使用的,現在編譯器不支持該動作,所以去掉。
      去掉 第126行"#define TIMEZONE(foo) foo##->tm_zone" 中的 "##" 
   3. 修改boa.c
     
      註釋掉 第210行~215行:
   
   
      註釋掉 第226行 : //DIE("icky Linux kernel bug!");


<二> 編譯boa:
   1. ./configure
   2. make


<三> 配置:
    1. 拷貝boa、boa_indexer到開發板/home/boa目錄
    2. 拷貝boa.conf到開發板/home/boa目錄
    3. 修改boa.conf
        a. 修改User nobody 爲 User 0 ;    表示root用戶運行該程序
 b. 修改Group nogroup 爲 Group 0

 c. ErrorLog /home/boa/log/boa/error_log  錯誤日誌放在該文件夾下。
 d. AccessLog /home/boa/log/access_log    訪問日誌放在該文件夾下

        e. DocumentRoot /home/boa/www             網頁文件放在該目錄下
    DirectoryMaker /home/boa/boa_indexer    
        f. ScriptAlias /cgi-bin/ /home/boa/cgi-bin 腳本放置目錄

 g. 此步只要在開發板上做(如果boa運行在開發板上,則要做這一步,如果只運行在PC機上,則不用做這步): 94行,#ServerName www.your.org.here,去掉註釋#,#後面的字符爲服務器的名字,可以隨便取。
 h.boa.conf的第155行MimeTypes /etc/mime.types修改爲MimeTypes /dev/null,如果不修改該行,則應該把PC上/etc/mime.types文件拷貝到開發板
   
    4. 根據配置創建相關目錄:(在/home/boa/目錄下創建以下目錄)
       log  www  cgi-bin
    5. 在www放入html文件, 在cgi-bin放入cgi腳本

【boa服務器移植常見錯誤】

一> 編譯boa程序
1. www.boa.org下載boa-0.94.13.tar.gz
2. 解壓
3. ./configure
4. make
編譯時用2.95.3以上的版本會出錯:
util.c: 100: 1: pasting “t” and “->” does not give a valid preprocessing token make: [util.o] Error1

解決方法:
方法1>. 修改compat.h中的
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
爲:
#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff

方法2>. 改用2.95.3版本的編譯器。

二> 修改配置文件boa.conf
 1. 建立/etc/boa目錄, 並複製boa.conf到/etc/boa目錄下,並按照以下步驟進行修改。
 2. 修改訪問權限:修改User nobody 爲 User 0 ; 修改Group nogroup 爲 Group 0
 3. 設定日誌目錄:boa日誌有兩部分,Errorlog  和 AccessLog
一般情況下爲/var/log/boa/error_log 和 /var/log/boa/access_log兩個文件。所以根據自己的情況情況設置日誌目錄:
ErrorLog /var/log/boa/error_log
AccessLog /var/log/boa/access_log
(注意:這裏/var/log/boa目錄必須爲可寫,否則會出項錯誤:log.c:73 – Unable to dup2 the error log: Bad file r.)

 4. 設置html文件目錄: DocumentRoot /var/www
 5. 設置默認首頁: DirectoryIndex index.html
 6. 設置cgi腳本目錄:  將
     ScriptAlias /cgi-bin/ /usr/lib/cgi-bin 
     修改爲
     ScriptAlias /cgi-bin/ /var/www/cgi-bin
三> 根據第二步設置建立相關文件夾並放入文件:
 1. 根據(第二.3步)的設置建立/var/boa 文件夾。
 2. 根據(第二.4步)的設置建立/var/www 文件夾, 並在此目錄下存放html文件(包括index.html文件)。
 3. 根據(第二.6步)的設置建立/var/www/cgi-bin 文件夾,  並存放一些用來測試的cgi腳本。

四> OK,運行boa程序。
   在windows 下通過http://172.20.223.151這種形式訪問,進行測試。

五> 移植到開發板
  1>. (第一.3步)操作完成之後,修改Makefile文件:
   將:
 CC = gcc
 CPP = gcc -E 
   該爲:
 CC = arm-linux-gcc
 CPP = arm-linux-gcc -E
   make即可。
  2>. 拷貝PC上/etc/mime.types文件到開發板/etc目錄下
      或者將boa.conf文件中
 MimeTypes /etc/mime.types
      修改爲:
 MimeTypes /dev/null   

boa配置相關目錄:
1. boa.conf 的存放目錄:
   默認boa.conf是在/etc/boa.conf目錄的,boa運行時會自動去找/etc/bon.conf目錄。
   這個設定是在define.h文件中定義的,可在編譯之前進行修改。

2. log目錄: 分爲 Errorlog  和 AccessLog 兩個目錄,可在boa.conf中修改。
 如:
 ErrorLog /var/log/boa/error_log
 AccessLog /var/log/boa/access_log

3. html文件存放目錄, 可在boa.conf文件中修改。
 如: DocumentRoot /var/www

4. cgi腳本存放目錄, 可在boa.conf文件中修改。
 如: ScriptAlias /cgi-bin/ /var/www/cgi-bin

5. mime.types存放目錄, 可在boa.conf文件中修改。
 如: MimeTypes /etc/mime.types


六> 常見錯誤:
 1>. 錯誤1: gethostbyname:: No such file or directory
     解決辦法: 修改boa.conf   去掉 ServerName www.your.org.here 前的註釋符號(#)
 2>. 錯誤1: util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o]
     解決辦法: 修改 src/compat.h
   找到
   #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
   修改成
   #define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
 3>. 錯誤2: boa.c:211 - getpwuid: No such file or directory
     解決辦法: 修改src/boa.c
   註釋掉下面這段程序:
   if (passwdbuf == NULL) {
   DIE(”getpwuid”);
   }
   if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
   DIE(”initgroups”);
   }
  即修改爲:
  #if 0
   if (passwdbuf == NULL) {
   DIE(”getpwuid”);
   }
   if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
   DIE(”initgroups”);
   }
  #endif
 4>. 錯誤3: boa.c:228 - icky Linux kernel bug!: No such file or directory
    解決辦法: 修改src/boa.c
  註釋掉下面語句:
  if (setuid(0) != -1) {
  DIE(”icky Linux kernel bug!”);
  }
  即修改爲:
  #if 0
   if (setuid(0) != -1) {
   DIE(”icky Linux kernel bug!”);
   }
  #endif

 5>. 錯誤4: log.c:73 unable to dup2 the error log:bad file descriptor
    解決方法:
    方法1> 確定日誌目錄對與所有用戶都具有可讀/寫的權限
    方法2> 修改src/log.c (建議採用方法1)
  註釋掉
  if (dup2(error_log, STDERR_FILENO) == -1) {
  DIE("unable to dup2 the error log");
  }
  即修改爲:
  #if 0
     if (dup2(error_log, STDERR_FILENO) == -1) {
   DIE("unable to dup2 the error log");
   }
    #endif

【boa服務器的移植流程,網上某篇文檔】
Boa是一種非常小巧的Web服務器,其可執行代碼只有大約60KB左右。作爲一種單任務Web服務器,Boa只能依次完成用戶的請求,而不會fork出新的進程來處理併發連接請求。但Boa支持CGI,能夠爲CGI程序fork出一個進程來執行。Boa的設計目標是速度和安全。

下面給大家介紹一下Boa服務器移植的具體操作步驟,希望能夠有幫助。

環境
       主機:ubuntu8.10
       交叉工具鏈:gcc-3.4.5-glibc-2.3.6
       目標:s3c2410開發板

結合網上一些文檔,整理了一個比較完整的文檔。

1.下載Boa源碼

下載地址: http://www.boa.org/

最新發行版本: 0.94.13

下載 boa-0.94.13.tar.gz

解壓:# tar xzf boa-0.94.13.tar.gz

2.安裝需要工具bison,flex

sudo apt-get install bison flex

否則會出現如下錯誤

make: yacc:命令未找到
       make: *** [y.tab.c] 錯誤 127

make: lex:命令未找到
       make: *** [lex.yy.c] 錯誤 127

3.修改文件

(1)修改 src/compat.h

找到

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

修改成

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

否則會出現錯誤:

util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o] 錯誤 1

(2)修改 src/log.c

註釋掉

if (dup2(error_log, STDERR_FILENO) == -1) {
                         DIE("unable to dup2 the error log");
                   }

爲:

 

否則會出現錯誤:

log.c:73 unable to dup2 the error log:bad file descriptor

(3)修改src/boa.c

註釋掉下面兩句話:

if (passwdbuf == NULL) {
        DIE(”getpwuid”);
        }
        if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
        DIE(”initgroups”);
        }

#if 0
        if (passwdbuf == NULL) {
        DIE(”getpwuid”);
        }
        if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
        DIE(”initgroups”);
        }
        #endif

否則會出現錯誤:boa.c:211 - getpwuid: No such file or directory

註釋掉下面語句:

if (setuid(0) != -1) {
                        DIE(”icky Linux kernel bug!”);
        }

#if 0
         if (setuid(0) != -1) {
                        DIE(”icky Linux kernel bug!”);
                }

#endif

否則會出現問題:boa.c:228 - icky Linux kernel bug!: No such file or directory

4、生成Makefile文件

執行:

#cd boa-0.94.13/src
         #./configure

5、修改Makefile

cd src
         vim Makefile

修改CC = gcc 爲 CC = arm-softfloat-linux-gnu-gcc

修改CPP = gcc -E 爲 CC = arm-softfloat-linux-gnu-gcc -E

6、編譯

make
         ls -l boa
         -rwxr-xr-x 1 david david 189223 2009-05-31 13:44 boa

然後爲生成的二進制文件boa瘦身

arm-softfloat-linux-gnu-strip boa
         ls -l boa
         -rwxr-xr-x 1 david david 61052 2009-05-31 13:51 boa

可以發現boa的大小前後差距很大這爲我們節省了很大的空間

7、Boa的配置

這一步的工作也在電腦主機上完成。

在boa-0.94.13目錄下已有一個示例boa.conf,可以在其基礎上進行修改。如下:

#vi boa.conf

(1)Group的修改

修改 Group nogroup

爲 Group 0

(2)user的修改

修改 User nobody

爲 User 0

(3)ScriptAlias的修改

修改ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

爲 ScriptAlias /cgi-bin/ /www/cgi-bin/

(5)DoucmentRoot的修改

修改DoucmentRoot /var/www

爲DoucmentRoot /www

(6)ServerName的設置

修改#ServerName www.your.org.here

爲 ServerName www.your.org.here

否則會出現錯誤“gethostbyname::No such file or directory”

(7)AccessLog修改

修改AccessLog /var/log/boa/access_log

爲#AccessLog /var/log/boa/access_log

否則會出現錯誤提示:“unable to dup2 the error log: Bad file descriptor”

(8)以下配置和boa.conf的配置有關,都是在ARM根文件系統中創建

以下步驟在開發板上進行:

創建目錄/etc/boa並且把boa 和 boa.conf拷貝到這個目錄下

mkdir /etc/boa

創建HTML文檔的主目錄/www

mkdir /www

創建CGI腳本所在錄 /www/cgi-bin

mkdir /www/cgi-bin

以下步驟在ubuntu下進行:

將boa.conf拷貝到開發板根文件系統的/etc/boa下

#cp boa.conf /source/rootfs/etc/boa

將boa拷貝到開發板根文件系統的/etc/boa下

#cp src/boa /source/rootfs/etc/boa

將ubuntu下/etc/mime.types拷貝到開發板根文件系統的/etc下

#cp /etc/mime.types /source/rootfs/etc

將你的主頁index.html拷貝到www目錄下

8、測試

打開一個瀏覽器輸入開發板ip看看效果

OK

 


我使用的是micro2440開發板

boa.conf配置如下:

Port 80
User root
Group root
ErrorLog /dev/console
AccessLog /dev/null
ServerName IntelligenceApplianceServer
DocumentRoot /www
DirectoryIndex index.html
KeepAliveMax 1000
KeepAliveTimeout 10
MimeTypes /etc/mime.types
DefaultType text/plain
CGIPath /bin
AddType application/x-httpd-cgi cgi
ScriptAlias /cgi-bin/ /www/cgi-bin/


在/www目錄下創建micro2440文件夾,將原開發板的所有內容轉移到該文件夾下

瀏覽器中輸入http://192.168.0.126/micro2440/訪問

 


第四步 CGI腳本測試

1、編寫Helloworld.c程序


#include <stdio.h>

int main(void)
{
        printf("Content-type: text/html/n/n");
        printf("<html>/n");
        printf("<head><title>CGI Output</title></head>/n");
        printf("<body>/n");
        printf("<h1>Hello,world.</h1>/n");
        printf("<body>/n");
        printf("</html>/n");
        exit(0);
}

 

    交叉編譯生成helloworld.cgi

# arm-linux-gcc -o helloworld.cgi helloworld.c

2、瀏覽

    將helloworld.cgi拷貝至/var/www/cgi-bin/下,瀏覽器輸入

    http://192.168.0.126/cgi-bin/helloworld.cgi

發佈了9 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章