由於公司原有的mini_httpd不能同時支持http/https,所以,必須選擇新的web 服務開源軟件。在網上對比了,最終選用lighttpd這個德國人的開源,這個軟件相對符合我們產品的需求。
1.下載lighttpd-1.4.32.tar.bz2
2.解壓編譯配置
CC=arm-linux-gcc AR=arm-linux-ar LD=arm-linux-ld RANLIB=arm-linux-ranlib STRIP=arm-linux-strip ./configure --prefix=/usr/local/lighttpd --host=i686-pc-linux-gnu --build=i686-pc-linux --disable-FEATURE --enable-shared --disable-static --disable-lfs --disable-ipv6
--without-PACKAGE --without-valgrind --with-openssl --with-openssl-libs=/usr/src/openssl-1.0.1e/ --with-openssl-includes=/usr/src/openssl-1.0.1e/include --without-kerberos5 --without-pcre --without-zlib --without-bzip2
這兒一定要增加openssl的指定和支持。
make
make install
3.把lighttpd.conf modules.conf 配置,和conf.d 裏的cgi.conf做對應的修改
lighttpd.conf裏注意增加.cgi的支持
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".scgi", ".cgi")
modules.conf裏把
include "conf.d/cgi.conf"
打開,做爲支持
cgi.conf裏把
cgi.assign = (".cgi" => "")
這個修改進去。
把修改後的配置文件,lib 和應用程序加到rootfs裏
把生成的.pem文件也放到指定的目錄下,以備https校驗用。
把測試的cgi,html文件放到對應的目錄下,以備測試。
打包測試,http/https都能正常訪問,這只是通過簡單的測試,接下去的幾天,還要改爲軟件架構的正常應用。
開發過程中,遇到問題,並記錄如下:
1.無法支持https,沒有編譯進去。解決方法:配置lighttps時,要指定inclue配置項,網上文檔有大量錯誤。
2.lighttpd: can't resolve symbol 'EVP_md2'錯誤 ,解決方法:openssl配置時要增加enable-md2選項。
3.出現段錯誤,解決方式:重新用openssl1.0.1e版本,更新libssl.so和libcrypto.so
4.無法訪問cgi,原因是cgi用ftp傳入後,是不可執行的,最好是能過打包方式,在包裏改爲可運行屬性。
5.證書無法有效問題,這個要把證書列爲可信任發證商。
openssl的配置和編譯,也花了大量的時間,以後有空,也把這個列出來,以備記錄。