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

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

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


  摘 要: 本文對Linux下的Web服務器技術進行了分析,選擇了AppWeb+PHP+Sqlite的組合建立嵌入式Web服務器作為嵌入式設備生成動態(tài)的管理接口,并討論嵌入式Web服務器在基于arm-linux平臺上的移植。
  關鍵詞: ARM-linux AppWeb+PHP+Sqlite Web服務器
  
  1.引言
  用戶需要通過嵌入式設備所提供的管理接口才能對其進行配置、管理和監(jiān)控,因此管理接口的易用程度和效率成為衡量設備質量的重要標準之一。在嵌入式設備中,加入HTTP服務能將其轉化成Web Server,可以向Internet或內(nèi)部網(wǎng)提供基于Web的圖形化管理接口,用戶可以使用瀏覽器作為接口來訪問嵌入式設備。這樣不僅能夠使設備的易用性大大提高,而且可以省去專用管理軟件,從而方便地進行統(tǒng)一管理。管理接口如果要收集和反饋用戶信息就需要支持數(shù)據(jù)庫。目前,Linux系統(tǒng)廣泛采用Apache+PHP+MySQL的組合來構建Web服務器,但Apache與MySQL占用的存儲空間與運行時需要的系統(tǒng)資源很高,不適用于嵌入式設備Web服務器的構建。因此需要選擇對系統(tǒng)資源要求低且功能相當?shù)腁ppweb與Sqlite分別代替Apache與MySQL。
  2.Linux下常見的Web服務器技術分析
  2.1 Linux下常見的HTTP服務器技術分析
  HTTP服務器目前常見的有:Thttpd、Apache與AppWeb,優(yōu)缺點分析如下:
  Thttpd:是一個簡單、小型、可移植、快速的安全http服務器,還具有其它服務器目前不具有的十分有用的特點(URL-traffic-based throttling),但它不支持PHP。
  Apache:具有安全、高效、可擴展及與當前http標準保持同步的特點,并能在現(xiàn)在常用的操作系統(tǒng)如Unix和Windows上運行。但應用程序占很大的存儲空間,運行時需要占用很多系統(tǒng)資源,且移植難度很大,不適用于嵌入式設備。
  Appweb:是第一個嵌入式Web服務器,它設計之初就包含安全的思想,具有十分快速、內(nèi)存使用量小、基于標準的、可移植等特點,特別適用于嵌入式設備,同時支持PHP。
  2.2 Linux下常見的數(shù)據(jù)庫技術分析
  基于Linux平臺的數(shù)據(jù)庫非常多,大型的商用數(shù)據(jù)庫有Oracle、Sybase、Informix、IBM DB2等,常見的主要有PostgreSQL、MySQL、mSQL、Berkeley DB、SQLite等。
  SQLite支持絕大多數(shù)標準的SQL語句,采用單文件存放數(shù)據(jù)庫,速度又比MySQL快上1—2倍,存儲量也不是問題,在操作語句上更類似關系型數(shù)據(jù)庫的使用,其版權允許無任何限制的應用,包括商業(yè)性的產(chǎn)品。由于具有這些優(yōu)良特性,SQLite已集成至PHP中。
  2.3動態(tài)網(wǎng)頁語言技術分析
  ASP全名Active Server Pages,是一個Web服務器端的開發(fā)環(huán)境,是Microsoft開發(fā)的動態(tài)網(wǎng)頁語言,繼承了微軟產(chǎn)品的一貫傳統(tǒng),只能執(zhí)行于微軟的服務器產(chǎn)品上。
  JSP是Sun公司推出的新一代網(wǎng)站開發(fā)語言,JSP可以在Serverlet和JavaBean的支持下,完成功能強大的站點程序,但ARM-Linux一般不支持JVM,即不能支持JSP。
  PHP是一種跨平臺的服務器端的嵌入式腳本語言,能在Windows,Unix,Linux的Web服務器上正常執(zhí)行。它大量地借用C、Java和Perl語言的語法,并耦合PHP自己的特性,使Web開發(fā)者能夠快速地寫出動態(tài)產(chǎn)生頁面。它支持目前絕大多數(shù)數(shù)據(jù)庫,包括Sqlite、Oracle、Sybase、Postgres、Mysql,等等。PHP是完全免費的,可以獲得源碼。
  通過上述分析,我選擇AppWeb+PHP+Sqlite作為嵌入式Web服務器。
  3.Appweb+PHP+Qlite在ARM-Linux平臺上的實現(xiàn)
  3.1編譯環(huán)境的設置
  假如交叉編譯工具鏈所在的目錄為/usr/local/armv5b-linux-2.3.3-3.3.2,輸出如下環(huán)境變量:
  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都可以從網(wǎng)上獲取源代碼。
  3.3 Appweb+PHP+Sqlite的編譯
  編譯程序時建立xxx-build及xxx-install目錄(xxx代表應該程序,分別為Appweb,PHP與Sqlite),build目錄用于編譯。這樣,編譯過程生成的文件單獨保存在此目錄下而不污染源代碼目錄,install目錄用于安裝頭文件、庫文件,以及執(zhí)行程序等。
  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”類型,而不是“l(fā)ong”型。
  3.3.1.3使用Configure進行一些配置。修改Sqlite目錄下的Configure使其不去檢查交叉編譯環(huán)境,注釋掉相應代碼行即可。
  3.3.1.4修改Makefile文件
  將代碼行BCC=armv5b-linux-gcc-g-O2改成BCC=gcc-g-O2。另外,ARM-Linux的交叉編譯工具不提供readline與ncures庫,則繼續(xù)修改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文件使其不去檢查交叉編譯環(huán)境,另外,PHP需要版本不低于2.5.10的Libxml支持,但此版本的Libxml庫文件的大小為1.2M字節(jié),在嵌入式系統(tǒng)中使用如此大的文件不太合理,而Libexpat的大小只有0.2M字節(jié),因此使用Libexpat代替Libxml進行比較簡單的XML分析,詳見如下的配置內(nèi)容。
  
  3.3.2.3進入到PHP-Build目錄,使用Configure進行配置,配置的內(nèi)容為:
  ../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執(zhí)行程序與LibPHP.so動態(tài)加載庫。并運行make install安裝頭文件、庫文件、執(zhí)行程序,以及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進行配置,配置的內(nèi)容為
  ../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執(zhí)行程序,并運行make install安裝執(zhí)行程序及配置的各組件庫,如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]魏忠,蔡勇,雷紅衛(wèi).嵌入式開發(fā)詳解.北京:電子工業(yè)出版社,2003.
  [2]李善平,劉文峰,王煥龍等.Linux與嵌入式系統(tǒng).北京:清華大學出版社,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).

