999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ARM-Linux的App Web+PHP+Sqlite嵌入式Web服務器技術

2011-12-29 00:00:00楊萍
考試周刊 2011年75期


  摘 要: 本文對Linux下的Web服務器技術進行了分析,選擇了AppWeb+PHP+Sqlite的組合建立嵌入式Web服務器作為嵌入式設備生成動態的管理接口,并討論嵌入式Web服務器在基于arm-linux平臺上的移植。
  關鍵詞: ARM-linux AppWeb+PHP+Sqlite Web服務器
  
  1.引言
  用戶需要通過嵌入式設備所提供的管理接口才能對其進行配置、管理和監控,因此管理接口的易用程度和效率成為衡量設備質量的重要標準之一。在嵌入式設備中,加入HTTP服務能將其轉化成Web Server,可以向Internet或內部網提供基于Web的圖形化管理接口,用戶可以使用瀏覽器作為接口來訪問嵌入式設備。這樣不僅能夠使設備的易用性大大提高,而且可以省去專用管理軟件,從而方便地進行統一管理。管理接口如果要收集和反饋用戶信息就需要支持數據庫。目前,Linux系統廣泛采用Apache+PHP+MySQL的組合來構建Web服務器,但Apache與MySQL占用的存儲空間與運行時需要的系統資源很高,不適用于嵌入式設備Web服務器的構建。因此需要選擇對系統資源要求低且功能相當的Appweb與Sqlite分別代替Apache與MySQL。
  2.Linux下常見的Web服務器技術分析
  2.1 Linux下常見的HTTP服務器技術分析
  HTTP服務器目前常見的有:Thttpd、Apache與AppWeb,優缺點分析如下:
  Thttpd:是一個簡單、小型、可移植、快速的安全http服務器,還具有其它服務器目前不具有的十分有用的特點(URL-traffic-based throttling),但它不支持PHP。
  Apache:具有安全、高效、可擴展及與當前http標準保持同步的特點,并能在現在常用的操作系統如Unix和Windows上運行。但應用程序占很大的存儲空間,運行時需要占用很多系統資源,且移植難度很大,不適用于嵌入式設備。
  Appweb:是第一個嵌入式Web服務器,它設計之初就包含安全的思想,具有十分快速、內存使用量小、基于標準的、可移植等特點,特別適用于嵌入式設備,同時支持PHP。
  2.2 Linux下常見的數據庫技術分析
  基于Linux平臺的數據庫非常多,大型的商用數據庫有Oracle、Sybase、Informix、IBM DB2等,常見的主要有PostgreSQL、MySQL、mSQL、Berkeley DB、SQLite等。
  SQLite支持絕大多數標準的SQL語句,采用單文件存放數據庫,速度又比MySQL快上1—2倍,存儲量也不是問題,在操作語句上更類似關系型數據庫的使用,其版權允許無任何限制的應用,包括商業性的產品。由于具有這些優良特性,SQLite已集成至PHP中。
  2.3動態網頁語言技術分析
  ASP全名Active Server Pages,是一個Web服務器端的開發環境,是Microsoft開發的動態網頁語言,繼承了微軟產品的一貫傳統,只能執行于微軟的服務器產品上。
  JSP是Sun公司推出的新一代網站開發語言,JSP可以在Serverlet和JavaBean的支持下,完成功能強大的站點程序,但ARM-Linux一般不支持JVM,即不能支持JSP。
  PHP是一種跨平臺的服務器端的嵌入式腳本語言,能在Windows,Unix,Linux的Web服務器上正常執行。它大量地借用C、Java和Perl語言的語法,并耦合PHP自己的特性,使Web開發者能夠快速地寫出動態產生頁面。它支持目前絕大多數數據庫,包括Sqlite、Oracle、Sybase、Postgres、Mysql,等等。PHP是完全免費的,可以獲得源碼。
  通過上述分析,我選擇AppWeb+PHP+Sqlite作為嵌入式Web服務器。
  3.Appweb+PHP+Qlite在ARM-Linux平臺上的實現
  3.1編譯環境的設置
  假如交叉編譯工具鏈所在的目錄為/usr/local/armv5b-linux-2.3.3-3.3.2,輸出如下環境變量:
  export PATH=$PATH:/usr/local/armv5b-linux-2.3.3-3.3.2/bin
  export CC=″armv5b-linux-gcc″ export AR=″armv5b-linux-ar″
  export RANLIB=″armv5b-linux-ranlib″ export STRIP=″armv5b-linux-strip″
  export CC_FOR_BUILD=″/usr/bin/gcc″ export LD_FOR_BUILD
  =″/usr/bin/ld″
  3.2獲得源代碼
  Appweb、PHP與Sqlite都可以從網上獲取源代碼。
  3.3 Appweb+PHP+Sqlite的編譯
  編譯程序時建立xxx-build及xxx-install目錄(xxx代表應該程序,分別為Appweb,PHP與Sqlite),build目錄用于編譯。這樣,編譯過程生成的文件單獨保存在此目錄下而不污染源代碼目錄,install目錄用于安裝頭文件、庫文件,以及執行程序等。
  3.3.1 Sqlite的編譯
  3.3.1.1將Sqlite-2.8.18.tar.gz解壓后將生成Sqlite目錄。
  3.3.1.2不同體系結構的Linux,如x86和ARM,會有些差別,需要對sqlite/src/sqliteInt.h做一定的修改,以確保btree(B樹)有正確的變量大小,如“ptr”和“char*”。對于ARM-Linux可以找到如下部分:
  # ifndef INTPTR_TYPE
  # if SQLITE_PTR_SZ==4
  在上面的代碼前加上一句:
  # define SQLITE_PTR_SZ 4
  這樣后面的“typedef INTPTR_TYPE ptr”就是定義的“int”類型,而不是“long”型。
  3.3.1.3使用Configure進行一些配置。修改Sqlite目錄下的Configure使其不去檢查交叉編譯環境,注釋掉相應代碼行即可。
  3.3.1.4修改Makefile文件
  將代碼行BCC=armv5b-linux-gcc-g-O2改成BCC=gcc-g-O2。另外,ARM-Linux的交叉編譯工具不提供readline與ncures庫,則繼續修改Makefile,修改如下兩行:
  READLINE_FLAGS=-DHAVE_READLINE=1-I/usr/include/readline→READLINE_FLAGS=LIBREADLINE=-lncurses→LIBREADLINE=
  3.3.2 PHP的編譯過程
  3.3.2.1解壓PHP-5.0.4.tar.gz后在當前工作目錄下生成PHP-5.0.4目錄。
  3.3.2.2修改PHP-5.0.4目錄下的Configure文件使其不去檢查交叉編譯環境,另外,PHP需要版本不低于2.5.10的Libxml支持,但此版本的Libxml庫文件的大小為1.2M字節,在嵌入式系統中使用如此大的文件不太合理,而Libexpat的大小只有0.2M字節,因此使用Libexpat代替Libxml進行比較簡單的XML分析,詳見如下的配置內容。
  
  3.3.2.3進入到PHP-Build目錄,使用Configure進行配置,配置的內容為:
  ../PHP-5.0./configure--prefix=../PHP-install--host=armv5b-linux--build=i586-linux
  --enable-embed=shared--enable-maintainer-zts--with-sqlite--without-pear
  --disable-libxml--disable-dom--disable-simplexml--enable-xml--without-libxml-dir
  --with-libexpat-dir=/path/to/expat/install--with-sqlite=/path/to/sqlite/install
  3.3.2.4運行make生成PHP執行程序與LibPHP.so動態加載庫。并運行make install安裝頭文件、庫文件、執行程序,以及man文件到PHP-Install目錄下。
  3.3.3 Appweb的編譯
  3.3.3.1解壓AppWeb-src-2.0.4-1.tar.gz后在當前工作目錄下生成AppWeb-2.0.4目錄。
  3.3.3.2進入到AppWeb-build目錄,使用Configure進行配置,配置的內容為
  ../appWeb-2.0.4/configure--prefix/usr/local/appWeb--sbinDir=/usr/local/appWeb
  --type=RELEASE--host=arm-linux--enable-access-log--enable-assert
  --enable-config-parse--enable-log--with-PHP5=loadable--with-PHP5-libs=″PHP5 crypt
  resolv z″--with-PHP5-dir=/path/to/PHP/install--with-PHP5-flags=″-I$(BLD_TOP)/$(BLD_PHP5_DIR)-I$(BLD_TOP)/$(BLD_PHP5_DIR)/main-I$(BLD_TOP)/$(BLD_PHP5_DIR)/Zend-I$(BLD_TOP)/$(BLD_PHP5_DIR)/TSRM″
  3.3.3.3運行make生成AppWeb執行程序,并運行make install安裝執行程序及配置的各組件庫,如libauthModule.so等。
  4.在ARM-Linux平臺上運行Web服務器
  修改AppWeb文件中ServerRoot與DocumentRoot指令,ServerRoot表示AppWeb各模塊存放目錄(/usr/local/appWeb),DocumentRoot主服務器文檔存放目錄。將各文檔存放到DocumentRoot指向的目錄。在/etc/rc.d/init.d目錄下建立運行服務器的腳本AppWeb,運行service AppWeb start即可。
  
  參考文獻:
  [1]魏忠,蔡勇,雷紅衛.嵌入式開發詳解.北京:電子工業出版社,2003.
  [2]李善平,劉文峰,王煥龍等.Linux與嵌入式系統.北京:清華大學出版社,2003.
  [3]Karim Yaghmour.Building Embedded Linux Systems.O’ReillyPublisher,2003.
  [4]Matthias Kalle Dalheimer.Running Linux(4th Edition).O’ReillyPublisher,2004.
  [5]Michael Owens.Embedding an SQL Database with SQLite.Linux Journal,2003,(6).

