Porting的過程是參考了
這次試驗的版本是 lighttpd 1.4.32, 可以從這邊download
Android 版本是 4.2.1
CPU: MIPS
首先自己的編譯環境需要先安裝 pcre dev 套件, 且你的host device上到時候也需要有pcre library (怎麼porting pcre, 請參考前一篇文章)
設定好幾個環境變數
然後把lighttpd解壓縮到Android source的某個路徑, 比如說 devices/company/external
切到 lighttpd 資料匣, Apply patch, patch內容如下:
執行下述指令, 產生一些需要的檔案, 如config.h
之後把Android.mk編寫好, 放在lighttpd的資料匣內, 內容如下, 目前的BUILD_OPTION_COMMON_SRC_STATIC
只能被設成false, 如果設成true會有link error的情況.
這樣就可以利用 mm showcommands
or mm -B showcommands
來編譯lighttpd, 編譯完後會產生lighttpd, liblighttpd_common.so and 其他plugin modules.
以下就開始setup host上的環境, 可以先透過adb的方式把相關的modules都push上host device, 接下來檔案存放的路徑是暫時測試用, 你可以自行依自己的需求與規則來擺放
我把 plugins (mod_*.so)都放到 /system/lib/web-plugin 資料夾
把 lighttpd 放到 /system/bin
把 liblighttpd_common.so 放到 /system/lib
另外 libpcre.so 是需要的(這個請參考前篇文章), 請確定libpcre.so有存在/system/lib內
接下來把 lighttpd soruce 內的 doc/config/conf.d 內的所有檔案通通放到 /etc/lighttpd/conf.d
然後在/etc/lighttpd 放上 lighttpd.conf, 內容如下:
上述動作都準備完畢後, 就可以用下述的指令來測試看看整個環境設定是否ok了
如果沒問題的話會, 執行結果會顯示
再來就是驗證是否web server可以運行了, 用以下指令來啟動lighttpd,
在/data/www/htdocs 內放一個index.html來測試
然後你就可以透過browser 連到host device來確認是否可以看到index.html的內容了, 如下:
以上這樣就算是完成porting跟初步測試了. 再進階的就還需要研究研究. 關於web server的東西我其實也都尚無概念, 有很多知識都還要想辦法盡快吸收.
<date: 2013-09-30> 以下是要說明怎麼啟動cgi (也許google可以找到很多答案, 但是這邊是我動手try過後確定可行的方法)
-
edit lighttpd.conf to add mod_alias plugin. 這個動作是一定要作的, 不然會發現就算之後已經有load mod_cgi, 且對應的conf 都設定了, 但卻還是不 work.
-
再來就是去編輯 cgi.conf, uncomment掉以下內容
-
在host device上create /data/www/cgi-bin
資料夾, 並設定好權限 chmod 755 /data/www/cgi-bin
-
由於我的環境沒有porting perl, ruby 等功能, 所以這邊示範的是怎麼用C 寫一個簡單的cgi 程式來測試, 很簡單, 試試以下內容:
將其編譯好後放到/data/www/cgi-bin , 比如說 first, 之後就透過browser來測試看看
/>
如果成功的話, 你就可以看到browser上秀出 Hello world