在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 下就可以了。

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

       


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章