主站蜘蛛池模板: 免费不卡视频| 久久久久久尹人网香蕉| 精品视频在线一区| 在线免费不卡视频| 日韩精品成人网页视频在线| 日韩在线1| 热思思久久免费视频| 国产 日韩 欧美 第二页| 日韩在线视频网| 欧美国产日本高清不卡| 亚洲国产中文精品va在线播放| 亚洲男人天堂久久| 久久a级片| 亚洲中文字幕手机在线第一页| 亚洲日韩国产精品综合在线观看| 欧美在线精品怡红院| 久久不卡精品| 99青青青精品视频在线| 99re精彩视频| 亚洲婷婷六月| 最新国产精品第1页| 中文字幕人妻无码系列第三区| 2021国产精品自拍| 精久久久久无码区中文字幕| 99精品伊人久久久大香线蕉| 色悠久久久| 天堂亚洲网| 国产一区二区三区在线精品专区| 色婷婷在线影院| 永久免费AⅤ无码网站在线观看| 97成人在线视频| 亚洲人成影院在线观看| 福利姬国产精品一区在线| 国产成人调教在线视频| 亚洲欧洲日产国码无码av喷潮| 色综合久久综合网| 亚洲天堂2014| 国产综合网站| 亚洲欧洲综合| 99re在线观看视频| 久久久久国色AV免费观看性色| 久久公开视频| 自慰网址在线观看| 国产JIZzJIzz视频全部免费| 看av免费毛片手机播放| 91精品小视频| 精品久久香蕉国产线看观看gif| 亚洲欧洲日韩久久狠狠爱| 在线欧美一区| 亚洲精品第一在线观看视频| 狠狠综合久久| 在线免费亚洲无码视频| 青草视频免费在线观看| 91精品啪在线观看国产91九色| www.狠狠| 久久99久久无码毛片一区二区| 欧美亚洲一区二区三区在线| 在线观看无码a∨| av在线5g无码天天| 欧美另类精品一区二区三区| 精品欧美一区二区三区在线| 波多野结衣一区二区三区88| 欧美日韩国产综合视频在线观看| 久久毛片网| 人妻无码AⅤ中文字| 欧美爱爱网| 亚洲小视频网站| 久久综合丝袜长腿丝袜| 久久人妻xunleige无码| igao国产精品| 精品国产一区二区三区在线观看 | 国产免费好大好硬视频| 国产精品欧美在线观看| 狠狠v日韩v欧美v| 欧美高清国产| 欧美a级在线| yy6080理论大片一级久久| 亚洲第一色网站| 国产成人综合网在线观看| 欧美亚洲中文精品三区| 久久永久精品免费视频| 一级不卡毛片|