1. 程式人生 > >在JZ2440板上關於一直Boa伺服器的一點心得總結

在JZ2440板上關於一直Boa伺服器的一點心得總結

            作為一個初入嵌入式學習不久的菜鳥,在這裡寫部落格還是挺害羞的。應一起學習的夥伴的要求,同時也想通過某種方式來記錄自己學習過程的點滴,給自己一個督促,給自己一個未來。

             下面介紹一下在S3C2440硬體平臺上如何Boa伺服器移植完成相應工作,只求勿噴,多多指教。

一、下載Boa原始碼

Boa原始碼下載地址:http://www.boa.org/或 http://labs.nevion.com/open-source/ 目前最新發行版本:0.94.13(05年更新版本),在linux上下載boa-0.94.13.tar.gz壓縮包, 並將其解壓並進入解壓原始碼目錄的src子目錄。

1.#tar zxvf boa-0.94.13.tar.gz

2.#mv boa-0.94.13 boa_arm

3.#cd boa_arm/src

二、配置編譯Boa檔案

下面所有操作都在src子目錄下操作

        1、#vim defines.h  修改#define SERVER_ROOT "/etc/boa"統一為“/usr/boa”。
     SERVER_ROOT為boa啟動時的配置檔案boa.conf存放路徑,這裡我們統一為/usr/boa.(其實這個路徑可以不修改,但是記住一定要將boa.conf檔案放在S3C2440硬體平臺上對應的路徑下)
       2、生成Makefile檔案
#./configure
         #vim Makefile 進入vim進行修改交叉編譯器
         將:CC= gcc  CPP=gcc -E
     改為:CC=arm-linux-gcc  CPP=arm-linux-gcc -E
 3、修改boa_arm/src/compat.h
找到#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
      為:#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff 否則在編譯的時候會出現如下所示錯誤:
util.c: 100: 1: pasting"t"and"->"does not give a valid preprocessing token make: [util.o] Error1
 4、修改src/log.c (其實完全可以不改,只要確保日誌目錄對與所有使用者都具有可讀/寫的許可權

  if(dup2(error_log, STDERR_FILENO) == -1) {

   DIE("unableto dup2 the error log"); }

   即修改為:

   #if 0

     if (dup2(error_log, STDERR_FILENO) == -1) {

   DIE("unable to dup2 the error log"); }

    #endif

否則在編譯的時候會出現如下所示錯誤:

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

5、修改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
6、然後執行make進行編譯,就可得到執行程式boa
#make
         生成的boa執行檔案大小為175.8KB。通過執行下面命令就可以將檔案中除錯資訊除去,得到一個約60K的boa檔案。     #arm-linux-strip boa
之後就可以將boa檔案拷到S3C2440硬體平臺上,至於放在哪個目錄下,大家根據自己習慣來在SecureCRT中通過串列埠就行操作。我是把boa檔案放到了bin目錄下。
三、修改配置檔案boa.conf(這個修改配置可以在linux下修改也可以在SecureCRT中通過串列埠就行操作
       以下我是在SecureCRT中操作的(前提是你已經把boa.conf從linux下拷到了開發板上
1.在開發板/etc目錄下建立/etc/boa目錄, 並複製boa.conf到/etc/boa目錄下,並按照以下步驟進行修改。

   #mkdir /etc/boa

   #cp boa.conf /etc/boa

#vim boa.conf 進入boa.conf中進行配置

2.訪問埠號設定

Port 80,可以設定我們訪問網頁時的埠號預設為80—訪問時無需指定,假如改變了此埠號為8080,必須以下列格式訪問: http://192.168.1.3:8080。一般在同一個電腦上執行多個boa伺服器時可採用此方法我們這裡保持預設即可。(這些都是通過些大牛部落格上學來的,大家不妨可以試試)

3. 修改訪問許可權:

    修改User nobody 為 user 0

   修改Group nogroup 為 group 0

4. 設定日誌目錄:boa日誌有兩部分,Errorlog 和 AccessLog

    預設為/var/log/boa/error_log和/var/log/boa/access_log兩個檔案。因為要移植到開發板上所以我統一修改

   ErrorLog /etc/boa/error_log

   AccessLog /etc/boa/access_log

5. 設定html檔案目錄:

預設為:DocumentRoot /var/www 我們統一修改為:

DocumentRoot /etc/boa/www

6. 設定預設首頁: DirectoryIndex index.html

這是訪問網頁時若不指定訪問的網頁名稱,伺服器預設返回的網頁,我們不做修改

7. 設定cgi指令碼目錄:  將

          ScriptAlias /cgi-bin/ /usr/lib/cgi-bin

    修改為

          ScriptAlias /cgi-bin/ /etc/boa/cgi-bin  

8.ServerName www.your.org.here 可以不修改,一般註釋掉

9. 把mime.types檔案複製到開發板/etc/boa目錄。

其實以上修改沒有定式,大家操作時可以根據自己習慣修改相應的目錄即可。最後就比較簡單了,在開發板/etc/boa目錄下建立日誌檔案所在目錄/etc/boa/log,建立HTML文件的主目錄/etc/boa/www,建立CGI指令碼所在目錄/etc/boa/cgi-bin.剩下的就可在/etc/boa/www

 下放一個自己寫好的.html檔案就好了。然後執行boa檔案:# /bin/boa。現在就可以連線硬體網路,在電腦瀏覽器裡訪問已建立好的伺服器裡的.html頁面了。須記得IP就是開發板的IP,大家自己#ifconfig 下就可以了。

初次,勿見怪。希望能互相學習。