主站蜘蛛池模板: 久久久精品无码一二三区| jizz亚洲高清在线观看| 青青久久91| 亚洲无码37.| 成人免费视频一区| 99伊人精品| 人妻少妇久久久久久97人妻| 国产精品吹潮在线观看中文| 国产玖玖视频| 国产精欧美一区二区三区| 久久超级碰| 欧美日本中文| 久久亚洲天堂| a级毛片免费看| 久久永久视频| 一级毛片免费不卡在线| 91精品小视频| 国产一区二区丝袜高跟鞋| 成·人免费午夜无码视频在线观看| 国产亚洲欧美在线中文bt天堂| 亚洲精品国产日韩无码AV永久免费网 | 国产日韩精品欧美一区喷| 免费人成网站在线高清| 91精品最新国内在线播放| 一本色道久久88| 久久这里只精品国产99热8| 热99精品视频| 亚洲综合亚洲国产尤物| 色婷婷在线影院| 精品亚洲国产成人AV| 2022国产无码在线| 成年免费在线观看| 美女啪啪无遮挡| 欧美成人免费一区在线播放| 无码免费试看| 日韩av无码精品专区| 91在线播放国产| 国产成人1024精品| 广东一级毛片| 欧美三级视频在线播放| 免费无码AV片在线观看国产| 欧美在线一级片| 欧美午夜在线视频| 国产精品毛片一区视频播| 亚洲中字无码AV电影在线观看| 亚洲国产精品一区二区第一页免| 欧美色视频网站| 国产办公室秘书无码精品| 福利片91| 国产在线一区视频| 五月天久久综合国产一区二区| 伊人激情久久综合中文字幕| 国产白丝av| 国产福利小视频高清在线观看| 亚洲欧美不卡| 国产高清无码第一十页在线观看| 又粗又大又爽又紧免费视频| 亚洲免费黄色网| 911亚洲精品| 中文字幕亚洲专区第19页| 911亚洲精品| 成年人视频一区二区| 久久综合丝袜长腿丝袜| 亚洲成人网在线播放| 尤物成AV人片在线观看| 天天综合亚洲| 欧美啪啪视频免码| 国产精品主播| 成人va亚洲va欧美天堂| 一本无码在线观看| 午夜国产精品视频| 欧美日韩中文国产| 91麻豆精品视频| 91久草视频| 亚洲高清在线播放| 国产成人亚洲精品无码电影| 自拍偷拍欧美日韩| 精品免费在线视频| 乱码国产乱码精品精在线播放 | 狠狠ⅴ日韩v欧美v天堂| 欧美日韩成人在线观看| 亚洲第一精品福利|